diff --git a/app/src/main/java/com/stardust/scriptdroid/external/floatingwindow/menu/content/ScriptListNavigatorContent.java b/app/src/main/java/com/stardust/scriptdroid/external/floatingwindow/menu/content/ScriptListNavigatorContent.java index a8f8f049..618d3ebf 100644 --- a/app/src/main/java/com/stardust/scriptdroid/external/floatingwindow/menu/content/ScriptListNavigatorContent.java +++ b/app/src/main/java/com/stardust/scriptdroid/external/floatingwindow/menu/content/ScriptListNavigatorContent.java @@ -7,6 +7,7 @@ import android.view.ContextThemeWrapper; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.view.WindowManager; import android.workground.WrapContentLinearLayoutManager; import com.stardust.scriptdroid.R; @@ -14,6 +15,7 @@ import com.stardust.scriptdroid.external.floatingwindow.menu.HoverMenuService; import com.stardust.scriptdroid.script.ScriptFile; import com.stardust.scriptdroid.script.Scripts; import com.stardust.scriptdroid.script.StorageScriptProvider; +import com.stardust.scriptdroid.ui.common.ScriptLoopDialog; import com.stardust.scriptdroid.ui.edit.EditActivity; import com.stardust.scriptdroid.ui.main.script_list.ScriptAndFolderListRecyclerView; import com.stardust.scriptdroid.ui.main.script_list.ScriptListWithProgressBarView; @@ -88,18 +90,33 @@ public class ScriptListNavigatorContent implements NavigatorContent { private class FileViewHolder extends DirectoryViewHolder { - FileViewHolder(View itemView) { + FileViewHolder(final View itemView) { super(itemView); itemView.findViewById(R.id.edit).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - int position = mFloatingScriptFileListView.getChildViewHolder((View) v.getParent()).getAdapterPosition(); - ScriptFile file = mFloatingScriptFileListView.getAdapter().getScriptFileAt(position); - EditActivity.editFile(v.getContext(), file); + EditActivity.editFile(v.getContext(), getScriptFile()); HoverMenuService.postIntent(new Intent(HoverMenuService.ACTION_COLLAPSE_MENU)); } }); + itemView.setOnLongClickListener(new View.OnLongClickListener() { + @Override + public boolean onLongClick(View v) { + new ScriptLoopDialog(v.getContext(), getScriptFile()) + .windowType(WindowManager.LayoutParams.TYPE_PHONE) + .show(); + HoverMenuService.postIntent(new Intent(HoverMenuService.ACTION_COLLAPSE_MENU)); + return true; + } + }); + } + + private ScriptFile getScriptFile() { + return mFloatingScriptFileListView.getAdapter().getScriptFileAt(getAdapterPosition()); } + } + + } \ No newline at end of file diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/common/ScriptLoopDialog.java b/app/src/main/java/com/stardust/scriptdroid/ui/common/ScriptLoopDialog.java index 68b18ed2..191c41b9 100644 --- a/app/src/main/java/com/stardust/scriptdroid/ui/common/ScriptLoopDialog.java +++ b/app/src/main/java/com/stardust/scriptdroid/ui/common/ScriptLoopDialog.java @@ -5,9 +5,11 @@ import android.support.annotation.NonNull; import android.support.design.widget.TextInputEditText; import android.view.View; import android.view.Window; +import android.widget.Toast; import com.afollestad.materialdialogs.DialogAction; import com.afollestad.materialdialogs.MaterialDialog; +import com.stardust.scriptdroid.App; import com.stardust.scriptdroid.R; import com.stardust.scriptdroid.script.ScriptFile; import com.stardust.scriptdroid.script.Scripts; @@ -39,7 +41,7 @@ public class ScriptLoopDialog { View view = View.inflate(context, R.layout.dialog_script_loop, null); mDialog = new MaterialDialog.Builder(context) .title(R.string.text_run_repeatedly) - .customView(view, false) + .customView(view, true) .positiveText(R.string.ok) .onPositive(new MaterialDialog.SingleButtonCallback() { @Override @@ -52,10 +54,14 @@ public class ScriptLoopDialog { } private void startScriptRunningLoop() { - int loopTimes = Integer.parseInt(mLoopTimes.getText().toString()); - float loopInterval = Float.parseFloat(mLoopInterval.getText().toString()); - float loopDelay = Float.parseFloat(mLoopDelay.getText().toString()); - Scripts.runRepeatedly(mScriptFile, loopTimes, (long) (1000L * loopDelay), (long) (loopInterval * 1000L)); + try { + int loopTimes = Integer.parseInt(mLoopTimes.getText().toString()); + float loopInterval = Float.parseFloat(mLoopInterval.getText().toString()); + float loopDelay = Float.parseFloat(mLoopDelay.getText().toString()); + Scripts.runRepeatedly(mScriptFile, loopTimes, (long) (1000L * loopDelay), (long) (loopInterval * 1000L)); + } catch (NumberFormatException e) { + App.getApp().getUiHandler().toast(R.string.text_number_format_error); + } } public ScriptLoopDialog windowType(int windowType) { diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index bc3563c0..4b9fc3eb 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -8,4 +8,6 @@ -4dp 56dp 0dp + 56dp + 0dp diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index fa28d62a..edca27e0 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -204,6 +204,7 @@ 循环次数 0为无限循环 延迟多少秒后开始循环 + 格式错误