mirror of
https://github.com/TonyJiangWJ/Auto.js.git
synced 2026-06-24 21:33:16 +08:00
feat(ui): reset sample
This commit is contained in:
parent
d80d871a8d
commit
8a7966ba3c
@ -7,7 +7,7 @@ import android.widget.Toast;
|
||||
|
||||
import org.autojs.autojs.R;
|
||||
import org.autojs.autojs.timing.TaskReceiver;
|
||||
import org.autojs.autojs.tool.EmptyObservers;
|
||||
import org.autojs.autojs.tool.Observers;
|
||||
import org.autojs.autojs.ui.BaseActivity;
|
||||
import org.autojs.autojs.ui.edit.EditorView;
|
||||
|
||||
@ -16,8 +16,6 @@ import org.androidannotations.annotations.EActivity;
|
||||
import org.androidannotations.annotations.ViewById;
|
||||
|
||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||
import io.reactivex.annotations.NonNull;
|
||||
import io.reactivex.functions.Consumer;
|
||||
|
||||
import static org.autojs.autojs.ui.edit.EditorView.EXTRA_CONTENT;
|
||||
import static org.autojs.autojs.ui.edit.EditorView.EXTRA_NAME;
|
||||
@ -50,7 +48,7 @@ public class TaskerScriptEditActivity extends BaseActivity {
|
||||
.putExtra(EXTRA_RUN_ENABLED, false)
|
||||
.putExtra(EXTRA_SAVE_ENABLED, false))
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(EmptyObservers.consumer(),
|
||||
.subscribe(Observers.consumer(),
|
||||
ex -> {
|
||||
Toast.makeText(TaskerScriptEditActivity.this, ex.getMessage(), Toast.LENGTH_LONG).show();
|
||||
finish();
|
||||
|
||||
@ -7,7 +7,7 @@ import org.greenrobot.eventbus.EventBus;
|
||||
public class Explorers {
|
||||
|
||||
|
||||
private static Explorer sWorkspaceExplorer = new Explorer(new WorkspaceFileProvider(GlobalAppContext.get(), null), 20);
|
||||
private static Explorer sWorkspaceExplorer = new Explorer(Providers.workspace(), 20);
|
||||
|
||||
private static Explorer sExternalExplorer = new Explorer(new ExplorerFileProvider(), 10);
|
||||
|
||||
@ -18,4 +18,12 @@ public class Explorers {
|
||||
public static Explorer external() {
|
||||
return sExternalExplorer;
|
||||
}
|
||||
|
||||
public static class Providers {
|
||||
private static WorkspaceFileProvider sWorkspaceFileProvider = new WorkspaceFileProvider(GlobalAppContext.get(), null);
|
||||
|
||||
public static WorkspaceFileProvider workspace() {
|
||||
return sWorkspaceFileProvider;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -8,7 +8,7 @@ import com.stardust.pio.PFile;
|
||||
import com.stardust.pio.PFiles;
|
||||
|
||||
import org.autojs.autojs.Pref;
|
||||
import org.autojs.autojs.model.sample.SampleFile;
|
||||
import org.autojs.autojs.model.script.ScriptFile;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileFilter;
|
||||
@ -16,6 +16,7 @@ import java.io.FileNotFoundException;
|
||||
import java.io.InputStream;
|
||||
|
||||
import io.reactivex.Observable;
|
||||
import io.reactivex.Scheduler;
|
||||
import io.reactivex.Single;
|
||||
import io.reactivex.schedulers.Schedulers;
|
||||
|
||||
@ -99,8 +100,18 @@ public class WorkspaceFileProvider extends ExplorerFileProvider {
|
||||
});
|
||||
}
|
||||
|
||||
public static void resetSample(SampleFile sampleFile){
|
||||
|
||||
public Observable<ScriptFile> resetSample(ScriptFile file) {
|
||||
if (file.getPath().length() <= mSampleDir.getPath().length() + 1) {
|
||||
return null;
|
||||
}
|
||||
String pathOfSample = file.getPath().substring(mSampleDir.getPath().length());
|
||||
String pathOfAsset = SAMPLE_PATH + pathOfSample;
|
||||
return Observable.fromCallable(() -> {
|
||||
InputStream stream = mAssetManager.open(pathOfAsset);
|
||||
PFiles.copyStream(stream, file.getPath());
|
||||
return file;
|
||||
})
|
||||
.subscribeOn(Schedulers.io());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -8,7 +8,7 @@ import android.text.TextUtils;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
|
||||
import org.autojs.autojs.tool.EmptyObservers;
|
||||
import org.autojs.autojs.tool.Observers;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
@ -101,7 +101,7 @@ public class AndroidClassIndices {
|
||||
.doOnNext(this::load)
|
||||
.subscribeOn(Schedulers.from(mSingleThreadExecutor))
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(EmptyObservers.consumer(), t -> {
|
||||
.subscribe(Observers.consumer(), t -> {
|
||||
mLoadThrowable = t;
|
||||
t.printStackTrace();
|
||||
});
|
||||
|
||||
@ -11,7 +11,7 @@ import org.autojs.autojs.App;
|
||||
import org.autojs.autojs.storage.database.IntentTaskDatabase;
|
||||
import org.autojs.autojs.storage.database.ModelChange;
|
||||
import org.autojs.autojs.storage.database.TimedTaskDatabase;
|
||||
import org.autojs.autojs.tool.EmptyObservers;
|
||||
import org.autojs.autojs.tool.Observers;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ -58,11 +58,11 @@ public class TimedTaskManager {
|
||||
return;
|
||||
if (task.isDisposable()) {
|
||||
mTimedTaskDatabase.delete(task)
|
||||
.subscribe(EmptyObservers.consumer(), Throwable::printStackTrace);
|
||||
.subscribe(Observers.consumer(), Throwable::printStackTrace);
|
||||
} else {
|
||||
task.setScheduled(false);
|
||||
mTimedTaskDatabase.update(task)
|
||||
.subscribe(EmptyObservers.consumer(), Throwable::printStackTrace);
|
||||
.subscribe(Observers.consumer(), Throwable::printStackTrace);
|
||||
}
|
||||
}
|
||||
|
||||
@ -70,13 +70,13 @@ public class TimedTaskManager {
|
||||
public void removeTask(TimedTask timedTask) {
|
||||
TimedTaskScheduler.cancel(mContext, timedTask);
|
||||
mTimedTaskDatabase.delete(timedTask)
|
||||
.subscribe(EmptyObservers.consumer(), Throwable::printStackTrace);
|
||||
.subscribe(Observers.consumer(), Throwable::printStackTrace);
|
||||
}
|
||||
|
||||
@SuppressLint("CheckResult")
|
||||
public void addTask(TimedTask timedTask) {
|
||||
mTimedTaskDatabase.insert(timedTask)
|
||||
.subscribe(EmptyObservers.consumer(), Throwable::printStackTrace);;
|
||||
.subscribe(Observers.consumer(), Throwable::printStackTrace);;
|
||||
TimedTaskScheduler.scheduleTaskIfNeeded(mContext, timedTask);
|
||||
}
|
||||
|
||||
@ -119,7 +119,7 @@ public class TimedTaskManager {
|
||||
public void notifyTaskScheduled(TimedTask timedTask) {
|
||||
timedTask.setScheduled(true);
|
||||
mTimedTaskDatabase.update(timedTask)
|
||||
.subscribe(EmptyObservers.consumer(), Throwable::printStackTrace);
|
||||
.subscribe(Observers.consumer(), Throwable::printStackTrace);
|
||||
|
||||
}
|
||||
|
||||
@ -134,7 +134,7 @@ public class TimedTaskManager {
|
||||
@SuppressLint("CheckResult")
|
||||
public void updateTask(TimedTask task) {
|
||||
mTimedTaskDatabase.update(task)
|
||||
.subscribe(EmptyObservers.consumer(), Throwable::printStackTrace);
|
||||
.subscribe(Observers.consumer(), Throwable::printStackTrace);
|
||||
TimedTaskScheduler.cancel(mContext, task);
|
||||
TimedTaskScheduler.scheduleTaskIfNeeded(mContext, task);
|
||||
}
|
||||
|
||||
@ -1,15 +0,0 @@
|
||||
package org.autojs.autojs.tool;
|
||||
|
||||
import io.reactivex.functions.Consumer;
|
||||
|
||||
public class EmptyObservers {
|
||||
|
||||
private static final Consumer CONSUMER = ignored -> {
|
||||
|
||||
};
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public static <T> Consumer<T> consumer() {
|
||||
return CONSUMER;
|
||||
}
|
||||
}
|
||||
27
app/src/main/java/org/autojs/autojs/tool/Observers.java
Normal file
27
app/src/main/java/org/autojs/autojs/tool/Observers.java
Normal file
@ -0,0 +1,27 @@
|
||||
package org.autojs.autojs.tool;
|
||||
|
||||
import com.stardust.app.GlobalAppContext;
|
||||
|
||||
import io.reactivex.functions.Consumer;
|
||||
|
||||
public class Observers {
|
||||
|
||||
private static final Consumer CONSUMER = ignored -> {
|
||||
|
||||
};
|
||||
|
||||
private static final Consumer<Throwable> TOAST_MESSAGE = e -> {
|
||||
e.printStackTrace();
|
||||
GlobalAppContext.toast(e.getMessage());
|
||||
};
|
||||
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public static <T> Consumer<T> consumer() {
|
||||
return CONSUMER;
|
||||
}
|
||||
|
||||
public static Consumer<Throwable> toastMessage() {
|
||||
return TOAST_MESSAGE;
|
||||
}
|
||||
}
|
||||
@ -10,7 +10,6 @@ import android.util.Log;
|
||||
import android.view.ActionMode;
|
||||
import android.view.Menu;
|
||||
import android.view.MenuItem;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.stardust.app.OnActivityResultDelegate;
|
||||
import com.stardust.autojs.core.permission.OnRequestPermissionsResultCallback;
|
||||
@ -21,7 +20,7 @@ import com.stardust.pio.PFiles;
|
||||
|
||||
import org.autojs.autojs.R;
|
||||
import org.autojs.autojs.storage.file.TmpScriptFiles;
|
||||
import org.autojs.autojs.tool.EmptyObservers;
|
||||
import org.autojs.autojs.tool.Observers;
|
||||
import org.autojs.autojs.ui.BaseActivity;
|
||||
import org.autojs.autojs.theme.dialog.ThemeColorMaterialDialogBuilder;
|
||||
|
||||
@ -82,7 +81,7 @@ EditActivity extends BaseActivity implements OnActivityResultDelegate.DelegateHo
|
||||
void setUpViews() {
|
||||
mEditorView.handleIntent(getIntent())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(EmptyObservers.consumer(),
|
||||
.subscribe(Observers.consumer(),
|
||||
ex -> onLoadFileError(ex.getMessage()));
|
||||
mEditorMenu = new EditorMenu(mEditorView);
|
||||
setUpToolbar();
|
||||
|
||||
@ -22,6 +22,7 @@ import android.view.Gravity;
|
||||
import android.view.View;
|
||||
import android.widget.FrameLayout;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import com.afollestad.materialdialogs.MaterialDialog;
|
||||
import com.stardust.autojs.engine.JavaScriptEngine;
|
||||
@ -45,6 +46,7 @@ import org.autojs.autojs.model.autocomplete.Symbols;
|
||||
import org.autojs.autojs.model.indices.Module;
|
||||
import org.autojs.autojs.model.indices.Property;
|
||||
import org.autojs.autojs.model.script.Scripts;
|
||||
import org.autojs.autojs.tool.Observers;
|
||||
import org.autojs.autojs.ui.doc.ManualDialog;
|
||||
import org.autojs.autojs.ui.edit.completion.CodeCompletionBar;
|
||||
import org.autojs.autojs.ui.edit.debug.DebugBar;
|
||||
@ -384,7 +386,7 @@ public class EditorView extends FrameLayout implements CodeCompletionBar.OnHintC
|
||||
@SuppressLint("CheckResult")
|
||||
public void runAndSaveFileIfNeeded() {
|
||||
save().observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(s -> run(true));
|
||||
.subscribe(s -> run(true), Observers.toastMessage());
|
||||
}
|
||||
|
||||
public ScriptExecution run(boolean showMessage) {
|
||||
@ -434,8 +436,14 @@ public class EditorView extends FrameLayout implements CodeCompletionBar.OnHintC
|
||||
}
|
||||
}
|
||||
|
||||
@SuppressLint("CheckResult")
|
||||
public void saveFile() {
|
||||
save().subscribe();
|
||||
save()
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(Observers.consumer(), e -> {
|
||||
e.printStackTrace();
|
||||
Toast.makeText(getContext(), e.getMessage(), Toast.LENGTH_SHORT).show();
|
||||
});
|
||||
}
|
||||
|
||||
void findNext() {
|
||||
|
||||
@ -4,6 +4,7 @@ import android.annotation.SuppressLint;
|
||||
import android.content.Context;
|
||||
import android.graphics.drawable.GradientDrawable;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.design.widget.Snackbar;
|
||||
import android.support.v4.widget.SwipeRefreshLayout;
|
||||
import android.support.v7.widget.GridLayoutManager;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
@ -34,6 +35,7 @@ import org.autojs.autojs.model.explorer.WorkspaceFileProvider;
|
||||
import org.autojs.autojs.model.sample.SampleFile;
|
||||
import org.autojs.autojs.model.script.ScriptFile;
|
||||
import org.autojs.autojs.model.script.Scripts;
|
||||
import org.autojs.autojs.tool.Observers;
|
||||
import org.autojs.autojs.ui.project.BuildActivity;
|
||||
import org.autojs.autojs.ui.project.BuildActivity_;
|
||||
import org.autojs.autojs.ui.common.ScriptLoopDialog;
|
||||
@ -313,7 +315,12 @@ public class ExplorerView extends ThemeColorSwipeRefreshLayout implements SwipeR
|
||||
sort(ExplorerItemList.SORT_TYPE_SIZE, mDirSortMenuShowing);
|
||||
break;
|
||||
case R.id.reset:
|
||||
// WorkspaceFileProvider.resetSample(mSelectedItem.toScriptFile());
|
||||
Explorers.Providers.workspace().resetSample(mSelectedItem.toScriptFile())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(ignored -> {
|
||||
Snackbar.make(this, R.string.text_reset_succeed, Snackbar.LENGTH_SHORT).show();
|
||||
}, Observers.toastMessage());
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
@ -496,8 +503,8 @@ public class ExplorerView extends ThemeColorSwipeRefreshLayout implements SwipeR
|
||||
if (!mExplorerItem.canRename()) {
|
||||
menu.removeItem(R.id.rename);
|
||||
}
|
||||
if (mExplorerItem instanceof ExplorerSampleItem) {
|
||||
|
||||
if (!(mExplorerItem instanceof ExplorerSampleItem)) {
|
||||
menu.removeItem(R.id.reset);
|
||||
}
|
||||
popupMenu.setOnMenuItemClickListener(ExplorerView.this);
|
||||
popupMenu.show();
|
||||
|
||||
@ -134,7 +134,7 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
|
||||
}
|
||||
|
||||
private void checkPermissions() {
|
||||
checkPermission(Manifest.permission.READ_EXTERNAL_STORAGE);
|
||||
checkPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE);
|
||||
}
|
||||
|
||||
private void showAccessibilitySettingPromptIfDisabled() {
|
||||
|
||||
@ -26,7 +26,7 @@ import org.autojs.autojs.R;
|
||||
import org.autojs.autojs.external.foreground.ForegroundService;
|
||||
import org.autojs.autojs.network.GlideApp;
|
||||
import org.autojs.autojs.network.UserService;
|
||||
import org.autojs.autojs.tool.EmptyObservers;
|
||||
import org.autojs.autojs.tool.Observers;
|
||||
import org.autojs.autojs.ui.common.NotAskAgainDialog;
|
||||
import org.autojs.autojs.ui.floating.CircularMenu;
|
||||
import org.autojs.autojs.ui.floating.FloatyWindowManger;
|
||||
@ -279,7 +279,7 @@ public class DrawerFragment extends android.support.v4.app.Fragment {
|
||||
.input("", host, (dialog, input) -> {
|
||||
Pref.saveServerAddress(input.toString());
|
||||
DevPluginService.getInstance().connectToServer(input.toString())
|
||||
.subscribe(EmptyObservers.consumer(), this::onConnectException);
|
||||
.subscribe(Observers.consumer(), this::onConnectException);
|
||||
})
|
||||
.neutralText(R.string.text_help)
|
||||
.onNeutral((dialog, which) -> {
|
||||
|
||||
@ -17,7 +17,9 @@
|
||||
android:id="@+id/send"
|
||||
android:title="@string/text_send"/>
|
||||
|
||||
|
||||
<item
|
||||
android:id="@+id/reset"
|
||||
android:title="@string/text_reset_to_initial_content"/>
|
||||
<item
|
||||
android:id="@+id/more"
|
||||
android:title="@string/text_more">
|
||||
|
||||
@ -41,4 +41,6 @@ public class Gravities {
|
||||
return gravity;
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user