Change the way of action pefrom(no longer wait for event), add loading jar file support, fix simple action memory leak

This commit is contained in:
hyb1996
2017-04-05 22:35:31 +08:00
parent b762ceb60b
commit 6844eb9841
88 changed files with 1797 additions and 832 deletions

View File

@@ -10,10 +10,10 @@ public class CommonUtils {
public static final String EXTRA_KEY_PATH = "path";
public static final String EXTRA_KEY_PREPARE_SCRIPT = "script";
public static final String EXTRA_KEY_PRE_EXECUTE_SCRIPT = "script";
public static boolean isTaskerBundleValid(Bundle bundle) {
return bundle.containsKey(CommonUtils.EXTRA_KEY_PATH);
return bundle.containsKey(CommonUtils.EXTRA_KEY_PATH) || bundle.containsKey(EXTRA_KEY_PRE_EXECUTE_SCRIPT);
}
}

View File

@@ -68,7 +68,7 @@ public class HoverMenuService extends Service {
private static void setIsRunning(boolean isRunning) {
sIsRunning = isRunning;
EventBus.getDefault().post(new ServiceStateChangedEvent(sIsRunning));
eventBus.post(new ServiceStateChangedEvent(sIsRunning));
}
public static void postEvent(MessageEvent event) {
@@ -96,7 +96,7 @@ public class HoverMenuService extends Service {
private HoverMenu.OnExitListener mWindowHoverMenuMenuExitListener = new HoverMenu.OnExitListener() {
@Override
public void onExitByUserRequest() {
EventBus.getDefault().post(new MessageEvent(MESSAGE_MENU_EXIT));
eventBus.post(new MessageEvent(MESSAGE_MENU_EXIT));
savePreferredLocation();
mWindowHoverMenu.hide();
stopSelf();
@@ -106,7 +106,7 @@ public class HoverMenuService extends Service {
@Override
public void onCreate() {
super.onCreate();
EventBus.getDefault().register(this);
eventBus.register(this);
mPrefs = getSharedPreferences(PREF_FILE, Context.MODE_PRIVATE);
tryInitViews();
}
@@ -141,14 +141,14 @@ public class HoverMenuService extends Service {
mWindowHoverMenu.setHoverMenuTransitionListener(new SimpleHoverMenuTransitionListener() {
@Override
public void onExpanding() {
EventBus.getDefault().post(new MessageEvent(MESSAGE_MENU_EXPANDING));
eventBus.post(new MessageEvent(MESSAGE_MENU_EXPANDING));
captureCurrentWindow();
}
@Override
public void onCollapsing() {
AutoJs.getInstance().getLayoutInspector().clearCapture();
EventBus.getDefault().post(new MessageEvent(MESSAGE_MENU_COLLAPSING));
eventBus.post(new MessageEvent(MESSAGE_MENU_COLLAPSING));
}
});
}
@@ -182,8 +182,8 @@ public class HoverMenuService extends Service {
public void onDestroy() {
if (mWindowHoverMenu != null)
mWindowHoverMenu.hide();
if (EventBus.getDefault().isRegistered(this))
EventBus.getDefault().unregister(this);
if (eventBus.isRegistered(this))
eventBus.unregister(this);
setIsRunning(false);
}

View File

@@ -1,7 +1,6 @@
package com.stardust.scriptdroid.external.floating_window.content;
import android.content.Context;
import android.content.Intent;
import android.support.annotation.NonNull;
import android.support.v7.widget.SwitchCompat;
import android.view.View;
@@ -9,6 +8,7 @@ import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.stardust.app.VolumeChangeObserver;
import com.stardust.scriptdroid.App;
import com.stardust.scriptdroid.Pref;
import com.stardust.scriptdroid.R;
@@ -19,7 +19,6 @@ import com.stardust.scriptdroid.record.Recorder;
import com.stardust.scriptdroid.record.accessibility.AccessibilityActionRecorder;
import com.stardust.scriptdroid.record.inputevent.InputEventConverter;
import com.stardust.scriptdroid.record.inputevent.TouchRecorder;
import com.stardust.scriptdroid.service.VolumeChangeObverseService;
import com.stardust.scriptdroid.ui.main.MainActivity;
import com.stardust.util.MessageEvent;
import com.stardust.view.ViewBinder;
@@ -58,7 +57,7 @@ public class RecordNavigatorContent implements NavigatorContent, Recorder.OnStat
private Recorder mRecorder;
private Context mContext;
private VolumeChangeObverseService.OnVolumeChangeListener mOnVolumeChangeListener = new VolumeChangeObverseService.OnVolumeChangeListener() {
private VolumeChangeObserver.OnVolumeChangeListener mOnVolumeChangeListener = new VolumeChangeObserver.OnVolumeChangeListener() {
@Override
public void onVolumeChange() {
if (Pref.isRecordVolumeControlEnable()) {
@@ -76,8 +75,7 @@ public class RecordNavigatorContent implements NavigatorContent, Recorder.OnStat
mView = View.inflate(context, R.layout.floating_window_record, null);
ViewBinder.bind(this);
EventBus.getDefault().register(this);
App.getApp().startService(new Intent(App.getApp(), VolumeChangeObverseService.class));
VolumeChangeObverseService.addOnVolumeChangeListener(mOnVolumeChangeListener);
App.getApp().getVolumeChangeObserver().addOnVolumeChangeListener(mOnVolumeChangeListener);
}
@NonNull
@@ -163,7 +161,7 @@ public class RecordNavigatorContent implements NavigatorContent, Recorder.OnStat
pauseRecord();
} else if (event.message.equals(HoverMenuService.MESSAGE_MENU_EXIT)) {
EventBus.getDefault().unregister(this);
VolumeChangeObverseService.removeOnVolumeChangeListener(mOnVolumeChangeListener);
App.getApp().getVolumeChangeObserver().removeOnVolumeChangeListener(mOnVolumeChangeListener);
}
}

View File

@@ -12,7 +12,6 @@ import com.stardust.autojs.script.FileScriptSource;
import com.stardust.autojs.script.MultiScriptSource;
import com.stardust.autojs.script.ScriptSource;
import com.stardust.autojs.script.StringScriptSource;
import com.stardust.scriptdroid.App;
import com.stardust.scriptdroid.external.CommonUtils;
import com.stardust.scriptdroid.R;
@@ -36,7 +35,7 @@ public class RunIntentActivity extends Activity {
private void handleIntent(Intent intent) {
String path = getPath(intent);
String script = intent.getStringExtra(CommonUtils.EXTRA_KEY_PREPARE_SCRIPT);
String script = intent.getStringExtra(CommonUtils.EXTRA_KEY_PRE_EXECUTE_SCRIPT);
ScriptSource source = null;
if (path == null && script != null) {
source = new StringScriptSource(script);

View File

@@ -1,16 +1,13 @@
package com.stardust.scriptdroid.external.tasker;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.util.Log;
import com.stardust.scriptdroid.App;
import com.stardust.scriptdroid.external.CommonUtils;
import com.stardust.scriptdroid.external.open.RunIntentActivity;
import com.stardust.scriptdroid.external.shortcut.ShortcutActivity;
import com.twofortyfouram.locale.sdk.client.receiver.AbstractPluginSettingReceiver;
/**
@@ -36,6 +33,6 @@ public class FireSettingReceiver extends AbstractPluginSettingReceiver {
context.startActivity(new Intent(App.getApp(), RunIntentActivity.class)
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
.putExtra(CommonUtils.EXTRA_KEY_PATH, bundle.getString(CommonUtils.EXTRA_KEY_PATH))
.putExtra(CommonUtils.EXTRA_KEY_PREPARE_SCRIPT, bundle.getString(CommonUtils.EXTRA_KEY_PREPARE_SCRIPT)));
.putExtra(CommonUtils.EXTRA_KEY_PRE_EXECUTE_SCRIPT, bundle.getString(CommonUtils.EXTRA_KEY_PRE_EXECUTE_SCRIPT)));
}
}

View File

@@ -1,37 +1,50 @@
package com.stardust.scriptdroid.external.tasker;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.util.Log;
import android.text.TextUtils;
import android.view.Menu;
import android.view.MenuItem;
import com.stardust.scriptdroid.scripts.ScriptFile;
import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.external.CommonUtils;
import com.stardust.scriptdroid.scripts.ScriptFile;
import com.stardust.scriptdroid.scripts.StorageScriptProvider;
import com.stardust.scriptdroid.ui.BaseActivity;
import com.stardust.scriptdroid.ui.main.script_list.ScriptAndFolderListRecyclerView;
import com.stardust.scriptdroid.ui.main.script_list.ScriptListWithProgressBarView;
import com.twofortyfouram.locale.sdk.client.ui.activity.AbstractPluginActivity;
import com.stardust.view.ViewBinder;
import com.stardust.view.ViewBinding;
import com.twofortyfouram.locale.sdk.client.ui.activity.AbstractAppCompatPluginActivity;
/**
* Created by Stardust on 2017/3/27.
*/
public class TaskPrefEditActivity extends AbstractPluginActivity {
public class TaskPrefEditActivity extends AbstractAppCompatPluginActivity {
private String mSelectedScriptFilePath;
private String mPreExecuteScript;
private StorageScriptProvider mStorageScriptProvider;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_tasker_edit);
BaseActivity.setToolbarAsBack(this, R.id.toolbar, getString(R.string.text_please_choose_a_script));
initScriptListRecyclerView();
ViewBinder.bind(this);
}
private void initScriptListRecyclerView() {
ScriptListWithProgressBarView scriptListWithProgressBarView = (ScriptListWithProgressBarView) findViewById(R.id.script_list);
scriptListWithProgressBarView.setScriptFileOperationEnabled(false);
scriptListWithProgressBarView.setOnItemClickListener(new ScriptAndFolderListRecyclerView.OnScriptFileClickListener() {
mStorageScriptProvider = StorageScriptProvider.getExternalStorageProvider();
ScriptListWithProgressBarView scriptList = (ScriptListWithProgressBarView) findViewById(R.id.script_list);
scriptList.setScriptFileOperationEnabled(false);
scriptList.setStorageScriptProvider(mStorageScriptProvider);
scriptList.setCurrentDirectory(StorageScriptProvider.DEFAULT_DIRECTORY);
scriptList.setOnItemClickListener(new ScriptAndFolderListRecyclerView.OnScriptFileClickListener() {
@Override
public void onClick(ScriptFile file) {
mSelectedScriptFilePath = file.getPath();
@@ -41,6 +54,31 @@ public class TaskPrefEditActivity extends AbstractPluginActivity {
}
@ViewBinding.Click(R.id.edit_script)
private void editPreExecuteScript() {
TaskerScriptEditActivity.edit(this, getString(R.string.text_pre_execute_script), getString(R.string.summary_pre_execute_script), mPreExecuteScript == null ? "" : mPreExecuteScript);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.action_refresh) {
mStorageScriptProvider.refreshAll();
} else if (item.getItemId() == R.id.action_clear_file_selection) {
mSelectedScriptFilePath = null;
} else {
mPreExecuteScript = null;
}
return true;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.tasker_script_edit_menu, menu);
return true;
}
@Override
public boolean isBundleValid(@NonNull Bundle bundle) {
return CommonUtils.isTaskerBundleValid(bundle);
@@ -49,6 +87,7 @@ public class TaskPrefEditActivity extends AbstractPluginActivity {
@Override
public void onPostCreateWithPreviousResult(@NonNull Bundle bundle, @NonNull String s) {
mSelectedScriptFilePath = bundle.getString(CommonUtils.EXTRA_KEY_PATH);
mPreExecuteScript = bundle.getString(CommonUtils.EXTRA_KEY_PRE_EXECUTE_SCRIPT);
}
@Nullable
@@ -56,12 +95,27 @@ public class TaskPrefEditActivity extends AbstractPluginActivity {
public Bundle getResultBundle() {
Bundle bundle = new Bundle();
bundle.putString(CommonUtils.EXTRA_KEY_PATH, mSelectedScriptFilePath);
bundle.putString(CommonUtils.EXTRA_KEY_PRE_EXECUTE_SCRIPT, mPreExecuteScript);
return bundle;
}
@NonNull
@Override
public String getResultBlurb(@NonNull Bundle bundle) {
return bundle.getString(CommonUtils.EXTRA_KEY_PATH, getString(R.string.text_path_is_empty));
String blurb = bundle.getString(CommonUtils.EXTRA_KEY_PATH);
if (TextUtils.isEmpty(blurb)) {
blurb = bundle.getString(CommonUtils.EXTRA_KEY_PRE_EXECUTE_SCRIPT);
}
if (TextUtils.isEmpty(blurb)) {
blurb = getString(R.string.text_path_is_empty);
}
return blurb;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
mPreExecuteScript = data.getStringExtra(TaskerScriptEditActivity.EXTRA_CONTENT);
}
}
}

View File

@@ -0,0 +1,107 @@
package com.stardust.scriptdroid.external.tasker;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.widget.TextView;
import com.jecelyin.editor.v2.common.Command;
import com.jecelyin.editor.v2.ui.EditorDelegate;
import com.jecelyin.editor.v2.view.EditorView;
import com.jecelyin.editor.v2.view.menu.MenuDef;
import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.ui.BaseActivity;
import com.stardust.scriptdroid.ui.edit.EditActivity;
import com.stardust.scriptdroid.ui.edit.completion.InputMethodEnhanceBar;
import com.stardust.scriptdroid.ui.edit.editor920.Editor920Activity;
import com.stardust.scriptdroid.ui.edit.editor920.Editor920Utils;
import com.stardust.view.ViewBinder;
import com.stardust.view.ViewBinding;
import com.stardust.widget.ToolbarMenuItem;
/**
* Created by Stardust on 2017/4/5.
*/
public class TaskerScriptEditActivity extends Editor920Activity {
public static final int REQUEST_CODE = "Love you. Can we go back?".hashCode() >> 16;
public static final String EXTRA_CONTENT = "Still Love Eating 17.4.5";
public static void edit(Activity activity, String title, String summary, String content) {
activity.startActivityForResult(new Intent(activity, TaskerScriptEditActivity.class)
.putExtra(EXTRA_CONTENT, content)
.putExtra("summary", summary)
.putExtra("title", title), REQUEST_CODE);
}
private EditorDelegate mEditorDelegate;
private String mTitle, mSummary;
private ToolbarMenuItem mRedo, mUndo;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
handleIntent(getIntent());
setUpUI();
BaseActivity.setToolbarAsBack(this, R.id.toolbar, mTitle);
setUpEditor();
ViewBinder.bind(this);
}
private void setUpUI() {
setTheme(R.style.EditorTheme);
setContentView(R.layout.activity_tasker_script_edit);
((TextView) findViewById(R.id.summary)).setText(mSummary);
mRedo = (ToolbarMenuItem) findViewById(R.id.redo);
mUndo = (ToolbarMenuItem) findViewById(R.id.undo);
}
private void handleIntent(Intent intent) {
mTitle = intent.getStringExtra("title");
mSummary = intent.getStringExtra("summary");
String content = intent.getStringExtra(EXTRA_CONTENT);
mEditorDelegate = new EditorDelegate(0, mTitle, content);
}
private void setUpEditor() {
final EditorView editorView = (EditorView) findViewById(R.id.editor);
mEditorDelegate.setEditorView(editorView);
Editor920Utils.setLang(mEditorDelegate, "JavaScript");
editorView.getEditText().setHorizontallyScrolling(true);
setUpInputMethodEnhanceBar(editorView);
}
private void setUpInputMethodEnhanceBar(final EditorView editorView) {
InputMethodEnhanceBar inputMethodEnhanceBar = (InputMethodEnhanceBar) findViewById(R.id.input_method_enhance_bar);
inputMethodEnhanceBar.setEditTextBridge(new EditActivity.InputMethodEnhanceBarBridge(this, editorView.getEditText()));
}
@ViewBinding.Click(R.id.undo)
private void undo() {
Command command = new Command(Command.CommandEnum.UNDO);
mEditorDelegate.doCommand(command);
}
@ViewBinding.Click(R.id.redo)
private void redo() {
Command command = new Command(Command.CommandEnum.REDO);
mEditorDelegate.doCommand(command);
}
@Override
public void finish() {
setResult(RESULT_OK, new Intent().putExtra(EXTRA_CONTENT, mEditorDelegate.getText()));
super.finish();
}
public void setMenuStatus(int menuResId, int status) {
boolean disabled = status == MenuDef.STATUS_DISABLED;
if (menuResId == com.jecelyin.editor.v2.R.id.m_redo) {
mRedo.setEnabled(!disabled);
} else if (menuResId == com.jecelyin.editor.v2.R.id.m_undo) {
mUndo.setEnabled(!disabled);
}
}
}