From f6dec28e49c88e793715038f560bc1fca85d3307 Mon Sep 17 00:00:00 2001 From: hyb1996 <946994919@qq.com> Date: Sun, 15 Apr 2018 17:00:03 +0800 Subject: [PATCH] fix(ui): layout inspect failed when dumping --- .../stardust/scriptdroid/tool/RootTool.java | 1 - .../scriptdroid/ui/floating/CircularMenu.java | 59 ++++++++----------- 2 files changed, 25 insertions(+), 35 deletions(-) diff --git a/app/src/main/java/com/stardust/scriptdroid/tool/RootTool.java b/app/src/main/java/com/stardust/scriptdroid/tool/RootTool.java index da5830e9..53c43853 100644 --- a/app/src/main/java/com/stardust/scriptdroid/tool/RootTool.java +++ b/app/src/main/java/com/stardust/scriptdroid/tool/RootTool.java @@ -31,7 +31,6 @@ public class RootTool { try { ProcessShell.execCommand(cmd, true); } catch (Exception ignored) { - ignored.printStackTrace(); } } diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/floating/CircularMenu.java b/app/src/main/java/com/stardust/scriptdroid/ui/floating/CircularMenu.java index c03c47a8..da8e3a72 100644 --- a/app/src/main/java/com/stardust/scriptdroid/ui/floating/CircularMenu.java +++ b/app/src/main/java/com/stardust/scriptdroid/ui/floating/CircularMenu.java @@ -13,6 +13,7 @@ import com.stardust.app.DialogUtils; import com.stardust.app.OperationDialogBuilder; import com.stardust.autojs.core.record.Recorder; import com.stardust.enhancedfloaty.FloatyService; +import com.stardust.enhancedfloaty.FloatyWindow; import com.stardust.floatingcircularactionmenu.CircularActionMenu; import com.stardust.floatingcircularactionmenu.CircularActionMenuFloatingWindow; import com.stardust.floatingcircularactionmenu.CircularActionMenuFloaty; @@ -31,6 +32,8 @@ import com.stardust.scriptdroid.ui.main.MainActivity_; import com.stardust.scriptdroid.ui.main.scripts.ScriptListView; import com.stardust.theme.dialog.ThemeColorMaterialDialogBuilder; import com.stardust.util.ClipboardUtil; +import com.stardust.util.Func1; +import com.stardust.util.Supplier; import com.stardust.view.accessibility.LayoutInspector; import com.stardust.view.accessibility.NodeInfo; @@ -200,33 +203,39 @@ public class CircularMenu implements Recorder.OnStateChangedListener, LayoutInsp @Optional @OnClick(R.id.layout_bounds) void showLayoutBounds() { - mLayoutInspectDialog.dismiss(); - mLayoutInspectDialog = null; - if (!ensureCapture()) { - return; - } - mCaptureDeferred.promise() - .done(capture -> { - LayoutBoundsFloatyWindow window = new LayoutBoundsFloatyWindow(capture); - mActionViewIcon.post(() -> FloatyService.addWindow(window)); - }); + inspectLayout(LayoutBoundsFloatyWindow::new); } @Optional @OnClick(R.id.layout_hierarchy) void showLayoutHierarchy() { + inspectLayout(LayoutHierarchyFloatyWindow::new); + } + + private void inspectLayout(Func1 windowCreator) { mLayoutInspectDialog.dismiss(); mLayoutInspectDialog = null; - if (!ensureCapture()) { + if (AccessibilityService.getInstance() == null) { + Toast.makeText(mContext, R.string.text_no_accessibility_permission_to_capture, Toast.LENGTH_SHORT).show(); + AccessibilityServiceTool.goToAccessibilitySetting(); return; } + MaterialDialog progress = DialogUtils.showDialog(new ThemeColorMaterialDialogBuilder(mContext) + .content(R.string.text_layout_inspector_is_dumping) + .canceledOnTouchOutside(false) + .progress(true, 0) + .build()); mCaptureDeferred.promise() - .done(capture -> { - LayoutHierarchyFloatyWindow window = new LayoutHierarchyFloatyWindow(capture); - mActionViewIcon.post(() -> FloatyService.addWindow(window)); - }); - + .then(capture -> { + mActionViewIcon.post(() -> { + if (!progress.isCancelled()) { + progress.dismiss(); + FloatyService.addWindow(windowCreator.call(capture)); + } + } + ); + }, err -> mActionViewIcon.post(progress::dismiss)); } @@ -244,24 +253,6 @@ public class CircularMenu implements Recorder.OnStateChangedListener, LayoutInsp mCaptureDeferred.resolve(capture); } - private boolean ensureCapture() { - LayoutInspector inspector = AutoJs.getInstance().getLayoutInspector(); - if (inspector.isDumping()) { - Toast.makeText(mContext, R.string.text_layout_inspector_is_dumping, Toast.LENGTH_SHORT).show(); - return true; - } - if (AccessibilityService.getInstance() == null) { - Toast.makeText(mContext, R.string.text_no_accessibility_permission_to_capture, Toast.LENGTH_SHORT).show(); - AccessibilityServiceTool.goToAccessibilitySetting(); - return false; - } - if (inspector.getCapture() == null) { - Toast.makeText(mContext, R.string.text_inspect_failed, Toast.LENGTH_SHORT).show(); - return false; - } - return true; - } - @Optional @OnClick(R.id.settings)