diff --git a/app/src/main/java/org/autojs/autojs/ui/edit/EditActivity.java b/app/src/main/java/org/autojs/autojs/ui/edit/EditActivity.java index 239549141..8a8b2ec19 100644 --- a/app/src/main/java/org/autojs/autojs/ui/edit/EditActivity.java +++ b/app/src/main/java/org/autojs/autojs/ui/edit/EditActivity.java @@ -15,6 +15,7 @@ import android.view.ActionMode; import android.view.Menu; import android.view.MenuItem; +import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -29,12 +30,12 @@ import org.androidannotations.annotations.AfterViews; import org.androidannotations.annotations.EActivity; import org.androidannotations.annotations.ViewById; -import org.autojs.autoxjs.R; import org.autojs.autojs.storage.file.TmpScriptFiles; import org.autojs.autojs.theme.dialog.ThemeColorMaterialDialogBuilder; import org.autojs.autojs.tool.Observers; import org.autojs.autojs.ui.BaseActivity; import org.autojs.autojs.ui.main.MainActivity; +import org.autojs.autoxjs.R; import java.io.File; import java.io.IOException; @@ -129,7 +130,9 @@ private void onLoadFileError(String message) { } private void setUpToolbar() { - BaseActivity.setToolbarAsBack(this, R.id.toolbar, mEditorView.getName()); + BaseActivity.setToolbarAsBack(this, R.id.toolbar, "" ); + TextView filePath= findViewById(R.id.file_path); + filePath.setText(mEditorView.getUri().getPath()); } @Override diff --git a/app/src/main/java/org/autojs/autojs/ui/edit/EditorView.java b/app/src/main/java/org/autojs/autojs/ui/edit/EditorView.java index 7364ed425..309dce496 100644 --- a/app/src/main/java/org/autojs/autojs/ui/edit/EditorView.java +++ b/app/src/main/java/org/autojs/autojs/ui/edit/EditorView.java @@ -18,9 +18,12 @@ import android.text.TextUtils; import android.util.AttributeSet; import android.util.SparseBooleanArray; +import android.view.MenuItem; import android.view.View; import android.widget.FrameLayout; import android.widget.ImageView; +import android.widget.PopupMenu; +import android.widget.TextView; import android.widget.Toast; import androidx.annotation.Nullable; @@ -154,6 +157,7 @@ public void onReceive(Context context, Intent intent) { private String mRestoredText; private NormalToolbarFragment mNormalToolbar = new NormalToolbarFragment_(); private boolean mDebugging = false; + private EditorMenu mEditorMenu; public EditorView(Context context) { super(context); @@ -296,8 +300,8 @@ void init() { private void initNormalToolbar() { mNormalToolbar.setOnMenuItemClickListener(this); - mNormalToolbar.setOnMenuItemLongClickListener(id -> { - if (id == R.id.run) { + mNormalToolbar.setOnMenuItemLongClickListener(view -> { + if (view.getId() == R.id.run) { debug(); return true; } @@ -336,6 +340,7 @@ private void setUpEditor() { })); mEditor.addCursorChangeCallback(this::autoComplete); mEditor.getCodeEditText().setTextSize(Pref.getEditorTextSize((int) ViewUtils.pxToSp(getContext(), mEditor.getCodeEditText().getTextSize()))); + mEditorMenu = new EditorMenu(this); } private void autoComplete(String line, int cursor) { @@ -378,8 +383,8 @@ public boolean onBackPressed() { } @Override - public void onToolbarMenuItemClick(int id) { - switch (id) { + public void onToolbarMenuItemClick(View view) { + switch (view.getId()) { case R.id.run: runAndSaveFileIfNeeded(); break; @@ -404,14 +409,31 @@ public void onToolbarMenuItemClick(int id) { case R.id.cancel_search: cancelSearch(); break; - case R.id.textSizePlus: - setTextSizePlus(); + case R.id.action_log: + LogActivityKt.start(getContext()); break; - case R.id.textSizeMinus: - setTextSizeMinus(); + case R.id.debug: + showOptionMenu(view,R.menu.menu_editor_debug); + break; + case R.id.jump: + showOptionMenu(view,R.menu.menu_editor_jump); + break; + case R.id.edit: + showOptionMenu(view,R.menu.menu_editor_edit); break; } } + void showOptionMenu( View view,int menuId) { + PopupMenu popupMenu = new PopupMenu(getContext(), view); + popupMenu.inflate(menuId); + popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { + @Override + public boolean onMenuItemClick(MenuItem item) { + return mEditorMenu.onOptionsItemSelected(item); + } + }); + popupMenu.show(); + } @SuppressLint("CheckResult") public void runAndSaveFileIfNeeded() { diff --git a/app/src/main/java/org/autojs/autojs/ui/edit/editor/CodeEditor.java b/app/src/main/java/org/autojs/autojs/ui/edit/editor/CodeEditor.java index 0461184f2..b8c457b77 100644 --- a/app/src/main/java/org/autojs/autojs/ui/edit/editor/CodeEditor.java +++ b/app/src/main/java/org/autojs/autojs/ui/edit/editor/CodeEditor.java @@ -4,6 +4,8 @@ import android.graphics.Canvas; import android.text.Layout; import android.util.AttributeSet; +import android.view.MotionEvent; +import android.view.ScaleGestureDetector; import android.widget.Toast; import com.afollestad.materialdialogs.MaterialDialog; @@ -11,9 +13,11 @@ import com.stardust.autojs.script.JsBeautifier; import com.stardust.util.ClipboardUtil; import com.stardust.util.TextUtils; +import com.stardust.util.ViewUtils; -import org.autojs.autoxjs.R; +import org.autojs.autojs.Pref; import org.autojs.autojs.ui.edit.theme.Theme; +import org.autojs.autoxjs.R; import java.util.LinkedHashMap; import java.util.regex.Matcher; @@ -60,7 +64,7 @@ public interface CursorChangeCallback { private Theme mTheme; private JsBeautifier mJsBeautifier; private MaterialDialog mProcessDialog; - + private ScaleGestureDetector detector; private CharSequence mReplacement = ""; private String mKeywords; private Matcher mMatcher; @@ -76,7 +80,6 @@ public CodeEditor(Context context, AttributeSet attrs) { init(); } - private void init() { //setFillViewport(true); inflate(getContext(), R.layout.code_editor, this); @@ -85,6 +88,46 @@ private void init() { mTextViewRedoUndo = new TextViewUndoRedo(mCodeEditText); mJavaScriptHighlighter = new JavaScriptHighlighter(mTheme, mCodeEditText); mJsBeautifier = new JsBeautifier(this, "js/js-beautify"); + detector = new ScaleGestureDetector(getContext(),getScaleGestureListener()); + } + + public ScaleGestureDetector.OnScaleGestureListener getScaleGestureListener() { + return new ScaleGestureDetector.OnScaleGestureListener() { + private double mLastScaleFactor = 1.0; + private int mLastTextSize; + private final int mMinTextSize = Integer.parseInt(getContext().getString(R.string.text_size_min_value)); + private final int mMaxTextSize = Integer.parseInt(getContext().getString(R.string.text_size_max_value));; + @Override + public boolean onScale(ScaleGestureDetector detector) { + double currentFactor = Math.floor(detector.getScaleFactor() * 10) / 10; + if (currentFactor > 0 && mLastScaleFactor != currentFactor) { + int currentTextSize = mLastTextSize + (currentFactor > mLastScaleFactor ? 1 : -1); + mLastTextSize = Math.max(mMinTextSize, Math.min(mMaxTextSize, currentTextSize)); + mCodeEditText.setTextSize(mLastTextSize); + mLastScaleFactor = currentFactor; + } + mCodeEditText.invalidate(); + return false; + } + @Override + public boolean onScaleBegin(ScaleGestureDetector detector) { + mLastTextSize =Pref.getEditorTextSize((int) ViewUtils.pxToSp(getContext(), (int) mCodeEditText.getTextSize()));; + return true; + } + @Override + public void onScaleEnd(ScaleGestureDetector detector) { + mLastScaleFactor = 1.0; + Pref.setEditorTextSize(mLastTextSize); + } + }; + } + + @Override + public boolean onTouchEvent(MotionEvent event) { + //缩放手势检测 + detector.onTouchEvent(event); + //只拦截手势传递 + return detector.isInProgress() || super.onTouchEvent(event); } public Observable getLineCount() { diff --git a/app/src/main/java/org/autojs/autojs/ui/edit/toolbar/NormalToolbarFragment.java b/app/src/main/java/org/autojs/autojs/ui/edit/toolbar/NormalToolbarFragment.java index 2e1f1549f..fc56a0d75 100644 --- a/app/src/main/java/org/autojs/autojs/ui/edit/toolbar/NormalToolbarFragment.java +++ b/app/src/main/java/org/autojs/autojs/ui/edit/toolbar/NormalToolbarFragment.java @@ -11,6 +11,6 @@ public class NormalToolbarFragment extends ToolbarFragment { @Override public List getMenuItemIds() { - return Arrays.asList(R.id.run, R.id.undo, R.id.redo, R.id.save, R.id.textSizePlus, R.id.textSizeMinus); + return Arrays.asList(R.id.edit, R.id.jump, R.id.debug, R.id.action_log, R.id.run, R.id.undo, R.id.redo, R.id.save); } } diff --git a/app/src/main/java/org/autojs/autojs/ui/edit/toolbar/ToolbarFragment.java b/app/src/main/java/org/autojs/autojs/ui/edit/toolbar/ToolbarFragment.java index c9969f0ba..c325b9d95 100644 --- a/app/src/main/java/org/autojs/autojs/ui/edit/toolbar/ToolbarFragment.java +++ b/app/src/main/java/org/autojs/autojs/ui/edit/toolbar/ToolbarFragment.java @@ -15,11 +15,11 @@ public abstract class ToolbarFragment extends Fragment implements View.OnClickLi public interface OnMenuItemClickListener { - void onToolbarMenuItemClick(int id); + void onToolbarMenuItemClick(View view); } public interface OnMenuItemLongClickListener { - boolean onToolbarMenuItemLongClick(int id); + boolean onToolbarMenuItemLongClick(View view); } private OnMenuItemClickListener mOnMenuItemClickListener; @@ -73,7 +73,7 @@ private void updateMenuItemStatus(View rootView) { @Override public void onClick(View view) { if (mOnMenuItemClickListener != null) { - mOnMenuItemClickListener.onToolbarMenuItemClick(view.getId()); + mOnMenuItemClickListener.onToolbarMenuItemClick(view); } } @@ -81,7 +81,7 @@ public void onClick(View view) { @Override public boolean onLongClick(View v) { return mOnMenuItemLongClickListener != null && - mOnMenuItemLongClickListener.onToolbarMenuItemLongClick(v.getId()); + mOnMenuItemLongClickListener.onToolbarMenuItemLongClick(v); } public void setMenuItemStatus(int id, boolean enabled) { diff --git a/app/src/main/res/layout/editor_view.xml b/app/src/main/res/layout/editor_view.xml index c50ae598b..1cadaf8de 100644 --- a/app/src/main/res/layout/editor_view.xml +++ b/app/src/main/res/layout/editor_view.xml @@ -18,13 +18,14 @@ android:theme="@style/ToolBarStyle" android:background="?attr/colorPrimary" android:title="@string/app_name" + app:contentInsetStartWithNavigation="0dp" + app:contentInsetStart="0dp" app:popupTheme="@style/AppTheme.PopupOverlay"> + android:layout_width="match_parent" + android:layout_height="match_parent"/> @@ -41,7 +42,17 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> - + + + - - + + - + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:text="@string/text_edit" /> + - + app:layout_constraintStart_toEndOf="@id/edit" + app:layout_constraintTop_toTopOf="parent" + app:text="@string/text_jump" /> + - + app:layout_constraintStart_toEndOf="@id/jump" + app:layout_constraintTop_toTopOf="parent" + app:text="@string/text_debug" /> + - + app:layout_constraintEnd_toStartOf="@id/run" + app:layout_constraintTop_toTopOf="parent" + app:text="@string/text_log" /> + + + + + - + app:layout_constraintEnd_toStartOf="@id/save" + app:layout_constraintTop_toTopOf="parent" + app:text="@string/text_redo" /> + - - - \ No newline at end of file + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:text="@string/text_save" /> + \ No newline at end of file diff --git a/app/src/main/res/menu/menu_editor.xml b/app/src/main/res/menu/menu_editor.xml index 9e14d18cd..9938b5ac3 100644 --- a/app/src/main/res/menu/menu_editor.xml +++ b/app/src/main/res/menu/menu_editor.xml @@ -1,150 +1,36 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/app/src/main/res/menu/menu_editor_debug.xml b/app/src/main/res/menu/menu_editor_debug.xml new file mode 100644 index 000000000..e39c23714 --- /dev/null +++ b/app/src/main/res/menu/menu_editor_debug.xml @@ -0,0 +1,16 @@ + + + + + + diff --git a/app/src/main/res/menu/menu_editor_edit.xml b/app/src/main/res/menu/menu_editor_edit.xml new file mode 100644 index 000000000..ca035057b --- /dev/null +++ b/app/src/main/res/menu/menu_editor_edit.xml @@ -0,0 +1,28 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/menu_editor_jump.xml b/app/src/main/res/menu/menu_editor_jump.xml new file mode 100644 index 000000000..910810b0d --- /dev/null +++ b/app/src/main/res/menu/menu_editor_jump.xml @@ -0,0 +1,24 @@ + + + + + + + +