diff --git a/.changelog/lang_zh-Hans.json b/.changelog/lang_zh-Hans.json index 6270e17a..b28abea5 100644 --- a/.changelog/lang_zh-Hans.json +++ b/.changelog/lang_zh-Hans.json @@ -21,6 +21,7 @@ "improvement": [ "关于应用与开发者页面增加水平布局及小屏布局适配", "打包单文件时自动读取并勾选已安装应用的声明权限 _[`issue #362`](http://issues.autojs6.com/362)_", + "已忽略更新记录及客户端模式连接地址记录支持清空操作", "版本更新信息支持多语言显示 (与当前显示语言同步)", "使用异步加载方式一定程度提升文件管理器列表滑动流畅性" ], diff --git a/app/src/main/java/org/autojs/autojs/app/DialogUtils.kt b/app/src/main/java/org/autojs/autojs/app/DialogUtils.kt index e43d93fc..34137583 100644 --- a/app/src/main/java/org/autojs/autojs/app/DialogUtils.kt +++ b/app/src/main/java/org/autojs/autojs/app/DialogUtils.kt @@ -12,6 +12,7 @@ import android.view.View import android.view.WindowManager import android.widget.CheckBox import androidx.preference.PreferenceViewHolder +import com.afollestad.materialdialogs.DialogAction import com.afollestad.materialdialogs.MaterialDialog import org.autojs.autojs.theme.preference.LongClickablePreferenceLike import org.autojs.autojs.ui.explorer.ExplorerView @@ -30,12 +31,11 @@ object DialogUtils { val context = dialog.context if (!isActivityContext(context)) { val window = dialog.window - val type = when (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - true -> WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY - else -> { - @Suppress("DEPRECATION") - WindowManager.LayoutParams.TYPE_PHONE - } + val type = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY + } else { + @Suppress("DEPRECATION") + WindowManager.LayoutParams.TYPE_PHONE } window?.setType(type) } @@ -64,6 +64,10 @@ object DialogUtils { } } + fun toggleActionButtonAbilityByItems(dialog: MaterialDialog, actionButton: DialogAction) { + dialog.getActionButton(actionButton)?.isEnabled = !dialog.items.isNullOrEmpty() + } + @JvmStatic fun adaptToExplorer(dialog: MaterialDialog, explorerView: ExplorerView): MaterialDialog { val time = object : Any() { diff --git a/app/src/main/java/org/autojs/autojs/app/tool/JsonSocketClientTool.kt b/app/src/main/java/org/autojs/autojs/app/tool/JsonSocketClientTool.kt index f4a61f48..5e123514 100644 --- a/app/src/main/java/org/autojs/autojs/app/tool/JsonSocketClientTool.kt +++ b/app/src/main/java/org/autojs/autojs/app/tool/JsonSocketClientTool.kt @@ -4,9 +4,11 @@ import android.annotation.SuppressLint import android.content.Context import android.text.InputFilter import android.view.KeyEvent +import com.afollestad.materialdialogs.DialogAction import com.afollestad.materialdialogs.MaterialDialog import org.autojs.autojs.app.DialogUtils import org.autojs.autojs.core.pref.Pref +import org.autojs.autojs.extension.MaterialDialogExtensions.widgetThemeColor import org.autojs.autojs.pluginclient.JsonSocketClient import org.autojs.autojs.ui.main.drawer.DrawerMenuDisposableItem import org.autojs.autojs.util.Observers @@ -98,20 +100,47 @@ class JsonSocketClientTool(context: Context) : AbstractJsonSocketTool(context) { it.remove(text) dHistories.notifyItemsChanged() DialogUtils.toggleContentViewByItems(dHistories) + DialogUtils.toggleActionButtonAbilityByItems(dHistories, DialogAction.NEUTRAL) } } .show() } } - .negativeText(R.string.dialog_button_cancel) - .negativeColorRes(R.color.dialog_button_default) - .onNegative { dHistories, _ -> dHistories.dismiss() } + .neutralText(R.string.dialog_button_clear_items) + .neutralColorRes(R.color.dialog_button_warn) + .onNeutral { dHistories, _ -> + MaterialDialog.Builder(context) + .title(R.string.text_prompt) + .content(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 { _, _ -> + JsonSocketClient.clearAllHistories() + dHistories.items?.let { + it.clear() + dHistories.notifyItemsChanged() + DialogUtils.toggleContentViewByItems(dHistories) + DialogUtils.toggleActionButtonAbilityByItems(dHistories, DialogAction.NEUTRAL) + } + ViewUtils.showSnack(dHistories.view, R.string.text_all_histories_cleared) + } + .show() + } + .positiveText(R.string.dialog_button_back) + .positiveColorRes(R.color.dialog_button_default) + .onPositive { dHistories, _ -> dHistories.dismiss() } .autoDismiss(false) .show() - .also { DialogUtils.toggleContentViewByItems(it) } + .also { + DialogUtils.toggleContentViewByItems(it) + DialogUtils.toggleActionButtonAbilityByItems(it, DialogAction.NEUTRAL) + } } .negativeText(R.string.text_cancel) .onNegative { dialog, _ -> dialog.dismiss() } + .positiveText(R.string.dialog_button_confirm) .autoDismiss(false) .dismissListener(onConnectionDialogDismissed) .show() 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 c12b1d9a..b1fcdeb2 100644 --- a/app/src/main/java/org/autojs/autojs/util/UpdateUtils.kt +++ b/app/src/main/java/org/autojs/autojs/util/UpdateUtils.kt @@ -4,6 +4,7 @@ import android.content.Context import android.content.Intent import androidx.appcompat.app.AppCompatActivity import androidx.core.net.toUri +import com.afollestad.materialdialogs.DialogAction import com.afollestad.materialdialogs.MaterialDialog import org.autojs.autojs.app.DialogUtils import org.autojs.autojs.core.pref.Pref @@ -85,16 +86,42 @@ object UpdateUtils { .onNeutral { dVersionInfo, _ -> showRemoveIgnoredVersionPrompt(context, dialog, dVersionInfo, text) } - .positiveText(R.string.dialog_button_cancel) + .positiveText(R.string.dialog_button_back) .onPositive { dVersionInfo, _ -> dVersionInfo.dismiss() } .autoDismiss(false) .show() } + .neutralText(R.string.dialog_button_clear_items) + .neutralColorRes(R.color.dialog_button_warn) + .onNeutral { dialogParent, _ -> + MaterialDialog.Builder(context) + .title(R.string.text_prompt) + .content(R.string.text_confirm_to_clear_all_items) + .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 { _, _ -> + clearIgnoredVersions() + dialogParent.items?.let { + it.clear() + dialogParent.notifyItemsChanged() + DialogUtils.toggleContentViewByItems(dialogParent) + DialogUtils.toggleActionButtonAbilityByItems(dialogParent, DialogAction.NEUTRAL) + } + ViewUtils.showSnack(dialogParent.view, R.string.text_all_items_cleared) + } + .show() + } .positiveText(R.string.dialog_button_dismiss) + .positiveColorRes(R.color.dialog_button_default) .onPositive { dialog, _ -> dialog.dismiss() } .autoDismiss(false) .build() - .also { DialogUtils.toggleContentViewByItems(it) } + .also { + DialogUtils.toggleContentViewByItems(it) + DialogUtils.toggleActionButtonAbilityByItems(it, DialogAction.NEUTRAL) + } .show() } @@ -131,6 +158,11 @@ object UpdateUtils { Pref.putLinkedHashSet(R.string.key_ignored_updates, ignoredVersions) } + private fun clearIgnoredVersions() { + ignoredVersions.clear() + Pref.putLinkedHashSet(R.string.key_ignored_updates, ignoredVersions) + } + @JvmStatic @JvmOverloads fun autoCheckForUpdatesIfNeededWithSnackbar(activity: AppCompatActivity, snackbarViewIdRes: Int = android.R.id.content) {