add script running repleatedly support, change min sdk version to 17

This commit is contained in:
hyb1996
2017-07-08 22:30:27 +08:00
parent 6888f88f77
commit 7c5a27a8d3
20 changed files with 218 additions and 179 deletions

View File

@@ -111,4 +111,12 @@ public class Scripts {
return AutoJs.getInstance().getScriptEngineService().execute(source, BROADCAST_SENDER_SCRIPT_EXECUTION_LISTENER,
new ExecutionConfig().requirePath(StorageScriptProvider.DEFAULT_DIRECTORY_PATH));
}
public static ScriptExecution runRepeatedly(ScriptFile scriptFile, int loopTimes, long delay, long interval) {
ScriptSource source = new FileScriptSource(scriptFile);
String directoryPath = scriptFile.getParent();
return AutoJs.getInstance().getScriptEngineService().execute(source, new ExecutionConfig()
.requirePath(directoryPath, StorageScriptProvider.DEFAULT_DIRECTORY_PATH)
.loop(delay, loopTimes, interval));
}
}

View File

@@ -0,0 +1,73 @@
package com.stardust.scriptdroid.ui.common;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.design.widget.TextInputEditText;
import android.view.View;
import android.view.Window;
import com.afollestad.materialdialogs.DialogAction;
import com.afollestad.materialdialogs.MaterialDialog;
import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.script.ScriptFile;
import com.stardust.scriptdroid.script.Scripts;
import butterknife.BindView;
import butterknife.ButterKnife;
/**
* Created by Stardust on 2017/7/8.
*/
public class ScriptLoopDialog {
private ScriptFile mScriptFile;
private MaterialDialog mDialog;
@BindView(R.id.loop_times)
TextInputEditText mLoopTimes;
@BindView(R.id.loop_interval)
TextInputEditText mLoopInterval;
@BindView(R.id.loop_delay)
TextInputEditText mLoopDelay;
public ScriptLoopDialog(Context context, ScriptFile file) {
mScriptFile = file;
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)
.positiveText(R.string.ok)
.onPositive(new MaterialDialog.SingleButtonCallback() {
@Override
public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
startScriptRunningLoop();
}
})
.build();
ButterKnife.bind(this, view);
}
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));
}
public ScriptLoopDialog windowType(int windowType) {
Window window = mDialog.getWindow();
if (window != null) {
window.setType(windowType);
}
return this;
}
public void show() {
mDialog.show();
}
}

View File

@@ -20,6 +20,7 @@ import com.stardust.pio.PFile;
import com.stardust.scriptdroid.R;
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.theme.dialog.ThemeColorMaterialDialogBuilder;
import com.stardust.util.UnderuseExecutors;
@@ -106,6 +107,7 @@ public class MyScriptListFragment extends Fragment {
private void initDialogs() {
mScriptFileOperationDialog = new OperationDialogBuilder(getContext())
.item(R.id.loop, R.drawable.ic_loop_white_24dp, R.string.text_run_repeatedly)
.item(R.id.rename, R.drawable.ic_ali_rename, R.string.text_rename)
.item(R.id.open_by_other_apps, R.drawable.ic_ali_open, R.string.text_open_by_other_apps)
.item(R.id.create_shortcut, R.drawable.ic_ali_shortcut, R.string.text_send_shortcut)
@@ -228,6 +230,14 @@ public class MyScriptListFragment extends Fragment {
});
}
@Optional
@OnClick(R.id.loop)
void runScriptRepeatedly() {
dismissDialogs();
new ScriptLoopDialog(getActivity(), mSelectedScriptFile)
.show();
}
@Optional
@OnClick(R.id.rename)
void renameScriptFile() {