diff --git a/app/src/main/java/org/autojs/autojs/core/pref/Pref.kt b/app/src/main/java/org/autojs/autojs/core/pref/Pref.kt index cb5a29f1..47fa7549 100644 --- a/app/src/main/java/org/autojs/autojs/core/pref/Pref.kt +++ b/app/src/main/java/org/autojs/autojs/core/pref/Pref.kt @@ -146,6 +146,10 @@ object Pref { val isQuickRestartEnabled get() = getString(R.string.key_restart_strategy, key(R.string.default_key_restart_strategy)) == key(R.string.key_restart_strategy_quick) + @JvmStatic + val isScheduledRestartPreferredWorkManager + get() = getString(R.string.key_scheduled_restart_backend, key(R.string.default_key_scheduled_restart_backend)) == key(R.string.key_scheduled_restart_backend_work_manager) + @JvmStatic val isHiddenFilesShown get() = getString(R.string.key_hidden_files, key(R.string.default_key_hidden_files)) == key(R.string.key_hidden_files_show) diff --git a/app/src/main/java/org/autojs/autojs/theme/preference/MaterialListPreference.kt b/app/src/main/java/org/autojs/autojs/theme/preference/MaterialListPreference.kt index d6bdfce8..ea89ef94 100644 --- a/app/src/main/java/org/autojs/autojs/theme/preference/MaterialListPreference.kt +++ b/app/src/main/java/org/autojs/autojs/theme/preference/MaterialListPreference.kt @@ -17,10 +17,11 @@ open class MaterialListPreference : MaterialDialogPreference { private var mItemValues: Collection = emptyList() private var mItemDisables: Array = emptyArray() private var mItemDefaultKey: CharSequence? = null - private val mItemDefaultIndex: Int + + protected val itemDefaultIndex: Int get() = getKeyIndex(mItemDefaultKey) ?: 0 - private var itemPrefIndex: Int? + protected var itemPrefIndex: Int? get() = getKeyIndex(Pref.getStringOrNull(key)) set(index) { index?.let { @@ -31,7 +32,7 @@ open class MaterialListPreference : MaterialDialogPreference { private var mConfirmedPrompt: String? = null protected val entry: CharSequence? - get() = mItemValues.takeIf { it.isNotEmpty() }?.toList()?.get(itemPrefIndex ?: mItemDefaultIndex) + get() = mItemValues.takeIf { it.isNotEmpty() }?.toList()?.get(itemPrefIndex ?: itemDefaultIndex) protected val defaultEntry: CharSequence? get() { @@ -93,7 +94,7 @@ open class MaterialListPreference : MaterialDialogPreference { builder.items(it) builder.choiceWidgetThemeColor() builder.takeIf { mItemDisables.isNotEmpty() }?.itemsDisabledIndices(*mItemDisables) - builder.itemsCallbackSingleChoice(itemPrefIndex ?: mItemDefaultIndex) { d, _, which, _ -> + builder.itemsCallbackSingleChoice(itemPrefIndex ?: itemDefaultIndex) { d, _, which, _ -> if (itemPrefIndex != which) { itemPrefIndex = which showPrompt() ?: onChangeConfirmed(getDialog()) @@ -106,7 +107,7 @@ open class MaterialListPreference : MaterialDialogPreference { builder.options( listOf( MaterialDialog.OptionMenuItemSpec(context.getString(R.string.dialog_button_use_default)) { dialog -> - dialog.selectedIndex = mItemDefaultIndex + dialog.selectedIndex = itemDefaultIndex }, ) ) @@ -118,7 +119,7 @@ open class MaterialListPreference : MaterialDialogPreference { return keyString?.run { mItemKeys.indexOf(this).takeIf { it != -1 } } } - private fun showPrompt() = mConfirmedPrompt?.let { content -> + protected fun showPrompt() = mConfirmedPrompt?.let { content -> NotAskAgainDialog.Builder(prefContext, "prompt_\$_${key}") .title(R.string.text_prompt) .content(content) @@ -131,7 +132,7 @@ open class MaterialListPreference : MaterialDialogPreference { open fun onChangeConfirmed(dialog: MaterialDialog) { notifyChanged() - getDialog().dismiss() + dialog.dismiss() } } \ No newline at end of file diff --git a/app/src/main/java/org/autojs/autojs/ui/edit/TextSizeSettingDialogBuilder.java b/app/src/main/java/org/autojs/autojs/ui/edit/TextSizeSettingDialogBuilder.java index f2d57f15..6ccb56eb 100644 --- a/app/src/main/java/org/autojs/autojs/ui/edit/TextSizeSettingDialogBuilder.java +++ b/app/src/main/java/org/autojs/autojs/ui/edit/TextSizeSettingDialogBuilder.java @@ -5,17 +5,14 @@ import android.view.LayoutInflater; import android.widget.LinearLayout; import android.widget.SeekBar; import android.widget.TextView; - import androidx.annotation.NonNull; - import com.afollestad.materialdialogs.MaterialDialog; - -import org.autojs.autojs.theme.ThemeColorHelper; import org.autojs.autojs6.R; -import org.autojs.autojs6.databinding.DialogTextSizeSettingBinding; +import org.autojs.autojs6.databinding.DialogTextSizeSettingsBinding; /** * Created by Stardust on Feb 24, 2018. + * Modified by SuperMonster003 as of Dec 29, 2025. */ public class TextSizeSettingDialogBuilder extends MaterialDialog.Builder implements SeekBar.OnSeekBarChangeListener { @@ -36,13 +33,13 @@ public class TextSizeSettingDialogBuilder extends MaterialDialog.Builder impleme public TextSizeSettingDialogBuilder(@NonNull Context context) { super(context); - DialogTextSizeSettingBinding binding = DialogTextSizeSettingBinding.inflate(LayoutInflater.from(context)); + DialogTextSizeSettingsBinding binding = DialogTextSizeSettingsBinding.inflate(LayoutInflater.from(context)); - mSeekBar = binding.seekbar; + mSeekBar = binding.seekBar; mPreviewText = binding.previewText; - mMinTextSize = Integer.parseInt(context.getString(R.string.text_text_size_min_value)); - mMaxTextSize = Integer.parseInt(context.getString(R.string.text_text_size_max_value)); + mMinTextSize = context.getResources().getInteger(R.integer.editor_text_size_min_value); + mMaxTextSize = context.getResources().getInteger(R.integer.editor_text_size_max_value); LinearLayout view = binding.getRoot(); customView(view, false); @@ -50,11 +47,15 @@ public class TextSizeSettingDialogBuilder extends MaterialDialog.Builder impleme mSeekBar.setOnSeekBarChangeListener(this); mSeekBar.setMax(mMaxTextSize - mMinTextSize); + + binding.textSizeMinValue.setText(String.valueOf(mMinTextSize)); + binding.textSizeMaxValue.setText(String.valueOf(mMaxTextSize)); + autoDismiss(false); neutralText(R.string.dialog_button_use_default); neutralColorRes(R.color.dialog_button_reset); - onNeutral((dialog, which) -> initialValue(Integer.parseInt(getContext().getString(R.string.text_text_size_default_value)))); + onNeutral((dialog, which) -> initialValue(getContext().getResources().getInteger(R.integer.editor_text_size_default_value))); negativeText(R.string.text_cancel); negativeColorRes(R.color.dialog_button_default); onNegative((dialog, which) -> dialog.dismiss()); diff --git a/app/src/main/java/org/autojs/autojs/ui/edit/editor/CodeEditor.kt b/app/src/main/java/org/autojs/autojs/ui/edit/editor/CodeEditor.kt index 5830d2c7..ee2ccd8f 100644 --- a/app/src/main/java/org/autojs/autojs/ui/edit/editor/CodeEditor.kt +++ b/app/src/main/java/org/autojs/autojs/ui/edit/editor/CodeEditor.kt @@ -128,8 +128,8 @@ class CodeEditor : HVScrollView { return if (s == e) "" else codeEditText.text?.substring(s, e) ?: "" } - private var mMinTextSize = context.getString(R.string.text_text_size_min_value).toInt() - private var mMaxTextSize = context.getString(R.string.text_text_size_max_value).toInt() + private var mMinTextSize = context.resources.getInteger(R.integer.editor_text_size_min_value) + private var mMaxTextSize = context.resources.getInteger(R.integer.editor_text_size_max_value) private var mTextViewRedoUndo = TextViewUndoRedo(codeEditText) private var mTheme: Theme? = null diff --git a/app/src/main/java/org/autojs/autojs/ui/settings/RestartStrategyPreference.kt b/app/src/main/java/org/autojs/autojs/ui/settings/RestartStrategyPreference.kt new file mode 100644 index 00000000..ae244e60 --- /dev/null +++ b/app/src/main/java/org/autojs/autojs/ui/settings/RestartStrategyPreference.kt @@ -0,0 +1,105 @@ +package org.autojs.autojs.ui.settings + +import android.content.Context +import android.util.AttributeSet +import android.view.View +import com.afollestad.materialdialogs.DialogAction +import com.afollestad.materialdialogs.MaterialDialog +import org.autojs.autojs.theme.preference.MaterialListPreference +import org.autojs.autojs6.R + +class RestartStrategyPreference : MaterialListPreference { + + @Suppress("unused") + constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int, defStyleRes: Int) : + super(context, attrs, defStyleAttr, defStyleRes) + + @Suppress("unused") + constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : + super(context, attrs, defStyleAttr, 0) + + @Suppress("unused") + constructor(context: Context, attrs: AttributeSet?) : + super(context, attrs, 0, 0) + + @Suppress("unused") + constructor(context: Context) : + super(context, null, 0, 0) + + @Suppress("unused") + override fun getBuilder(): MaterialDialog.Builder = super.getBuilder().also { builder -> + builder.configureNeutralButton() + builder.itemsCallbackSingleChoice(itemPrefIndex ?: itemDefaultIndex) { d, _, _, _ -> + // @Caution by SuperMonster003 on Dec 29, 2025. + // ! Instance d equals getDialog() return value when the dialog is first shown, + // ! but after the dialog is closed and shown again, their values will be different. + // ! The behavior is that d always keeps the old object reference, + // ! while getDialog() returns a new object each time. + // ! zh-CN: + // ! 实例 d 与 getDialog() 返回值在首次显示对话框时相等, 但对话框关闭后再次显示后, 它们的值将不相同. + // ! 表现为 d 总是保持旧的对象引用, 而 getDialog() 每次返回新对象. + getDialog().configureNeutralButton() + return@itemsCallbackSingleChoice true + } + builder.alwaysCallSingleChoiceCallback() + builder.onPositive { d, _ -> + val which = d.selectedIndex + if (itemPrefIndex != which) { + itemPrefIndex = which + showPrompt() ?: onChangeConfirmed(d) + } else { + d.dismiss() + } + } + builder.options( + listOf( + MaterialDialog.OptionMenuItemSpec(context.getString(R.string.dialog_button_use_default)) { dialog -> + dialog.selectedIndex = itemDefaultIndex + dialog.configureNeutralButton() + }, + ) + ) + } + + private fun MaterialDialog.Builder.configureNeutralButton() { + val builder = this.apply { + neutralColorRes(R.color.dialog_button_advanced_settings) + } + when (entry) { + context.getString(R.string.entry_restart_strategy_scheduled) -> { + builder.neutralText(R.string.dialog_button_advanced_settings) + builder.onNeutral { _, _ -> + ScheduledRestartSettingsDialogBuilder(context).build().show() + } + } + context.getString(R.string.entry_restart_strategy_quick) -> { + builder.neutralText("") + builder.onNeutral { _, _ -> + /* Nothing to do. */ + } + } + } + } + + private fun MaterialDialog.configureNeutralButton() { + val dialog = this + val neutral = dialog.getActionButton(DialogAction.NEUTRAL) + when (dialog.items?.get(dialog.selectedIndex)?.toString()) { + context.getString(R.string.entry_restart_strategy_scheduled) -> { + neutral.text = context.getString(R.string.dialog_button_advanced_settings) + neutral.setOnClickListener { + ScheduledRestartSettingsDialogBuilder(context).build().show() + } + } + context.getString(R.string.entry_restart_strategy_quick) -> { + neutral.text = "" + neutral.setOnClickListener(null) + } + else -> null + }?.let { + neutral.requestLayout() + neutral.invalidate() + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/org/autojs/autojs/ui/settings/ScheduledRestartSettingsDialogBuilder.kt b/app/src/main/java/org/autojs/autojs/ui/settings/ScheduledRestartSettingsDialogBuilder.kt new file mode 100644 index 00000000..ac60beab --- /dev/null +++ b/app/src/main/java/org/autojs/autojs/ui/settings/ScheduledRestartSettingsDialogBuilder.kt @@ -0,0 +1,112 @@ +package org.autojs.autojs.ui.settings + +import android.content.Context +import android.content.DialogInterface +import android.view.LayoutInflater +import android.widget.SeekBar +import android.widget.SeekBar.OnSeekBarChangeListener +import com.afollestad.materialdialogs.MaterialDialog +import org.autojs.autojs.core.pref.Pref +import org.autojs.autojs.theme.widget.ThemeColorRadioButton +import org.autojs.autojs.theme.widget.ThemeColorSeekBar +import org.autojs.autojs.util.StringUtils.key +import org.autojs.autojs6.R +import org.autojs.autojs6.databinding.DialogScheduledRestartSettingsBinding +import kotlin.properties.Delegates + +class ScheduledRestartSettingsDialogBuilder(context: Context) : MaterialDialog.Builder(context), OnSeekBarChangeListener { + + private var _binding: DialogScheduledRestartSettingsBinding? = null + private val binding: DialogScheduledRestartSettingsBinding get() = _binding!! + + private var mScheduledRestartStartDelayTitlePrefix: String + private var mScheduledRestartStartDelayTitle: String + + private var mStartDelayMinValue by Delegates.notNull() + private var mStartDelayMaxValue by Delegates.notNull() + + private var mOptionWorkManager: ThemeColorRadioButton + private var mOptionAlarmManager: ThemeColorRadioButton + + private var mSeekBar: ThemeColorSeekBar + + init { + var initialRestartDelayValue = Pref.getInt(R.string.key_scheduled_restart_delay, context.resources.getInteger(R.integer.scheduled_restart_start_delay_default_value)) + + _binding = DialogScheduledRestartSettingsBinding.inflate(LayoutInflater.from(context)).also { binding -> + mOptionWorkManager = binding.optionWorkManager + mOptionAlarmManager = binding.optionAlarmManager + + when (Pref.getString(R.string.key_scheduled_restart_backend, key(R.string.default_key_scheduled_restart_backend))) { + key(R.string.key_scheduled_restart_backend_alarm_manager) -> { + mOptionAlarmManager.isChecked = true + } + else -> { + mOptionWorkManager.isChecked = true + } + } + + mScheduledRestartStartDelayTitlePrefix = context.getString(R.string.text_scheduled_restart_start_delay) + mScheduledRestartStartDelayTitle = "$mScheduledRestartStartDelayTitlePrefix: ${initialRestartDelayValue}ms" + + mStartDelayMinValue = context.resources.getInteger(R.integer.scheduled_restart_start_delay_min_value).also { + binding.scheduledRestartStartDelayMinValue.text = "$it" + } + mStartDelayMaxValue = context.resources.getInteger(R.integer.scheduled_restart_start_delay_max_value).also { + binding.scheduledRestartStartDelayMaxValue.text = "$it" + } + + mSeekBar = binding.seekBar + } + + mSeekBar.setOnSeekBarChangeListener(this) + mSeekBar.max = (mStartDelayMaxValue - mStartDelayMinValue) / 100 + mSeekBar.progress = (initialRestartDelayValue - mStartDelayMinValue) / 100 + + title(R.string.entry_restart_strategy_scheduled) + customView(binding.root, false) + options(listOf(MaterialDialog.OptionMenuItemSpec(context.getString(R.string.dialog_button_use_default)) { + when (key(R.string.default_key_scheduled_restart_backend)) { + key(R.string.key_scheduled_restart_backend_alarm_manager) -> { + mOptionAlarmManager.isChecked = true + } + else -> { + mOptionWorkManager.isChecked = true + } + } + mSeekBar.progress = (context.resources.getInteger(R.integer.scheduled_restart_start_delay_default_value) - mStartDelayMinValue) / 100 + })) + autoDismiss(false) + negativeText(R.string.dialog_button_cancel) + negativeColorRes(R.color.dialog_button_default) + onNegative { d, _ -> d.dismiss() } + positiveText(R.string.dialog_button_confirm) + positiveColorRes(R.color.dialog_button_attraction) + onPositive { d, _ -> + when { + mOptionWorkManager.isChecked -> Pref.putString(R.string.key_scheduled_restart_backend, key(R.string.key_scheduled_restart_backend_work_manager)) + mOptionAlarmManager.isChecked -> Pref.putString(R.string.key_scheduled_restart_backend, key(R.string.key_scheduled_restart_backend_alarm_manager)) + } + Pref.putInt(R.string.key_scheduled_restart_delay, mStartDelayMinValue + mSeekBar.progress * 100) + d.dismiss() + } + } + + override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) { + binding.scheduledRestartStartDelayTitle.text = "$mScheduledRestartStartDelayTitlePrefix: ${mStartDelayMinValue + progress * 100}ms" + } + + override fun onStartTrackingTouch(seekBar: SeekBar) { + /* Ignored. */ + } + + override fun onStopTrackingTouch(seekBar: SeekBar) { + /* Ignored. */ + } + + override fun dismissListener(listener: DialogInterface.OnDismissListener): MaterialDialog.Builder? { + _binding = null + return super.dismissListener(listener) + } + +} \ No newline at end of file diff --git a/app/src/main/java/org/autojs/autojs/util/IntentUtils.kt b/app/src/main/java/org/autojs/autojs/util/IntentUtils.kt index 4da64ffe..fde7ea54 100644 --- a/app/src/main/java/org/autojs/autojs/util/IntentUtils.kt +++ b/app/src/main/java/org/autojs/autojs/util/IntentUtils.kt @@ -369,34 +369,52 @@ object IntentUtils { } private fun scheduleAppLaunch(context: Context, launchIntent: Intent) { - val delay = TimeUnit.MILLISECONDS.toMillis(300) - val triggerAtMillis = SystemClock.elapsedRealtime() + delay - runCatching tryWithAlarmManager@{ - val pendingIntent = PendingIntent.getActivity( - /* context = */ context, - /* requestCode = */ UNIQUE_REQUEST_CODE, - /* intent = */ launchIntent, - /* flags = */ PendingIntent.FLAG_CANCEL_CURRENT or PendingIntent.FLAG_IMMUTABLE, - ) - val am = context.getSystemService(ALARM_SERVICE) as AlarmManager - am.cancel(pendingIntent) - am.setExactAndAllowWhileIdle( - /* type = */ AlarmManager.ELAPSED_REALTIME, - /* triggerAtMillis = */ triggerAtMillis, - /* operation = */ pendingIntent, - ) - }.onFailure tryWithWorkManager@{ - it.printStackTrace() - val request = OneTimeWorkRequestBuilder() - .setInitialDelay(delay, TimeUnit.MILLISECONDS) - .setConstraints(Constraints.NONE) - .build() - WorkManager.getInstance(context).enqueueUniqueWork( - uniqueWorkName = "work-task-restart-autojs6", - existingWorkPolicy = ExistingWorkPolicy.REPLACE, - request = request, - ) + val delay = Pref.getInt(R.string.key_scheduled_restart_delay, context.resources.getInteger(R.integer.scheduled_restart_start_delay_default_value)).let { + TimeUnit.MILLISECONDS.toMillis(it.toLong()) } + val triggerAtMillis = SystemClock.elapsedRealtime() + delay + when (Pref.isScheduledRestartPreferredWorkManager) { + true -> runCatching { + scheduleRestartWorker(delay, context) + }.onFailure { + it.printStackTrace() + scheduleRestartAlarm(context, launchIntent, triggerAtMillis) + } + else -> runCatching { + scheduleRestartAlarm(context, launchIntent, triggerAtMillis) + }.onFailure { + it.printStackTrace() + scheduleRestartWorker(delay, context) + } + } + } + + private fun scheduleRestartWorker(delay: Long, context: Context) { + val request = OneTimeWorkRequestBuilder() + .setInitialDelay(delay, TimeUnit.MILLISECONDS) + .setConstraints(Constraints.NONE) + .build() + WorkManager.getInstance(context).enqueueUniqueWork( + uniqueWorkName = "work-task-restart-autojs6", + existingWorkPolicy = ExistingWorkPolicy.REPLACE, + request = request, + ) + } + + private fun scheduleRestartAlarm(context: Context, launchIntent: Intent, triggerAtMillis: Long) { + val pendingIntent = PendingIntent.getActivity( + /* context = */ context, + /* requestCode = */ UNIQUE_REQUEST_CODE, + /* intent = */ launchIntent, + /* flags = */ PendingIntent.FLAG_CANCEL_CURRENT or PendingIntent.FLAG_IMMUTABLE, + ) + val am = context.getSystemService(ALARM_SERVICE) as AlarmManager + am.cancel(pendingIntent) + am.setExactAndAllowWhileIdle( + /* type = */ AlarmManager.ELAPSED_REALTIME, + /* triggerAtMillis = */ triggerAtMillis, + /* operation = */ pendingIntent, + ) } @JvmStatic diff --git a/app/src/main/res/layout/dialog_scheduled_restart_settings.xml b/app/src/main/res/layout/dialog_scheduled_restart_settings.xml new file mode 100644 index 00000000..18dc8e6a --- /dev/null +++ b/app/src/main/res/layout/dialog_scheduled_restart_settings.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_text_size_setting.xml b/app/src/main/res/layout/dialog_text_size_setting.xml deleted file mode 100644 index a68f105c..00000000 --- a/app/src/main/res/layout/dialog_text_size_setting.xml +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/dialog_text_size_settings.xml b/app/src/main/res/layout/dialog_text_size_settings.xml new file mode 100644 index 00000000..a41ce898 --- /dev/null +++ b/app/src/main/res/layout/dialog_text_size_settings.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values-ar/strings.xml b/app/src/main/res/values-ar/strings.xml index cf2497e6..4d12c027 100644 --- a/app/src/main/res/values-ar/strings.xml +++ b/app/src/main/res/values-ar/strings.xml @@ -58,7 +58,6 @@ زر عائم لعرض المحتوي الفعلي فشل في تحديد مؤشر عنصر لون الثيم فشل في تحديد موقع مكتبة الألوان للثيم - فشل في استرداد معلومات الإصدار للغة المعروضة حالياً، يُرجى المحاولة مرة أخرى لاحقاً.\n\nسيتم حالياً عرض معلومات الإصدار بلغة \"简体中文 (zh-Hans)\" مؤقتاً. سيتم إطلاق صفحة ويب للإبلاغ عن مشكلة.\nقد تكون هناك حاجة إلى حساب GitHub. اختر طريقة إخراج للنصوص المعاد تصميمها نسخ سجل الأخطاء أو الخروج مباشرة @@ -207,7 +206,6 @@ فشل إنشاء المثيل \"%s\" فشل في عرض المحتوى - فشل في استرداد معلومات الإصدار تعذّر جلب سجل الإصدارات تعذّر جلب ملف version.properties لتحليل معلومات الإصدار فشل في إلغاء وصول Shizuku @@ -676,7 +674,6 @@ يولد إنشاء التعليمات البرمجية رمز تم إنشاؤه - استرداد ملاحظات الإصدار ... تم استخدام عنوان URL للنسخ الاحتياطي إعدادات عامة اذهب للاعدادات\" @@ -943,7 +940,6 @@ يسجل نجح السجل التسجيل - ملاحظات الإصدار التحكم عن بعد تم حفظ الملف البعيد في وحدة التخزين المحلية بنجاح تم حفظ المشروع البعيد في وحدة التخزين المحلية بنجاح @@ -1131,5 +1127,17 @@ يجب أن يكون رقم إصدار AutoJs6 المحدد أكبر من 461 يجب ألا يكون رقم إصدار AutoJs6 أقل من %1$s يجب ألا يكون إصدار AutoJs6 أقل من %1$s + عرض التحديث + تعذّر جلب سجل التغييرات للغة المعروضة حاليًا. يمكنك إعادة المحاولة لاحقًا.\n\nسيتم عرض ملاحظات الإصدار باللغة \"الصينية المبسطة (zh-Hans)\" مؤقتًا. + تعذّر جلب سجل التغييرات + تعذّر جلب ملاحظات الإصدار + سجل التغييرات + ملاحظات الإصدار + جارٍ جلب سجل التغييرات... + جارٍ جلب ملاحظات الإصدار... + @string/dialog_button_download_with_browser + Backend + Start delay + Advanced diff --git a/app/src/main/res/values-en/strings.xml b/app/src/main/res/values-en/strings.xml index 6cf72693..b5226812 100644 --- a/app/src/main/res/values-en/strings.xml +++ b/app/src/main/res/values-en/strings.xml @@ -53,7 +53,6 @@ A Floating Action Button widget for displaying the manifest Failed to determine the index of the theme color item Failed to locate the color library for the theme color - Failed to retrieve the release notes for the currently displayed language. Please try again later.\n\nCurrently, the release notes for \"简体中文 (zh-Hans)\" are temporarily displayed. A web page will be launched to report an issue.\nAn account for GitHub may be needed. Select a way of output for recorded script Copy debugging log or exit directly @@ -202,7 +201,6 @@ Failed to instantiate "%s" Failed to render content - Failed to retrieve release notes Failed to retrieve version histories Failed to retrieve version.properties to parse version information Failed to revoke Shizuku access @@ -671,7 +669,6 @@ Generate Generate code Generated code - Retrieving release notes... Backup URL has been used Global settings Go to \"Settings\" @@ -938,7 +935,6 @@ Register Register succeeded Registering - Release notes remote Remote file saved to local storage successfully Remote project saved to local storage successfully @@ -1126,5 +1122,17 @@ Specified AutoJs6 version number must be greater than 461 AutoJs6 version number must not be lower than %1$s AutoJs6 version must not be lower than %1$s + View update + Failed to retrieve the changelog for the currently displayed language. You can try again later.\n\nFor now, the release notes for \"Simplified Chinese (zh-Hans)\" will be shown temporarily. + Failed to retrieve changelog + Failed to retrieve release notes + Changelog + Release notes + Retrieving changelog... + Retrieving release notes... + @string/dialog_button_download_with_browser + Backend + Start delay + Advanced diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 2b825327..0bc8bafa 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -56,7 +56,6 @@ 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 - No se pudo obtener la información de la versión correspondiente al idioma actual, puede intentarlo más tarde.\n\nActualmente se mostrará temporalmente la información de la versión en \"简体中文 (zh-Hans)\". 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 @@ -205,7 +204,6 @@ Error al instanciar \"%s\" Error al renderizar el contenido - No se pudo obtener la información de la versión No se pudo obtener el historial de versiones No se pudo obtener version.properties para analizar la información de la versión Fallo en la revocación de permisos Shizuku @@ -674,7 +672,6 @@ Generar Generar código Código generado - Recuperando las notas de la versión... Se ha utilizado la URL de copia de seguridad Ajustes globales Ir a \"Configuración\" @@ -941,7 +938,6 @@ Registro El registro se ha realizado con éxito Registro de - Notas de publicación remoto El archivo remoto se ha guardado correctamente en el almacenamiento local El proyecto remoto se ha guardado correctamente en el almacenamiento local @@ -1129,5 +1125,17 @@ El número de versión especificado de AutoJs6 debe ser mayor que 461 El número de versión de AutoJs6 no debe ser inferior a %1$s La versión de AutoJs6 no debe ser inferior a %1$s + Ver actualización + No se pudo obtener el registro de cambios correspondiente al idioma mostrado actualmente. Puedes intentarlo de nuevo más tarde.\n\nPor ahora se mostrarán temporalmente las notas de la versión en \"chino simplificado (zh-Hans)\". + No se pudo obtener el registro de cambios + No se pudieron obtener las notas de la versión + Registro de cambios + Notas de la versión + Obteniendo el registro de cambios... + Obteniendo las notas de la versión... + @string/dialog_button_download_with_browser + Backend + Start delay + Advanced diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index f253d51f..5add513b 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -56,7 +56,6 @@ 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 - Échec de la récupération des informations de version correspondant à la langue actuellement affichée, veuillez réessayer ultérieurement.\n\nPour l\'instant, les informations de version en \"简体中文 (zh-Hans)\" seront affichées temporairement. 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. @@ -205,7 +204,6 @@ Échec de l\'instanciation de \"%s\" Impossible d\'afficher le contenu - Échec de la récupération des informations de version Impossible de récupérer l\'historique des versions Impossible de récupérer version.properties pour analyser les informations de version La révocation des droits de Shizuku a échoué @@ -674,7 +672,6 @@ Générer Générer un code Code généré - Retrouver les release notes... L\'URL de sauvegarde a été utilisée Paramètres globaux Aller à \"Settings\" @@ -941,7 +938,6 @@ Register Enregistrement réussi Register - Release notes à distance Fichier distant enregistré avec succès dans la mémoire locale Projet distant sauvegardé avec succès dans le stockage local @@ -1129,5 +1125,17 @@ Le numéro de version AutoJs6 spécifié doit être supérieur à 461 Le numéro de version d\'AutoJs6 ne doit pas être inférieur à %1$s La version d\'AutoJs6 ne doit pas être inférieure à %1$s + Voir la mise à jour + Impossible de récupérer le journal des modifications pour la langue actuellement affichée. Vous pouvez réessayer plus tard.\n\nLes notes de version en \"chinois simplifié (zh-Hans)\" seront affichées temporairement. + Échec de la récupération du journal des modifications + Échec de la récupération des notes de version + Journal des modifications + Notes de version + Récupération du journal des modifications... + Récupération des notes de version... + @string/dialog_button_download_with_browser + Backend + Start delay + Advanced diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index 1ba019dd..979b8bd6 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -57,7 +57,6 @@ マニフェストを表示するためのフローティング操作ボタン部品 テーマカラーアイテムのインデックスを特定できません テーマカラーのカラーパレットが見つかりません - 現在表示中の言語に対応するバージョン情報の取得に失敗しました. しばらくしてから再度お試しください.\n\n現在, 一時的に \"简体中文 (zh-Hans)\" のバージョン情報を表示しています. 問題を報告するためのウェブページが起動します.\nGitHub のアカウントが必要な場合があります 回収したスクリプトの出力方法を選択する デバッグログをコピーするか, 直接終了する @@ -206,7 +205,6 @@ \"%s\" のインスタンス化に失敗しました コンテンツの表示に失敗しました - バージョン情報の取得に失敗しました バージョン履歴を取得できません version.properties を取得できず, バージョン情報を解析できません Shizuku 権限の取り消しに失敗しました @@ -675,7 +673,6 @@ 生成 生成されるコード 生成されたコード - リリースノートの取得中... バックアップ URL を使用しました グローバル設定 \"設定\" に進む @@ -942,7 +939,6 @@ 登録 登録に成功した 登録中 - リリースノート リモート リモート・ファイルがローカル・ストレージに正常に保存された リモートプロジェクトがローカルストレージに正常に保存された @@ -1130,5 +1126,17 @@ 指定された AutoJs6 のバージョン番号は 461 より大きくなければなりません AutoJs6 のバージョン番号は %1$s 未満であってはなりません AutoJs6 のバージョンは %1$s 未満であってはなりません + 更新を表示 + 現在表示している言語に対応する更新ログの取得に失敗しました. しばらくしてからもう一度お試しください. \n\n現在は一時的に \"簡体字中国語 (zh-Hans)\" のリリースノートを表示します. + 更新ログの取得に失敗しました + リリースノートの取得に失敗しました + 更新ログ + リリースノート + 更新ログを取得しています... + リリースノートを取得しています... + @string/dialog_button_download_with_browser + Backend + Start delay + Advanced diff --git a/app/src/main/res/values-ko/strings.xml b/app/src/main/res/values-ko/strings.xml index 6cf0cb56..10dfc2e8 100644 --- a/app/src/main/res/values-ko/strings.xml +++ b/app/src/main/res/values-ko/strings.xml @@ -58,7 +58,6 @@ 매니페스트를 표시하기 위한 플로팅 액션 버튼 위젯 테마 색상 아이템의 인덱스를 확인할 수 없습니다 테마 색상에 대한 색상 라이브러리를 찾을 수 없습니다 - 현재 표시 언어에 해당하는 버전 정보를 가져오지 못했습니다. 나중에 다시 시도해 주세요.\n\n현재 임시로 \"简体中文 (zh-Hans)\" 언어의 버전 정보가 표시되고 있습니다. 문제를보고하기 위해 웹 페이지가 시작됩니다.\nGitHub 에 대한 계정이 필요할 수 있습니다. 재설계된 스크립트의 출력 방법 선택 디버깅 로그를 복사하거나 직접 종료하십시오 @@ -207,7 +206,6 @@ \"%s\" 인스턴스 생성에 실패했습니다 콘텐츠 렌더링에 실패했습니다 - 버전 정보를 가져오지 못했습니다 버전 기록을 가져올 수 없습니다 version.properties 를 가져올 수 없어 버전 정보를 분석할 수 없습니다 Shizuku 권한 해지에 실패했습니다 @@ -676,7 +674,6 @@ 생성하다 코드를 생성합니다 생성 된 코드 - 릴리스 노트 검색 ... 백업 URL 이 사용되었습니다 전역 설정 설정으로 바로 가기\" @@ -943,7 +940,6 @@ 등록하다 등록이 성공했습니다 등록 - 릴리즈 노트 원격 원격 파일이 로컬 저장소에 성공적으로 저장됨 원격 프로젝트가 로컬 저장소에 성공적으로 저장되었습니다 @@ -1131,5 +1127,17 @@ 지정된 AutoJs6 버전 번호는 461보다 커야 합니다 AutoJs6 버전 번호는 %1$s보다 낮아서는 안 됩니다 AutoJs6 버전은 %1$s보다 낮아서는 안 됩니다 + 업데이트 보기 + 현재 표시 언어에 해당하는 변경 로그를 가져오지 못했습니다. 잠시 후 다시 시도해 주세요.\n\n현재는 임시로 \"중국어 간체 (zh-Hans)\" 릴리스 노트를 표시합니다. + 변경 로그를 가져오지 못했습니다 + 릴리스 노트를 가져오지 못했습니다 + 변경 로그 + 릴리스 노트 + 변경 로그를 가져오는 중... + 릴리스 노트를 가져오는 중... + @string/dialog_button_download_with_browser + Backend + Start delay + Advanced diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml index a15df18b..08d6fedf 100644 --- a/app/src/main/res/values-night/colors.xml +++ b/app/src/main/res/values-night/colors.xml @@ -27,6 +27,7 @@ @color/md_lime_500 + @color/md_blue_gray_300 #03A9F4 #E57373 #F57C00 diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index de8912ad..39b209fd 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -56,7 +56,6 @@ Плавающая кнопка действий для отображения манифеста Не удалось определить индекс элемента цвета темы Не удалось найти цветовую библиотеку для темы - Не удалось получить информацию о версии для текущего выбранного языка, повторите попытку позже.\n\nВ данный момент временно отображается информация о версии для языка \"简体中文 (zh-Hans)\". Для сообщения о проблеме будет открыта веб-страница.\nМожет потребоваться учетная запись на GitHub. Выберите способ вывода для переработанных сценариев Скопируйте журнал отладки или выйдите напрямую @@ -205,7 +204,6 @@ Ошибка создания экземпляра \"%s\" Не удалось отобразить содержимое - Не удалось получить информацию о версии Не удалось получить историю версий Не удалось получить файл version.properties для анализа информации о версии Не удалось отозвать права на Shizuku @@ -674,7 +672,6 @@ Сгенерировать Сгенерировать код Сгенерированный код - Извлечение заметок о выпуске... Использован URL-адрес резервной копии Глобальные настройки Перейдите в \"Настройки\" @@ -941,7 +938,6 @@ Регистрировать Регистрация прошла успешно Регистрация - Примечания к выпуску удаленный Удаленный файл успешно сохранен в локальном хранилище Удаленный проект успешно сохранен в локальном хранилище @@ -1129,5 +1125,17 @@ Указанный номер версии AutoJs6 должен быть больше 461 Номер версии AutoJs6 не должен быть ниже %1$s Версия AutoJs6 не должна быть ниже %1$s + Просмотреть обновление + Не удалось получить список изменений для текущего отображаемого языка. Попробуйте снова позже.\n\nПока что временно будут показаны примечания к выпуску на \"упрощённом китайском (zh-Hans)\". + Не удалось получить список изменений + Не удалось получить примечания к выпуску + Список изменений + Примечания к выпуску + Получение списка изменений... + Получение примечаний к выпуску... + @string/dialog_button_download_with_browser + Backend + Start delay + Advanced diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 4611e840..955f5150 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -55,7 +55,6 @@ 用於顯示清單內容的浮動操作按鈕控件 無法確定主題色條目的索引值 無法定位主題色所在顏色庫 - 獲取當前顯示語言對應的版本信息失敗, 可稍後再次嘗試.\n\n目前將臨時顯示 \"简体中文 (zh-Hans)\" 語言的版本信息. 即將跳轉到項目議題反饋 WEB 頁面.\n可能需要 GitHub 賬户以完成問題反饋. 選擇一個已錄製腳本的輸出方式 可複製調試信息到剪貼板或直接退出應用 @@ -203,7 +202,6 @@ 實例 \"%s\" 創建失敗 內容渲染失敗 - 獲取版本信息失敗 獲取版本歷史失敗 獲取 version.properties 失敗, 無法解析版本信息 Shizuku 權限撤銷失敗 @@ -672,7 +670,6 @@ 生成 生成代碼 已生成代碼 - 正在獲取版本信息... 備用 URL 已使用 全局設置 打開 \"設置\" @@ -939,7 +936,6 @@ 註冊 註冊成功 註冊中 - 更新日誌 遠程 遠程文件已保存至本地 遠程項目已保存至本地 @@ -1127,5 +1123,17 @@ 指定的 AutoJs6 應用版本號需大於 461 AutoJs6 應用版本號需不低於 %1$s AutoJs6 應用版本需不低於 %1$s + 查看更新 + 獲取當前顯示語言對應的更新日誌失敗, 可稍後再次嘗試.\n\n目前將臨時顯示 \"簡體中文 (zh-Hans)\" 語言的發行説明. + 獲取更新日誌失敗 + 獲取發行説明失敗 + 更新日誌 + 發行説明 + 正在獲取更新日誌... + 正在獲取發行説明... + 瀏覽器查看 + Backend + Start delay + Advanced diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index b7e423d8..1e7ef161 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -55,7 +55,6 @@ 用於顯示清單內容的浮動操作按鈕控制元件 無法確定主題色條目的索引值 無法定位主題色所在顏色庫 - 獲取當前顯示語言對應的版本資訊失敗, 可稍後再次嘗試.\n\n目前將臨時顯示 \"简体中文 (zh-Hans)\" 語言的版本資訊. 即將跳轉到專案議題反饋 WEB 頁面.\n可能需要 GitHub 賬戶以完成問題反饋. 選擇一個已錄製指令碼的輸出方式 可複製除錯資訊到剪貼簿或直接退出應用 @@ -203,7 +202,6 @@ 例項 \"%s\" 建立失敗 內容渲染失敗 - 獲取版本資訊失敗 獲取版本歷史失敗 獲取 version.properties 失敗, 無法解析版本資訊 Shizuku 許可權撤銷失敗 @@ -672,7 +670,6 @@ 生成 生成程式碼 已生成程式碼 - 正在獲取版本資訊... 備用 URL 已使用 全域性設定 開啟 \"設定\" @@ -939,7 +936,6 @@ 註冊 註冊成功 註冊中 - 更新日誌 遠端 遠端檔案已儲存至本地 遠端專案已儲存至本地 @@ -1127,5 +1123,17 @@ 指定的 AutoJs6 應用版本號需大於 461 AutoJs6 應用版本號需不低於 %1$s AutoJs6 應用版本需不低於 %1$s + 檢視更新 + 獲取當前顯示語言對應的更新日誌失敗, 可稍後再次嘗試.\n\n目前將臨時顯示 \"簡體中文 (zh-Hans)\" 語言的發行說明. + 獲取更新日誌失敗 + 獲取發行說明失敗 + 更新日誌 + 發行說明 + 正在獲取更新日誌... + 正在獲取發行說明... + 瀏覽器檢視 + Backend + Start delay + Advanced diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index 86a7f5fd..c64c735b 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -54,7 +54,6 @@ 用于显示清单内容的浮动操作按钮控件 无法确定主题色条目的索引值 无法定位主题色所在颜色库 - 获取当前显示语言对应的版本信息失败, 可稍后再次尝试.\n\n目前将临时显示 \"简体中文 (zh-Hans)\" 语言的版本信息. 即将跳转到项目议题反馈 WEB 页面.\n可能需要 GitHub 账户以完成问题反馈. 选择一个已录制脚本的输出方式 可复制调试信息到剪贴板或直接退出应用 @@ -203,7 +202,6 @@ 实例 \"%s\" 创建失败 内容渲染失败 - 获取版本信息失败 获取版本历史失败 获取 version.properties 失败, 无法解析版本信息 Shizuku 权限撤销失败 @@ -672,7 +670,6 @@ 生成 生成代码 已生成代码 - 正在获取版本信息... 备用 URL 已使用 全局设置 打开 \"设置\" @@ -939,7 +936,6 @@ 注册 注册成功 注册中 - 更新日志 远程 远程文件已保存至本地 远程项目已保存至本地 @@ -1127,5 +1123,17 @@ 指定的 AutoJs6 应用版本号需大于 461 AutoJs6 应用版本号需不低于 %1$s AutoJs6 应用版本需不低于 %1$s + 查看更新 + 获取当前显示语言对应的更新日志失败, 可稍后再次尝试.\n\n目前将临时显示 \"简体中文 (zh-Hans)\" 语言的发行说明. + 获取更新日志失败 + 获取发行说明失败 + 更新日志 + 发行说明 + 正在获取更新日志... + 正在获取发行说明... + 浏览器查看 + 调度引擎 + 启动延迟 + 高级设置 diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 087047bd..d002f240 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -79,6 +79,7 @@ @color/md_teal_500 @color/md_orange_500 + @color/md_blue_gray_800 #7B1FA2 #FF3D00 #03A9F4 diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 816c8925..47df12eb 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -50,8 +50,6 @@ 518dp 64dp 25dp - 2 - 2 diff --git a/app/src/main/res/values/integers.xml b/app/src/main/res/values/integers.xml index f61763ec..dbde0765 100644 --- a/app/src/main/res/values/integers.xml +++ b/app/src/main/res/values/integers.xml @@ -24,6 +24,17 @@ 100 250 + 2 + 2 + + 4 + 96 + 14 + + 0 + 3000 + 300 + 1 1 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ed7805db..7e6d4819 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -32,6 +32,7 @@ @string/key_restart_strategy_quick @string/key_root_mode_auto_detect @string/key_root_record_out_file_type_binary + @string/key_scheduled_restart_backend_work_manager @string/key_timed_task_backend_alarm main.js SuperMonster003 @@ -144,6 +145,10 @@ key_$_restart_strategy key_$_restart_strategy_quick key_$_restart_strategy_scheduled + key_$_scheduled_restart_backend + key_$_scheduled_restart_backend_alarm_manager + key_$_scheduled_restart_backend_work_manager + key_$_scheduled_restart_delay key_$_rhino_java_primitive_wrap key_$_root_mode key_$_root_mode_auto_detect @@ -243,9 +248,6 @@ AutoJs6:\n&url_github_autojs6; Should never happen %s: %s - 14 - 96 - 4 http://download.autojs6.com &url_github_autojs6; &url_github_autojs6;/issues @@ -306,7 +308,6 @@ A Floating Action Button widget for displaying the manifest Failed to determine the index of the theme color item Failed to locate the color library for the theme color - Failed to retrieve the release notes for the currently displayed language. Please try again later.\n\nCurrently, the release notes for \"简体中文 (zh-Hans)\" are temporarily displayed. A web page will be launched to report an issue.\nAn account for GitHub may be needed. Select a way of output for recorded script Copy debugging log or exit directly @@ -458,7 +459,6 @@ Failed to instantiate "%s" Failed to render content - Failed to retrieve release notes Failed to retrieve version histories Failed to retrieve version.properties to parse version information Failed to revoke Shizuku access @@ -927,7 +927,6 @@ Generate Generate code Generated code - Retrieving release notes... Backup URL has been used Global settings Go to \"Settings\" @@ -1194,7 +1193,6 @@ Register Register succeeded Registering - Release notes remote Remote file saved to local storage successfully Remote project saved to local storage successfully @@ -1382,5 +1380,17 @@ Specified AutoJs6 version number must be greater than 461 AutoJs6 version number must not be lower than %1$s AutoJs6 version must not be lower than %1$s + View update + Failed to retrieve the changelog for the currently displayed language. You can try again later.\n\nFor now, the release notes for \"Simplified Chinese (zh-Hans)\" will be shown temporarily. + Failed to retrieve changelog + Failed to retrieve release notes + Changelog + Release notes + Retrieving changelog... + Retrieving release notes... + @string/dialog_button_download_with_browser + Backend + Start delay + Advanced diff --git a/app/src/main/res/xml/fragment_preferences.xml b/app/src/main/res/xml/fragment_preferences.xml index dbfcf293..a0c9296e 100644 --- a/app/src/main/res/xml/fragment_preferences.xml +++ b/app/src/main/res/xml/fragment_preferences.xml @@ -60,7 +60,7 @@ app:longClickPrompt="@string/description_documentation_source_preference" app:longClickPromptMore="@string/description_documentation_source_preference_more" /> -