diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 7876b045..e0e6ec7d 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -187,7 +187,7 @@ dependencies { implementation("dev.rikka.rikkax.material:material:1.6.6") implementation("dev.rikka.rikkax.preference:simplemenu-preference:1.0.3") implementation("dev.rikka.rikkax.recyclerview:recyclerview-ktx:1.2.2") - implementation("dev.rikka.rikkax.widget:borderview:1.0.1") + implementation("dev.rikka.rikkax.widget:borderview:1.1.0") implementation("dev.rikka.rikkax.widget:switchbar:1.0.2") implementation("dev.rikka.rikkax.layoutinflater:layoutinflater:1.1.0") implementation("me.zhanghai.android.appiconloader:appiconloader:1.3.1") diff --git a/app/src/main/java/org/lsposed/manager/ui/dialog/FlashDialogBuilder.java b/app/src/main/java/org/lsposed/manager/ui/dialog/FlashDialogBuilder.java index 13bad3aa..97928116 100644 --- a/app/src/main/java/org/lsposed/manager/ui/dialog/FlashDialogBuilder.java +++ b/app/src/main/java/org/lsposed/manager/ui/dialog/FlashDialogBuilder.java @@ -33,9 +33,11 @@ public class FlashDialogBuilder extends BlurBehindDialogBuilder { private final TextView textView; private final BorderNestedScrollView rootView; - public FlashDialogBuilder(@NonNull Context context, String zipPath, String notes) { + public FlashDialogBuilder(@NonNull Context context) { super(context); - this.zipPath = zipPath; + var pref = App.getPreferences(); + var notes = pref.getString("release_notes", ""); + this.zipPath = pref.getString("zip_file", null); setTitle(R.string.update_lsposed); textView = new MaterialTextView(context); @@ -58,13 +60,9 @@ public class FlashDialogBuilder extends BlurBehindDialogBuilder { public AlertDialog show() { var dialog = super.show(); var button = dialog.getButton(AlertDialog.BUTTON_POSITIVE); - button.setEnabled(false); - rootView.setOnScrollChangeListener((View.OnScrollChangeListener) - (v, scrollX, scrollY, oldScrollX, oldScrollY) -> button.setEnabled( - v.getScrollY() + v.getHeight() - v.getPaddingTop() - v.getPaddingBottom() - == rootView.getChildAt(0).getHeight())); + rootView.setBorderVisibilityChangedListener((t, ot, b, ob) -> button.setEnabled(!b)); button.setOnClickListener((v) -> { - rootView.setOnScrollChangeListener((View.OnScrollChangeListener) null); + rootView.setBorderVisibilityChangedListener(null); setFlashView(v, dialog); }); return dialog; diff --git a/app/src/main/java/org/lsposed/manager/ui/fragment/HomeFragment.java b/app/src/main/java/org/lsposed/manager/ui/fragment/HomeFragment.java index 5d28101e..8f181a4c 100644 --- a/app/src/main/java/org/lsposed/manager/ui/fragment/HomeFragment.java +++ b/app/src/main/java/org/lsposed/manager/ui/fragment/HomeFragment.java @@ -101,18 +101,20 @@ public class HomeFragment extends BaseFragment { new InfoDialogBuilder(activity).show(); } } else { - if (UpdateUtil.canUpdate()) { - var pref = App.getPreferences(); - var zip = pref.getString("zip_file", null); - var notes = pref.getString("release_notes", ""); - if (zip != null) { - new FlashDialogBuilder(activity, zip, notes).show(); - return; - } + if (UpdateUtil.canInstall()) { + new FlashDialogBuilder(activity).show(); + return; } NavUtil.startURL(activity, getString(R.string.about_source)); } }); + binding.status.setOnLongClickListener(v -> { + if (UpdateUtil.canInstall()) { + new FlashDialogBuilder(activity).show(); + return true; + } + return false; + }); binding.modules.setOnClickListener(new StartFragmentListener(R.id.action_modules_fragment, true)); binding.download.setOnClickListener(new StartFragmentListener(R.id.action_repo_fragment, false)); binding.logs.setOnClickListener(new StartFragmentListener(R.id.action_logs_fragment, true)); diff --git a/app/src/main/java/org/lsposed/manager/util/UpdateUtil.java b/app/src/main/java/org/lsposed/manager/util/UpdateUtil.java index a4960929..ce2fff29 100644 --- a/app/src/main/java/org/lsposed/manager/util/UpdateUtil.java +++ b/app/src/main/java/org/lsposed/manager/util/UpdateUtil.java @@ -110,9 +110,11 @@ public class UpdateUtil { return zip; } - public static boolean canUpdate() { + public static boolean canInstall() { if (!ConfigManager.isBinderAlive()) return false; var pref = App.getPreferences(); + var zip = pref.getString("zip_file", null); + if (zip == null || !new File(zip).isFile()) return false; var zipTime = pref.getLong("zip_time", BuildConfig.BUILD_TIME); return zipTime > BuildConfig.BUILD_TIME; }