fix: console lagged with too many logs
This commit is contained in:
@@ -108,8 +108,6 @@ dependencies {
|
|||||||
compile 'com.github.atlassian:commonmark-java:commonmark-parent-0.9.0'
|
compile 'com.github.atlassian:commonmark-java:commonmark-parent-0.9.0'
|
||||||
// AlipayZeroSdk
|
// AlipayZeroSdk
|
||||||
compile 'moe.feng:AlipayZeroSdk:1.1'
|
compile 'moe.feng:AlipayZeroSdk:1.1'
|
||||||
// Console
|
|
||||||
compile 'com.jraska:console:0.4.3'
|
|
||||||
// Android issue reporter (a github issue reporter)
|
// Android issue reporter (a github issue reporter)
|
||||||
compile('com.heinrichreimersoftware:android-issue-reporter:1.3.1', {
|
compile('com.heinrichreimersoftware:android-issue-reporter:1.3.1', {
|
||||||
exclude group: 'com.afollestad.material-dialogs'
|
exclude group: 'com.afollestad.material-dialogs'
|
||||||
@@ -142,8 +140,6 @@ dependencies {
|
|||||||
// Tasker Plugin
|
// Tasker Plugin
|
||||||
compile 'com.twofortyfouram:android-plugin-client-sdk-for-locale:[4.0.2, 5.0['
|
compile 'com.twofortyfouram:android-plugin-client-sdk-for-locale:[4.0.2, 5.0['
|
||||||
compile 'com.flurry.android:analytics:7.0.0@aar'
|
compile 'com.flurry.android:analytics:7.0.0@aar'
|
||||||
compile 'com.pushtorefresh.storio:sqlite:1.12.3'
|
|
||||||
// 920 Text Editors
|
|
||||||
compile('com.afollestad.material-dialogs:commons:0.9.2.3', {
|
compile('com.afollestad.material-dialogs:commons:0.9.2.3', {
|
||||||
exclude group: 'com.android.support'
|
exclude group: 'com.android.support'
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -77,7 +77,6 @@
|
|||||||
<activity
|
<activity
|
||||||
android:name=".ui.settings.SettingsActivity_"
|
android:name=".ui.settings.SettingsActivity_"
|
||||||
android:theme="@style/AppTheme.Settings"/>
|
android:theme="@style/AppTheme.Settings"/>
|
||||||
<activity android:name=".ui.console.LogActivity_"/>
|
|
||||||
<activity android:name=".ui.error.ErrorReportActivity"/>
|
<activity android:name=".ui.error.ErrorReportActivity"/>
|
||||||
<activity android:name=".ui.help.LocalWebViewActivity"/>
|
<activity android:name=".ui.help.LocalWebViewActivity"/>
|
||||||
<activity android:name=".external.tasker.TaskerScriptEditActivity_"/>
|
<activity android:name=".external.tasker.TaskerScriptEditActivity_"/>
|
||||||
|
|||||||
@@ -17,6 +17,8 @@ import com.stardust.autojs.engine.ScriptEngine;
|
|||||||
import com.stardust.autojs.engine.ScriptEngineManager;
|
import com.stardust.autojs.engine.ScriptEngineManager;
|
||||||
import com.stardust.autojs.core.accessibility.AccessibilityBridge;
|
import com.stardust.autojs.core.accessibility.AccessibilityBridge;
|
||||||
import com.stardust.autojs.runtime.ScriptRuntime;
|
import com.stardust.autojs.runtime.ScriptRuntime;
|
||||||
|
import com.stardust.autojs.runtime.api.NoOpConsole;
|
||||||
|
import com.stardust.autojs.runtime.console.GlobalStardustConsole;
|
||||||
import com.stardust.autojs.runtime.exception.ScriptException;
|
import com.stardust.autojs.runtime.exception.ScriptException;
|
||||||
import com.stardust.autojs.runtime.api.AbstractShell;
|
import com.stardust.autojs.runtime.api.AbstractShell;
|
||||||
import com.stardust.autojs.runtime.api.AppUtils;
|
import com.stardust.autojs.runtime.api.AppUtils;
|
||||||
@@ -38,7 +40,6 @@ import com.stardust.view.accessibility.AccessibilityInfoProvider;
|
|||||||
import com.stardust.autojs.core.record.accessibility.AccessibilityActionRecorder;
|
import com.stardust.autojs.core.record.accessibility.AccessibilityActionRecorder;
|
||||||
import com.stardust.view.accessibility.AccessibilityService;
|
import com.stardust.view.accessibility.AccessibilityService;
|
||||||
import com.stardust.scriptdroid.tool.AccessibilityServiceTool;
|
import com.stardust.scriptdroid.tool.AccessibilityServiceTool;
|
||||||
import com.stardust.scriptdroid.ui.console.JraskaConsole;
|
|
||||||
import com.stardust.view.accessibility.LayoutInspector;
|
import com.stardust.view.accessibility.LayoutInspector;
|
||||||
import com.stardust.view.accessibility.NotificationListener;
|
import com.stardust.view.accessibility.NotificationListener;
|
||||||
|
|
||||||
@@ -76,7 +77,7 @@ public class AutoJs {
|
|||||||
mContext = context;
|
mContext = context;
|
||||||
mUiHandler = new UiHandler(context);
|
mUiHandler = new UiHandler(context);
|
||||||
mAppUtils = new AppUtils(context);
|
mAppUtils = new AppUtils(context);
|
||||||
mGlobalConsole = new JraskaConsole();
|
mGlobalConsole = new GlobalStardustConsole(mUiHandler);
|
||||||
mNotificationObserver = new NotificationListener.Observer(context);
|
mNotificationObserver = new NotificationListener.Observer(context);
|
||||||
mAccessibilityInfoProvider = new AccessibilityInfoProvider(context.getPackageManager());
|
mAccessibilityInfoProvider = new AccessibilityInfoProvider(context.getPackageManager());
|
||||||
mScriptEngineService = buildScriptEngineService();
|
mScriptEngineService = buildScriptEngineService();
|
||||||
@@ -169,6 +170,9 @@ public class AutoJs {
|
|||||||
return mLayoutInspector;
|
return mLayoutInspector;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Console getGlobalConsole() {
|
||||||
|
return mGlobalConsole;
|
||||||
|
}
|
||||||
|
|
||||||
public ScriptEngineService getScriptEngineService() {
|
public ScriptEngineService getScriptEngineService() {
|
||||||
return mScriptEngineService;
|
return mScriptEngineService;
|
||||||
|
|||||||
@@ -3,9 +3,11 @@ package com.stardust.scriptdroid.network.download;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.net.URLDecoder;
|
||||||
|
|
||||||
import io.reactivex.Observable;
|
import io.reactivex.Observable;
|
||||||
import io.reactivex.subjects.PublishSubject;
|
import io.reactivex.subjects.PublishSubject;
|
||||||
|
import retrofit2.http.Url;
|
||||||
import zlc.season.rxdownload3.RxDownload;
|
import zlc.season.rxdownload3.RxDownload;
|
||||||
import zlc.season.rxdownload3.core.Failed;
|
import zlc.season.rxdownload3.core.Failed;
|
||||||
import zlc.season.rxdownload3.core.Mission;
|
import zlc.season.rxdownload3.core.Mission;
|
||||||
@@ -39,7 +41,7 @@ public class DownloadManager {
|
|||||||
if (i < 0) {
|
if (i < 0) {
|
||||||
i = url.lastIndexOf('/');
|
i = url.lastIndexOf('/');
|
||||||
}
|
}
|
||||||
return url.substring(i + 1);
|
return URLDecoder.decode(url.substring(i + 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
public Observable<Integer> download(String url, String path) {
|
public Observable<Integer> download(String url, String path) {
|
||||||
|
|||||||
@@ -1,94 +0,0 @@
|
|||||||
package com.stardust.scriptdroid.ui.console;
|
|
||||||
|
|
||||||
import android.content.Intent;
|
|
||||||
import android.text.Spannable;
|
|
||||||
import android.text.SpannableString;
|
|
||||||
import android.text.style.ForegroundColorSpan;
|
|
||||||
import android.util.Log;
|
|
||||||
import android.util.SparseArray;
|
|
||||||
|
|
||||||
import com.jraska.console.Console;
|
|
||||||
import com.stardust.autojs.runtime.api.AbstractConsole;
|
|
||||||
import com.stardust.scriptdroid.App;
|
|
||||||
import com.stardust.scriptdroid.sublime.SublimePluginService;
|
|
||||||
import com.stardust.util.SparseArrayEntries;
|
|
||||||
import com.stardust.util.TextUtils;
|
|
||||||
|
|
||||||
import java.text.SimpleDateFormat;
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.Locale;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Created by Stardust on 2017/4/2.
|
|
||||||
*/
|
|
||||||
|
|
||||||
public class JraskaConsole extends AbstractConsole {
|
|
||||||
|
|
||||||
|
|
||||||
private static final SparseArray<Integer> COLORS = new SparseArrayEntries<Integer>()
|
|
||||||
.entry(Log.VERBOSE, 0xff909090)
|
|
||||||
.entry(Log.DEBUG, 0xdf000000)
|
|
||||||
.entry(Log.INFO, 0xdf4caf50)
|
|
||||||
.entry(Log.WARN, 0xff2196f3)
|
|
||||||
.entry(Log.ERROR, 0xffff534e)
|
|
||||||
.entry(Log.ASSERT, 0xffff534e)
|
|
||||||
.sparseArray();
|
|
||||||
|
|
||||||
private static final SparseArray<String> TAGS = new SparseArrayEntries<String>()
|
|
||||||
.entry(Log.VERBOSE, "V")
|
|
||||||
.entry(Log.DEBUG, "D")
|
|
||||||
.entry(Log.INFO, "I")
|
|
||||||
.entry(Log.WARN, "W")
|
|
||||||
.entry(Log.ERROR, "E")
|
|
||||||
.entry(Log.ASSERT, "A")
|
|
||||||
.sparseArray();
|
|
||||||
|
|
||||||
private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("HH:mm:ss.SSS/", Locale.getDefault());
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void println(int level, CharSequence charSequence) {
|
|
||||||
Console.write(getLevelSpannable(level, getTag(level)));
|
|
||||||
Console.writeLine(getLevelSpannable(level, charSequence));
|
|
||||||
SublimePluginService.log(getTag(level) + charSequence.toString());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void write(int level, CharSequence data) {
|
|
||||||
Console.write(getLevelSpannable(level, getTag(level)));
|
|
||||||
Console.write(getLevelSpannable(level, data));
|
|
||||||
SublimePluginService.log(getTag(level) + data.toString());
|
|
||||||
}
|
|
||||||
|
|
||||||
private CharSequence getTag(int level) {
|
|
||||||
return TextUtils.join("", DATE_FORMAT.format(new Date()), TAGS.get(level), ": ");
|
|
||||||
}
|
|
||||||
|
|
||||||
private SpannableString getLevelSpannable(int level, CharSequence charSequence) {
|
|
||||||
SpannableString spannable = new SpannableString(charSequence);
|
|
||||||
spannable.setSpan(new ForegroundColorSpan(COLORS.get(level)), 0, charSequence.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
|
|
||||||
return spannable;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void clear() {
|
|
||||||
com.jraska.console.Console.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void show() {
|
|
||||||
App.getApp().startActivity(new Intent(App.getApp(), LogActivity_.class)
|
|
||||||
.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void hide() {
|
|
||||||
throw new UnsupportedOperationException();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setTitle(CharSequence title) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
package com.stardust.scriptdroid.ui.console;
|
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.graphics.Color;
|
|
||||||
import android.os.Bundle;
|
|
||||||
import android.support.annotation.Nullable;
|
|
||||||
import android.util.AttributeSet;
|
|
||||||
import android.view.Menu;
|
|
||||||
import android.view.MenuItem;
|
|
||||||
import android.widget.TextView;
|
|
||||||
|
|
||||||
import com.stardust.scriptdroid.ui.BaseActivity;
|
|
||||||
import com.jraska.console.Console;
|
|
||||||
import com.stardust.scriptdroid.R;
|
|
||||||
|
|
||||||
import org.androidannotations.annotations.AfterViews;
|
|
||||||
import org.androidannotations.annotations.EActivity;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Created by Stardust on 2017/2/12.
|
|
||||||
*/
|
|
||||||
@EActivity(R.layout.activity_console)
|
|
||||||
public class LogActivity extends BaseActivity {
|
|
||||||
|
|
||||||
@AfterViews
|
|
||||||
void setUpUI() {
|
|
||||||
setToolbarAsBack(getString(R.string.text_log));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onCreateOptionsMenu(Menu menu) {
|
|
||||||
getMenuInflater().inflate(R.menu.menu_console, menu);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean onOptionsItemSelected(MenuItem item) {
|
|
||||||
Console.clear();
|
|
||||||
return super.onOptionsItemSelected(item);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
package com.stardust.scriptdroid.ui.console;
|
|
||||||
|
|
||||||
import android.content.Context;
|
|
||||||
import android.graphics.Color;
|
|
||||||
import android.util.AttributeSet;
|
|
||||||
import android.widget.TextView;
|
|
||||||
|
|
||||||
import com.jraska.console.Console;
|
|
||||||
import com.stardust.scriptdroid.R;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Created by Stardust on 2017/8/22.
|
|
||||||
*/
|
|
||||||
|
|
||||||
public class LogView extends Console {
|
|
||||||
|
|
||||||
public LogView(Context context) {
|
|
||||||
super(context);
|
|
||||||
init();
|
|
||||||
}
|
|
||||||
|
|
||||||
public LogView(Context context, AttributeSet attrs) {
|
|
||||||
super(context, attrs);
|
|
||||||
init();
|
|
||||||
}
|
|
||||||
|
|
||||||
public LogView(Context context, AttributeSet attrs, int defStyleAttr) {
|
|
||||||
super(context, attrs, defStyleAttr);
|
|
||||||
init();
|
|
||||||
}
|
|
||||||
|
|
||||||
public LogView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
|
|
||||||
super(context, attrs, defStyleAttr, defStyleRes);
|
|
||||||
init();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void init() {
|
|
||||||
findViewById(R.id.console_scroll_view).setBackgroundColor(Color.WHITE);
|
|
||||||
((TextView) findViewById(R.id.console_text)).setTextIsSelectable(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -19,6 +19,7 @@ import com.stardust.scriptdroid.R;
|
|||||||
import com.stardust.scriptdroid.accessibility.AccessibilityService;
|
import com.stardust.scriptdroid.accessibility.AccessibilityService;
|
||||||
import com.stardust.scriptdroid.autojs.AutoJs;
|
import com.stardust.scriptdroid.autojs.AutoJs;
|
||||||
import com.stardust.scriptdroid.autojs.record.GlobalRecorder;
|
import com.stardust.scriptdroid.autojs.record.GlobalRecorder;
|
||||||
|
import com.stardust.scriptdroid.io.StorageFileProvider;
|
||||||
import com.stardust.scriptdroid.model.script.ScriptFile;
|
import com.stardust.scriptdroid.model.script.ScriptFile;
|
||||||
import com.stardust.scriptdroid.tool.AccessibilityServiceTool;
|
import com.stardust.scriptdroid.tool.AccessibilityServiceTool;
|
||||||
import com.stardust.scriptdroid.ui.floating.layoutinspector.LayoutBoundsFloatyWindow;
|
import com.stardust.scriptdroid.ui.floating.layoutinspector.LayoutBoundsFloatyWindow;
|
||||||
@@ -122,6 +123,7 @@ public class CircularMenu implements Recorder.OnStateChangedListener {
|
|||||||
void showScriptList() {
|
void showScriptList() {
|
||||||
mWindow.collapse();
|
mWindow.collapse();
|
||||||
ScriptListView listView = new ScriptListView(mContext);
|
ScriptListView listView = new ScriptListView(mContext);
|
||||||
|
listView.setStorageFileProvider(StorageFileProvider.getDefault());
|
||||||
listView.setDirectorySpanSize(2);
|
listView.setDirectorySpanSize(2);
|
||||||
final MaterialDialog dialog = new ThemeColorMaterialDialogBuilder(mContext)
|
final MaterialDialog dialog = new ThemeColorMaterialDialogBuilder(mContext)
|
||||||
.title(R.string.text_run_script)
|
.title(R.string.text_run_script)
|
||||||
|
|||||||
@@ -206,12 +206,14 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
|
|||||||
mActivityResultMediator.onActivityResult(requestCode, resultCode, data);
|
mActivityResultMediator.onActivityResult(requestCode, resultCode, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequiresApi(api = Build.VERSION_CODES.M)
|
|
||||||
@Override
|
@Override
|
||||||
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
|
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
|
||||||
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
|
||||||
if (Arrays.asList(permissions).contains(Manifest.permission.READ_EXTERNAL_STORAGE)
|
int i = Arrays.asList(permissions).indexOf(Manifest.permission.READ_EXTERNAL_STORAGE);
|
||||||
&& checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
|
if (i < 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (grantResults[i] == PackageManager.PERMISSION_GRANTED) {
|
||||||
StorageFileProvider.getDefault().notifyStoragePermissionGranted();
|
StorageFileProvider.getDefault().notifyStoragePermissionGranted();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,24 +1,16 @@
|
|||||||
package com.stardust.scriptdroid.ui.main.task;
|
package com.stardust.scriptdroid.ui.main.task;
|
||||||
|
|
||||||
import android.animation.Animator;
|
|
||||||
import android.animation.AnimatorListenerAdapter;
|
|
||||||
import android.os.Bundle;
|
|
||||||
import android.support.annotation.Nullable;
|
|
||||||
import android.support.design.widget.FloatingActionButton;
|
import android.support.design.widget.FloatingActionButton;
|
||||||
import android.support.v4.app.Fragment;
|
|
||||||
import android.support.v4.view.ViewPager;
|
|
||||||
import android.support.v4.view.animation.FastOutSlowInInterpolator;
|
|
||||||
import android.support.v4.widget.SwipeRefreshLayout;
|
import android.support.v4.widget.SwipeRefreshLayout;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.PopupMenu;
|
import android.widget.PopupMenu;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.ViewAnimator;
|
|
||||||
|
|
||||||
import com.jraska.console.Console;
|
import com.stardust.autojs.runtime.console.ConsoleView;
|
||||||
|
import com.stardust.autojs.runtime.console.StardustConsole;
|
||||||
import com.stardust.scriptdroid.R;
|
import com.stardust.scriptdroid.R;
|
||||||
import com.stardust.scriptdroid.autojs.AutoJs;
|
import com.stardust.scriptdroid.autojs.AutoJs;
|
||||||
import com.stardust.scriptdroid.ui.console.LogView;
|
|
||||||
import com.stardust.scriptdroid.ui.main.ViewPagerFragment;
|
import com.stardust.scriptdroid.ui.main.ViewPagerFragment;
|
||||||
import com.stardust.widget.SimpleAdapterDataObserver;
|
import com.stardust.widget.SimpleAdapterDataObserver;
|
||||||
|
|
||||||
@@ -27,8 +19,6 @@ import org.androidannotations.annotations.Click;
|
|||||||
import org.androidannotations.annotations.EFragment;
|
import org.androidannotations.annotations.EFragment;
|
||||||
import org.androidannotations.annotations.ViewById;
|
import org.androidannotations.annotations.ViewById;
|
||||||
|
|
||||||
import butterknife.OnClick;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by Stardust on 2017/3/24.
|
* Created by Stardust on 2017/3/24.
|
||||||
*/
|
*/
|
||||||
@@ -47,15 +37,17 @@ public class TaskManagerFragment extends ViewPagerFragment implements PopupMenu.
|
|||||||
@ViewById(R.id.task_manager_view)
|
@ViewById(R.id.task_manager_view)
|
||||||
View mTaskManagerView;
|
View mTaskManagerView;
|
||||||
|
|
||||||
@ViewById(R.id.log)
|
|
||||||
View mLogView;
|
|
||||||
|
|
||||||
@ViewById(R.id.spinner)
|
@ViewById(R.id.spinner)
|
||||||
View mSpinner;
|
View mSpinner;
|
||||||
|
|
||||||
@ViewById(R.id.spinner_current_item)
|
@ViewById(R.id.spinner_current_item)
|
||||||
TextView mSpinnerCurrentItem;
|
TextView mSpinnerCurrentItem;
|
||||||
|
|
||||||
|
@ViewById(R.id.console)
|
||||||
|
ConsoleView mConsoleView;
|
||||||
|
|
||||||
|
private StardustConsole mStardustConsole;
|
||||||
|
|
||||||
public TaskManagerFragment() {
|
public TaskManagerFragment() {
|
||||||
super(45);
|
super(45);
|
||||||
}
|
}
|
||||||
@@ -66,6 +58,8 @@ public class TaskManagerFragment extends ViewPagerFragment implements PopupMenu.
|
|||||||
init();
|
init();
|
||||||
final boolean noRunningScript = mTaskListRecyclerView.getAdapter().getItemCount() == 0;
|
final boolean noRunningScript = mTaskListRecyclerView.getAdapter().getItemCount() == 0;
|
||||||
mNoRunningScriptNotice.setVisibility(noRunningScript ? View.VISIBLE : View.GONE);
|
mNoRunningScriptNotice.setVisibility(noRunningScript ? View.VISIBLE : View.GONE);
|
||||||
|
mStardustConsole = (StardustConsole) AutoJs.getInstance().getGlobalConsole();
|
||||||
|
mConsoleView.setConsole(mStardustConsole);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void init() {
|
private void init() {
|
||||||
@@ -74,29 +68,20 @@ public class TaskManagerFragment extends ViewPagerFragment implements PopupMenu.
|
|||||||
@Override
|
@Override
|
||||||
public void onSomethingChanged() {
|
public void onSomethingChanged() {
|
||||||
final boolean noRunningScript = mTaskListRecyclerView.getAdapter().getItemCount() == 0;
|
final boolean noRunningScript = mTaskListRecyclerView.getAdapter().getItemCount() == 0;
|
||||||
mTaskListRecyclerView.postDelayed(new Runnable() {
|
mTaskListRecyclerView.postDelayed(() -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
if (mNoRunningScriptNotice == null)
|
if (mNoRunningScriptNotice == null)
|
||||||
return;
|
return;
|
||||||
mNoRunningScriptNotice.setVisibility(noRunningScript ? View.VISIBLE : View.GONE);
|
mNoRunningScriptNotice.setVisibility(noRunningScript ? View.VISIBLE : View.GONE);
|
||||||
}
|
|
||||||
}, 150);
|
}, 150);
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
mSwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
|
mSwipeRefreshLayout.setOnRefreshListener(() -> {
|
||||||
@Override
|
|
||||||
public void onRefresh() {
|
|
||||||
mTaskListRecyclerView.updateEngineList();
|
mTaskListRecyclerView.updateEngineList();
|
||||||
mTaskListRecyclerView.postDelayed(new Runnable() {
|
mTaskListRecyclerView.postDelayed(() -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
if (mSwipeRefreshLayout != null)
|
if (mSwipeRefreshLayout != null)
|
||||||
mSwipeRefreshLayout.setRefreshing(false);
|
mSwipeRefreshLayout.setRefreshing(false);
|
||||||
}
|
|
||||||
}, 800);
|
}, 800);
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -121,12 +106,12 @@ public class TaskManagerFragment extends ViewPagerFragment implements PopupMenu.
|
|||||||
|
|
||||||
private void showLog() {
|
private void showLog() {
|
||||||
mTaskManagerView.setVisibility(View.GONE);
|
mTaskManagerView.setVisibility(View.GONE);
|
||||||
mLogView.setVisibility(View.VISIBLE);
|
mConsoleView.setVisibility(View.VISIBLE);
|
||||||
mSpinnerCurrentItem.setText(R.string.text_log);
|
mSpinnerCurrentItem.setText(R.string.text_log);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showTaskManager() {
|
private void showTaskManager() {
|
||||||
mLogView.setVisibility(View.GONE);
|
mConsoleView.setVisibility(View.GONE);
|
||||||
mTaskManagerView.setVisibility(View.VISIBLE);
|
mTaskManagerView.setVisibility(View.VISIBLE);
|
||||||
mSpinnerCurrentItem.setText(R.string.text_task_manage);
|
mSpinnerCurrentItem.setText(R.string.text_task_manage);
|
||||||
}
|
}
|
||||||
@@ -134,8 +119,8 @@ public class TaskManagerFragment extends ViewPagerFragment implements PopupMenu.
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onFabClick(FloatingActionButton fab) {
|
protected void onFabClick(FloatingActionButton fab) {
|
||||||
if (mLogView.getVisibility() == View.VISIBLE) {
|
if (mConsoleView.getVisibility() == View.VISIBLE) {
|
||||||
Console.clear();
|
mStardustConsole.clear();
|
||||||
} else {
|
} else {
|
||||||
AutoJs.getInstance().getScriptEngineService().stopAll();
|
AutoJs.getInstance().getScriptEngineService().stopAll();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
</android.support.design.widget.AppBarLayout>
|
</android.support.design.widget.AppBarLayout>
|
||||||
|
|
||||||
<com.stardust.scriptdroid.ui.console.LogView
|
<com.stardust.autojs.runtime.console.ConsoleView
|
||||||
android:id="@+id/console"
|
android:id="@+id/console"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"/>
|
android:layout_height="match_parent"/>
|
||||||
|
|||||||
@@ -67,21 +67,13 @@
|
|||||||
android:textSize="16sp"/>
|
android:textSize="16sp"/>
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
|
|
||||||
|
<com.stardust.autojs.runtime.console.ConsoleView
|
||||||
<android.support.v4.widget.NestedScrollView
|
android:id="@+id/console"
|
||||||
android:id="@+id/log"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:background="@android:color/white"
|
android:background="@android:color/white"
|
||||||
android:paddingLeft="6dp"
|
android:paddingLeft="6dp"
|
||||||
android:visibility="gone">
|
android:visibility="gone"/>
|
||||||
|
|
||||||
<com.stardust.scriptdroid.ui.console.LogView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:background="@android:color/white"/>
|
|
||||||
</android.support.v4.widget.NestedScrollView>
|
|
||||||
|
|
||||||
|
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.stardust.auojs.inrt.rt;
|
package com.stardust.autojs.runtime.api;
|
||||||
|
|
||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
|
|
||||||
@@ -2,24 +2,21 @@ package com.stardust.autojs.runtime.console;
|
|||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.support.annotation.Nullable;
|
import android.support.annotation.Nullable;
|
||||||
import android.text.Spannable;
|
import android.support.v7.widget.LinearLayoutManager;
|
||||||
import android.text.SpannableString;
|
import android.support.v7.widget.RecyclerView;
|
||||||
import android.text.Spanned;
|
|
||||||
import android.text.method.ScrollingMovementMethod;
|
|
||||||
import android.text.style.ForegroundColorSpan;
|
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.util.SparseArray;
|
import android.util.SparseArray;
|
||||||
|
import android.view.LayoutInflater;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
import android.widget.Button;
|
import android.widget.Button;
|
||||||
import android.widget.EditText;
|
import android.widget.EditText;
|
||||||
import android.widget.FrameLayout;
|
import android.widget.FrameLayout;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
import android.widget.ScrollView;
|
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import com.stardust.autojs.R;
|
import com.stardust.autojs.R;
|
||||||
import com.stardust.autojs.runtime.console.StardustConsole;
|
|
||||||
import com.stardust.enhancedfloaty.ResizableExpandableFloatyWindow;
|
import com.stardust.enhancedfloaty.ResizableExpandableFloatyWindow;
|
||||||
import com.stardust.util.SparseArrayEntries;
|
import com.stardust.util.SparseArrayEntries;
|
||||||
|
|
||||||
@@ -31,7 +28,7 @@ import java.util.List;
|
|||||||
*/
|
*/
|
||||||
public class ConsoleView extends FrameLayout implements StardustConsole.LogListener {
|
public class ConsoleView extends FrameLayout implements StardustConsole.LogListener {
|
||||||
|
|
||||||
private static final SparseArray<Integer> COLORS = new SparseArrayEntries<Integer>()
|
static final SparseArray<Integer> COLORS = new SparseArrayEntries<Integer>()
|
||||||
.entry(Log.VERBOSE, 0xdfc0c0c0)
|
.entry(Log.VERBOSE, 0xdfc0c0c0)
|
||||||
.entry(Log.DEBUG, 0xdfffffff)
|
.entry(Log.DEBUG, 0xdfffffff)
|
||||||
.entry(Log.INFO, 0xff64dd17)
|
.entry(Log.INFO, 0xff64dd17)
|
||||||
@@ -40,12 +37,15 @@ public class ConsoleView extends FrameLayout implements StardustConsole.LogListe
|
|||||||
.entry(Log.ASSERT, 0xffff534e)
|
.entry(Log.ASSERT, 0xffff534e)
|
||||||
.sparseArray();
|
.sparseArray();
|
||||||
|
|
||||||
|
private static final int REFRESH_INTERVAL = 100;
|
||||||
|
private SparseArray<Integer> mColors = COLORS;
|
||||||
private StardustConsole mConsole;
|
private StardustConsole mConsole;
|
||||||
private TextView mTextView;
|
private RecyclerView mLogListRecyclerView;
|
||||||
private EditText mEditText;
|
private EditText mEditText;
|
||||||
private ResizableExpandableFloatyWindow mWindow;
|
private ResizableExpandableFloatyWindow mWindow;
|
||||||
private LinearLayout mInputContainer;
|
private LinearLayout mInputContainer;
|
||||||
private ScrollView mContentContainer;
|
private boolean mShouldStopRefresh = false;
|
||||||
|
private ArrayList<StardustConsole.Log> mLogs = new ArrayList<>();
|
||||||
|
|
||||||
public ConsoleView(Context context) {
|
public ConsoleView(Context context) {
|
||||||
super(context);
|
super(context);
|
||||||
@@ -62,11 +62,16 @@ public class ConsoleView extends FrameLayout implements StardustConsole.LogListe
|
|||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setColors(SparseArray<Integer> colors) {
|
||||||
|
mColors = colors;
|
||||||
|
}
|
||||||
|
|
||||||
private void init() {
|
private void init() {
|
||||||
inflate(getContext(), R.layout.console_view, this);
|
inflate(getContext(), R.layout.console_view, this);
|
||||||
mTextView = (TextView) findViewById(R.id.content);
|
mLogListRecyclerView = (RecyclerView) findViewById(R.id.log_list);
|
||||||
mTextView.setMovementMethod(new ScrollingMovementMethod());
|
LinearLayoutManager manager = new LinearLayoutManager(getContext());
|
||||||
mContentContainer = (ScrollView) findViewById(R.id.content_container);
|
mLogListRecyclerView.setLayoutManager(manager);
|
||||||
|
mLogListRecyclerView.setAdapter(new Adapter());
|
||||||
initEditText();
|
initEditText();
|
||||||
initSubmitButton();
|
initSubmitButton();
|
||||||
}
|
}
|
||||||
@@ -115,69 +120,64 @@ public class ConsoleView extends FrameLayout implements StardustConsole.LogListe
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onNewLog(StardustConsole.Log log) {
|
public void onNewLog(StardustConsole.Log log) {
|
||||||
log(log.level, log.content);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void log(int level, CharSequence log) {
|
@Override
|
||||||
int color = getColorForLevel(level);
|
protected void onAttachedToWindow() {
|
||||||
final Spannable spannable = buildColorSpannable(log, color);
|
super.onAttachedToWindow();
|
||||||
post(new Runnable() {
|
mShouldStopRefresh = false;
|
||||||
|
postDelayed(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
mTextView.append(spannable);
|
refreshLog();
|
||||||
mContentContainer.fullScroll(View.FOCUS_DOWN);
|
if (!mShouldStopRefresh) {
|
||||||
mEditText.requestFocus();
|
postDelayed(this, REFRESH_INTERVAL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, REFRESH_INTERVAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
@Override
|
||||||
|
protected void onDetachedFromWindow() {
|
||||||
|
super.onDetachedFromWindow();
|
||||||
|
mShouldStopRefresh = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Spannable buildColorSpannable(CharSequence log, int color) {
|
|
||||||
Spannable spannable = new SpannableString(log);
|
|
||||||
spannable.setSpan(new ForegroundColorSpan(color), 0, log.length(), Spanned.SPAN_INCLUSIVE_EXCLUSIVE);
|
|
||||||
return spannable;
|
|
||||||
}
|
|
||||||
|
|
||||||
private int getColorForLevel(int level) {
|
|
||||||
return COLORS.get(level);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLogClear() {
|
public void onLogClear() {
|
||||||
post(new Runnable() {
|
post(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
mTextView.setText("");
|
mLogs.clear();
|
||||||
|
mLogListRecyclerView.getAdapter().notifyDataSetChanged();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void onWindowVisibilityChanged(int visibility) {
|
|
||||||
super.onWindowVisibilityChanged(visibility);
|
|
||||||
if (visibility == VISIBLE) {
|
|
||||||
refreshLog();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void refreshLog() {
|
private void refreshLog() {
|
||||||
if (mConsole != null) {
|
if (mConsole == null)
|
||||||
mTextView.setText("");
|
return;
|
||||||
final List<StardustConsole.Log> logs = new ArrayList<>(mConsole.getLogs());
|
int oldSize = mLogs.size();
|
||||||
post(new Runnable() {
|
ArrayList<StardustConsole.Log> logs = mConsole.getAllLogs();
|
||||||
@Override
|
final int size = logs.size();
|
||||||
public void run() {
|
if (size == 0) {
|
||||||
for (StardustConsole.Log log : logs) {
|
return;
|
||||||
int color = getColorForLevel(log.level);
|
|
||||||
final Spannable spannable = buildColorSpannable(log.content, color);
|
|
||||||
mTextView.append(spannable);
|
|
||||||
}
|
}
|
||||||
mContentContainer.fullScroll(View.FOCUS_DOWN);
|
if (oldSize >= size) {
|
||||||
mEditText.requestFocus();
|
return;
|
||||||
}
|
}
|
||||||
});
|
if (oldSize == 0) {
|
||||||
|
mLogs.addAll(logs);
|
||||||
|
} else {
|
||||||
|
for (int i = oldSize; i < size; i++) {
|
||||||
|
mLogs.add(logs.get(i));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
mLogListRecyclerView.getAdapter().notifyItemRangeInserted(oldSize, size - 1);
|
||||||
|
mLogListRecyclerView.scrollToPosition(size - 1);
|
||||||
|
}
|
||||||
|
|
||||||
public void setWindow(ResizableExpandableFloatyWindow window) {
|
public void setWindow(ResizableExpandableFloatyWindow window) {
|
||||||
mWindow = window;
|
mWindow = window;
|
||||||
@@ -193,4 +193,34 @@ public class ConsoleView extends FrameLayout implements StardustConsole.LogListe
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private class ViewHolder extends RecyclerView.ViewHolder {
|
||||||
|
|
||||||
|
TextView textView;
|
||||||
|
|
||||||
|
public ViewHolder(View itemView) {
|
||||||
|
super(itemView);
|
||||||
|
textView = (TextView) itemView;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private class Adapter extends RecyclerView.Adapter<ViewHolder> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||||
|
return new ViewHolder(LayoutInflater.from(getContext()).inflate(R.layout.console_view_item, parent, false));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onBindViewHolder(ViewHolder holder, int position) {
|
||||||
|
StardustConsole.Log log = mLogs.get(position);
|
||||||
|
holder.textView.setText(log.content);
|
||||||
|
holder.textView.setTextColor(mColors.get(log.level));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getItemCount() {
|
||||||
|
return mLogs.size();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,61 @@
|
|||||||
|
package com.stardust.autojs.runtime.console;
|
||||||
|
|
||||||
|
import android.graphics.Color;
|
||||||
|
import android.util.Log;
|
||||||
|
import android.util.SparseArray;
|
||||||
|
|
||||||
|
import com.stardust.autojs.runtime.api.Console;
|
||||||
|
import com.stardust.util.UiHandler;
|
||||||
|
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Created by Stardust on 2017/10/22.
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class GlobalStardustConsole extends StardustConsole {
|
||||||
|
private static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("HH:mm:ss.SSS", Locale.getDefault());
|
||||||
|
|
||||||
|
private final SparseArray<Integer> mColors;
|
||||||
|
|
||||||
|
public GlobalStardustConsole(UiHandler uiHandler) {
|
||||||
|
super(uiHandler);
|
||||||
|
mColors = ConsoleView.COLORS.clone();
|
||||||
|
mColors.put(android.util.Log.DEBUG, 0xcc000000);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setConsoleView(ConsoleView consoleView) {
|
||||||
|
super.setConsoleView(consoleView);
|
||||||
|
consoleView.setColors(mColors);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void println(int level, CharSequence charSequence) {
|
||||||
|
charSequence = String.format(Locale.getDefault(), "%s/%s: %s",
|
||||||
|
DATE_FORMAT.format(new Date()), getLevelChar(level), charSequence.toString());
|
||||||
|
super.println(level, charSequence);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String getLevelChar(int level) {
|
||||||
|
switch (level) {
|
||||||
|
case android.util.Log.VERBOSE:
|
||||||
|
return "V";
|
||||||
|
case android.util.Log.DEBUG:
|
||||||
|
return "D";
|
||||||
|
case android.util.Log.INFO:
|
||||||
|
return "I";
|
||||||
|
case android.util.Log.WARN:
|
||||||
|
return "W";
|
||||||
|
case android.util.Log.ERROR:
|
||||||
|
return "E";
|
||||||
|
case android.util.Log.ASSERT:
|
||||||
|
return "A";
|
||||||
|
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -5,19 +5,22 @@ import android.content.Intent;
|
|||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
import android.view.WindowManager;
|
import android.view.WindowManager;
|
||||||
|
|
||||||
|
import com.stardust.autojs.R;
|
||||||
import com.stardust.autojs.annotation.ScriptInterface;
|
import com.stardust.autojs.annotation.ScriptInterface;
|
||||||
import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
|
|
||||||
import com.stardust.autojs.runtime.api.AbstractConsole;
|
import com.stardust.autojs.runtime.api.AbstractConsole;
|
||||||
import com.stardust.autojs.runtime.api.Console;
|
import com.stardust.autojs.runtime.api.Console;
|
||||||
|
import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
|
||||||
import com.stardust.enhancedfloaty.FloatyService;
|
import com.stardust.enhancedfloaty.FloatyService;
|
||||||
import com.stardust.enhancedfloaty.ResizableExpandableFloatyWindow;
|
import com.stardust.enhancedfloaty.ResizableExpandableFloatyWindow;
|
||||||
import com.stardust.util.UiHandler;
|
import com.stardust.util.UiHandler;
|
||||||
import com.stardust.autojs.R;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.ArrayBlockingQueue;
|
import java.util.concurrent.ArrayBlockingQueue;
|
||||||
import java.util.concurrent.BlockingQueue;
|
import java.util.concurrent.BlockingQueue;
|
||||||
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
|
||||||
import ezy.assist.compat.SettingsCompat;
|
import ezy.assist.compat.SettingsCompat;
|
||||||
|
|
||||||
@@ -27,15 +30,30 @@ import ezy.assist.compat.SettingsCompat;
|
|||||||
|
|
||||||
public class StardustConsole extends AbstractConsole {
|
public class StardustConsole extends AbstractConsole {
|
||||||
|
|
||||||
public static class Log {
|
public static class Log implements Comparable<Log> {
|
||||||
|
|
||||||
|
public int id;
|
||||||
public int level;
|
public int level;
|
||||||
public CharSequence content;
|
public CharSequence content;
|
||||||
|
public boolean newLine = false;
|
||||||
|
|
||||||
public Log(int level, CharSequence content) {
|
public Log(int id, int level, CharSequence content) {
|
||||||
|
this.id = id;
|
||||||
this.level = level;
|
this.level = level;
|
||||||
this.content = content;
|
this.content = content;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Log(int id, int level, CharSequence content, boolean newLine) {
|
||||||
|
this.id = id;
|
||||||
|
this.level = level;
|
||||||
|
this.content = content;
|
||||||
|
this.newLine = newLine;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int compareTo(@NonNull Log o) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public interface LogListener {
|
public interface LogListener {
|
||||||
@@ -45,7 +63,8 @@ public class StardustConsole extends AbstractConsole {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private final Console mGlobalConsole;
|
private final Console mGlobalConsole;
|
||||||
private List<Log> mLogs = new ArrayList<>();
|
private final ArrayList<Log> mLogs = new ArrayList<>();
|
||||||
|
private AtomicInteger mIdCounter = new AtomicInteger(0);
|
||||||
private ResizableExpandableFloatyWindow mFloatyWindow;
|
private ResizableExpandableFloatyWindow mFloatyWindow;
|
||||||
private ConsoleFloaty mConsoleFloaty;
|
private ConsoleFloaty mConsoleFloaty;
|
||||||
private LogListener mLogListener;
|
private LogListener mLogListener;
|
||||||
@@ -83,13 +102,13 @@ public class StardustConsole extends AbstractConsole {
|
|||||||
mLogListener = logListener;
|
mLogListener = logListener;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Log> getLogs() {
|
public ArrayList<Log> getAllLogs() {
|
||||||
return mLogs;
|
return mLogs;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void println(int level, CharSequence charSequence) {
|
public void println(int level, CharSequence charSequence) {
|
||||||
Log log = new Log(level, charSequence + "\n");
|
Log log = new Log(mIdCounter.getAndIncrement(), level, charSequence, true);
|
||||||
mLogs.add(log);
|
mLogs.add(log);
|
||||||
if (mGlobalConsole != null) {
|
if (mGlobalConsole != null) {
|
||||||
mGlobalConsole.println(level, charSequence);
|
mGlobalConsole.println(level, charSequence);
|
||||||
@@ -102,7 +121,7 @@ public class StardustConsole extends AbstractConsole {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void write(int level, CharSequence charSequence) {
|
public void write(int level, CharSequence charSequence) {
|
||||||
Log log = new Log(level, charSequence);
|
Log log = new Log(mIdCounter.getAndIncrement(), level, charSequence);
|
||||||
mLogs.add(log);
|
mLogs.add(log);
|
||||||
if (mGlobalConsole != null) {
|
if (mGlobalConsole != null) {
|
||||||
mGlobalConsole.print(level, charSequence);
|
mGlobalConsole.print(level, charSequence);
|
||||||
|
|||||||
@@ -6,22 +6,11 @@
|
|||||||
android:animateLayoutChanges="true"
|
android:animateLayoutChanges="true"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
<ScrollView
|
<android.support.v7.widget.RecyclerView
|
||||||
android:id="@+id/content_container"
|
android:id="@+id/log_list"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="0dp"
|
android:layout_height="0dp"
|
||||||
android:layout_weight="1">
|
android:layout_weight="1"/>
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/content"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginBottom="16dp"
|
|
||||||
android:paddingLeft="3dp"
|
|
||||||
android:textIsSelectable="true"
|
|
||||||
android:textSize="14sp"
|
|
||||||
tools:text="12345\n678\n9\n0"/>
|
|
||||||
</ScrollView>
|
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/input_container"
|
android:id="@+id/input_container"
|
||||||
|
|||||||
7
autojs/src/main/res/layout/console_view_item.xml
Normal file
7
autojs/src/main/res/layout/console_view_item.xml
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:textSize="15sp">
|
||||||
|
|
||||||
|
</TextView>
|
||||||
@@ -24,6 +24,7 @@ import com.stardust.autojs.runtime.ScriptRuntime;
|
|||||||
import com.stardust.autojs.runtime.api.AbstractShell;
|
import com.stardust.autojs.runtime.api.AbstractShell;
|
||||||
import com.stardust.autojs.runtime.api.AppUtils;
|
import com.stardust.autojs.runtime.api.AppUtils;
|
||||||
import com.stardust.autojs.runtime.api.Console;
|
import com.stardust.autojs.runtime.api.Console;
|
||||||
|
import com.stardust.autojs.runtime.api.NoOpConsole;
|
||||||
import com.stardust.autojs.runtime.api.Shell;
|
import com.stardust.autojs.runtime.api.Shell;
|
||||||
import com.stardust.autojs.runtime.api.image.ScreenCaptureRequestActivity;
|
import com.stardust.autojs.runtime.api.image.ScreenCaptureRequestActivity;
|
||||||
import com.stardust.autojs.runtime.api.image.ScreenCaptureRequester;
|
import com.stardust.autojs.runtime.api.image.ScreenCaptureRequester;
|
||||||
|
|||||||
Reference in New Issue
Block a user