6.7.0 - Alpha19 - Fine tuning

This commit is contained in:
SuperMonster003
2026-02-12 21:06:47 +08:00
parent 8b0c4b3eea
commit 994688bf42
12 changed files with 98 additions and 48 deletions

View File

@@ -6,14 +6,15 @@ import android.net.Uri
import com.afollestad.materialdialogs.MaterialDialog
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.schedulers.Schedulers
import org.autojs.autojs.util.DialogUtils
import org.autojs.autojs.model.explorer.ExplorerDirPage
import org.autojs.autojs.model.explorer.Explorers
import org.autojs.autojs.model.script.ScriptFile
import org.autojs.autojs.model.script.Scripts
import org.autojs.autojs.pio.PFiles
import org.autojs.autojs.storage.file.TmpScriptFiles
import org.autojs.autojs.ui.common.NotAskAgainDialog
import org.autojs.autojs.ui.edit.EditActivity
import org.autojs.autojs.util.DialogUtils
import org.autojs.autojs.util.DialogUtils.choiceWidgetThemeColor
import org.autojs.autojs.util.DialogUtils.widgetThemeColor
import org.autojs.autojs.util.StringUtils
@@ -225,7 +226,6 @@ class VersionHistoryController(private val context: Context) {
Schedulers.io().scheduleDirect {
runCatching {
val bytes = HistoryRepository(appCtx).readRevisionBytes(rev)
val restored = decodeRevisionBytes(bytes, rev.encoding, rev.hadBom)
val fmt = SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault())
val timeText = fmt.format(Date(rev.createdAt))
@@ -234,6 +234,25 @@ class VersionHistoryController(private val context: Context) {
AndroidSchedulers.mainThread().scheduleDirect {
val newTask = context !is Activity
// Avoid putting large content into Intent extras to prevent FAILED BINDER TRANSACTION.
// zh-CN: 避免将大文本放入 Intent extras, 防止 FAILED BINDER TRANSACTION.
if (bytes.size >= PREVIEW_INTENT_MAX_BYTES) {
val tmp = runCatching {
TmpScriptFiles.create(appCtx).also { f ->
f.outputStream().use { it.write(bytes) }
}
}.getOrElse {
it.printStackTrace()
ViewUtils.showToast(context, it.message, true)
return@scheduleDirect
}
EditActivity.viewPath(context, name, tmp.absolutePath, newTask)
return@scheduleDirect
}
val restored = decodeRevisionBytes(bytes, rev.encoding, rev.hadBom)
EditActivity.viewContent(context, name, restored, newTask)
}
}.onFailure {
@@ -455,5 +474,9 @@ class VersionHistoryController(private val context: Context) {
private val DEFAULT_CHARSET: Charset = StandardCharsets.UTF_8
private const val HISTORY_DIALOG_MAX_ITEMS: Int = 20
private const val INTERNAL_STORAGE_ROOT: String = "/storage/emulated/0"
// Keep Intent extras payload under a conservative threshold.
// zh-CN: 将 Intent extras 的载荷控制在一个保守阈值以内.
private const val PREVIEW_INTENT_MAX_BYTES: Int = 64 * 1024
}
}

View File

@@ -495,6 +495,22 @@ open class EditActivity : BaseActivity(), DelegateHost, PermissionRequestProxyAc
else -> false
}
@JvmStatic
fun viewPath(context: Context, name: String?, path: String?, newTask: Boolean) =
when {
newIntent(context).apply {
putExtra(EditorView.EXTRA_PATH, path)
putExtra(EditorView.EXTRA_NAME, name)
putExtra(EditorView.EXTRA_READ_ONLY, true)
}.startSafely(context) -> true
newIntentFallback(context, newTask).apply {
putExtra(EditorView.EXTRA_PATH, path)
putExtra(EditorView.EXTRA_NAME, name)
putExtra(EditorView.EXTRA_READ_ONLY, true)
}.startSafely(context) -> true
else -> false
}
private fun newIntent(context: Context): Intent {
// @Caution by SuperMonster003 on Sep 11, 2022.
// ! FLAG_ACTIVITY_NEW_TASK makes screen flash when Activity started.

View File

@@ -146,7 +146,7 @@ class CodeEditText : AppCompatEditText {
applyFixedGutterPaddingForLoading()
} else {
// Recompute gutter once after loading.
// zh-CN: 加载结束后重新计算 gutter(仅一次).
// zh-CN: 加载结束后重新计算 gutter (仅一次).
requestLayout()
invalidate()
}

View File

@@ -1,28 +1,32 @@
package org.autojs.autojs.ui.fragment;
package org.autojs.autojs.ui.fragment
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.viewbinding.ViewBinding
public abstract class BaseViewBindingFragment<T extends androidx.viewbinding.ViewBinding> extends Fragment {
abstract class BaseViewBindingFragment<T : ViewBinding?> : Fragment() {
protected T binding;
@JvmField
protected var binding: T? = null
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
binding = createBinding(inflater, container);
return getRootView(binding);
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val binding = createBinding(inflater, container).also {
this.binding = it
}
return getRootView(binding)
}
protected abstract T createBinding(@NonNull LayoutInflater inflater, @Nullable ViewGroup container);
protected View getRootView(@NonNull T binding) {
return binding.getRoot();
override fun onDestroyView() {
super.onDestroyView()
binding = null
}
protected abstract fun createBinding(inflater: LayoutInflater, container: ViewGroup?): T
protected fun getRootView(binding: T): View {
return binding!!.root
}
}

View File

@@ -357,7 +357,7 @@ class VersionHistoryActivity : BaseSearchSortListActivity<ActivityVersionHistory
DialogUtils.buildAndShowAdaptive {
MaterialDialog.Builder(this)
.title(R.string.text_prompt)
.content(getString(R.string.text_confirm_to_clear_the_history_of, entry.canonicalPath))
.content(getString(R.string.text_confirm_to_clear_the_history_of, entry.displayPath))
.negativeText(R.string.dialog_button_cancel)
.negativeColorRes(R.color.dialog_button_default)
.positiveText(R.string.dialog_button_confirm)

View File

@@ -1,5 +1,6 @@
package org.autojs.autojs.ui.storage
import android.text.TextUtils.TruncateAt
import android.util.TypedValue
import android.view.Gravity
import android.view.View
@@ -107,10 +108,16 @@ internal class VersionHistoryFileViewHolder(
val title = TextView(ctx).apply {
textSize = 16f
setTextColor(context.getColor(R.color.day_night))
maxLines = 1
ellipsize = TruncateAt.MIDDLE
}
val subtitle = TextView(ctx).apply {
textSize = 12f
setTextColor(context.getColor(R.color.day_night_alpha_70))
maxLines = 3
ellipsize = TruncateAt.END
alpha = 0.75f
}

View File

@@ -103,8 +103,7 @@
<FrameLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:paddingHorizontal="4dp">
android:layout_weight="1">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recycler"

View File

@@ -20,7 +20,6 @@
android:scrollbarDefaultDelayBeforeFade="600"
android:scrollbarFadeDuration="500"
android:scrollbars="vertical" />
</org.autojs.autojs.theme.widget.ThemeColorSwipeRefreshLayout>
<TextView
@@ -36,5 +35,4 @@
android:visibility="gone"
tools:visibility="visible"
tools:text="@string/text_retrieving_plugin_list_data" />
</FrameLayout>

View File

@@ -18,7 +18,7 @@
android:padding="2dp"
android:layout_gravity="start|center_vertical"
tools:src="@drawable/ic_simple_file"
app:tint="?android:attr/textColorSecondary" />
app:tint="@color/day_night_alpha_60" />
<LinearLayout
android:layout_width="match_parent"
@@ -30,19 +30,21 @@
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLines="1"
android:ellipsize="middle"
tools:text="test-116_v1.0.5.apk"
android:textSize="16sp" />
android:maxLines="1"
android:textColor="@color/day_night"
android:textSize="16sp"
tools:text="test-116_v1.0.5.apk" />
<TextView
android:id="@+id/subtitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLines="3"
android:alpha="0.75"
android:ellipsize="end"
tools:text="2026-02-06 21:45:55 | 21.93 MiB\n/storage/emulated/0/Scripts/test-116_v1.0.5.apk"
android:maxLines="3"
android:textColor="@color/day_night_alpha_70"
android:textSize="12sp"
android:alpha="0.75" />
tools:text="2026-02-06 21:45:55 | 21.93 MiB\n/storage/emulated/0/Scripts/test-116_v1.0.5.apk" />
</LinearLayout>
</LinearLayout>