Skip to content

Commit

Permalink
feat(app): supports changing default script dir path
Browse files Browse the repository at this point in the history
  • Loading branch information
hyb1996 committed Jun 3, 2018
1 parent 7036fa9 commit 023b8a7
Show file tree
Hide file tree
Showing 22 changed files with 281 additions and 34 deletions.
Binary file modified .idea/caches/build_file_checksums.ser
Binary file not shown.
4 changes: 2 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ android {
applicationId "org.autojs.autojs"
minSdkVersion 17
targetSdkVersion 23
versionCode 401
versionName "4.0.0 Alpha1"
versionCode 403
versionName "4.0.0 Beta"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
ndk {
Expand Down
2 changes: 1 addition & 1 deletion app/release/output.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":56},"path":"inrt-release.apk","properties":{"packageId":"com.stardust.auojs.inrt","split":"","minSdkVersion":"17"}}]
[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":201},"path":"inrt-release.apk","properties":{"packageId":"com.stardust.auojs.inrt","split":"","minSdkVersion":"17"}}]
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
auto();
events.observeNotification();
events.observeToast();
events.onToast(function(toast){
var pkg = toast.getPackageName();
log("Toast内容: " + toast.getText() +
Expand Down
10 changes: 8 additions & 2 deletions app/src/main/java/org/autojs/autojs/Pref.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

import com.stardust.app.GlobalAppContext;
import com.stardust.autojs.runtime.accessibility.AccessibilityConfig;

import org.autojs.autojs.autojs.key.GlobalKeyObserver;

import java.util.concurrent.TimeUnit;
Expand Down Expand Up @@ -168,7 +169,12 @@ public static void setEditorTextSize(int value) {
def().edit().putInt(KEY_EDITOR_TEXT_SIZE, value).apply();
}

public static int getEditorTextSize(int defVlaue) {
return def().getInt(KEY_EDITOR_TEXT_SIZE, defVlaue);
public static int getEditorTextSize(int defValue) {
return def().getInt(KEY_EDITOR_TEXT_SIZE, defValue);
}

public static String getScriptDirPath() {
return def().getString(getString(R.string.key_script_dir_path),
getString(R.string.default_value_script_dir_path));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ public static boolean handleIntent(Context context, Intent intent) {
}
config.executePath(new File(path).getParent());
} else {
config.executePath(StorageFileProvider.DEFAULT_DIRECTORY_PATH);
config.executePath(StorageFileProvider.getDefaultDirectoryPath());
}
if (source == null) {
return false;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ void setUpViews() {
private void initScriptListRecyclerView() {
mStorageFileProvider = StorageFileProvider.getExternalStorageProvider();
ScriptListView scriptList = (ScriptListView) findViewById(R.id.script_list);
scriptList.setStorageFileProvider(mStorageFileProvider, new ScriptFile(StorageFileProvider.DEFAULT_DIRECTORY));
scriptList.setStorageFileProvider(mStorageFileProvider, new ScriptFile(StorageFileProvider.getDefaultDirectory()));
scriptList.setOnScriptFileClickListener((view, file) -> {
mSelectedScriptFilePath = file.getPath();
finish();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ private void initScriptListRecyclerView() {
mStorageFileProvider = StorageFileProvider.getExternalStorageProvider();
ScriptListView scriptList = (ScriptListView) findViewById(R.id.script_list);
scriptList.setStorageFileProvider(mStorageFileProvider);
scriptList.setCurrentDirectory(new ScriptFile(StorageFileProvider.DEFAULT_DIRECTORY));
scriptList.setCurrentDirectory(new ScriptFile(StorageFileProvider.getDefaultDirectory()));
scriptList.setOnScriptFileClickListener((view, file) -> {
mSelectedScriptFilePath = file.getPath();
finish();
Expand Down
7 changes: 3 additions & 4 deletions app/src/main/java/org/autojs/autojs/model/script/Scripts.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,8 @@
import com.stardust.autojs.execution.ScriptExecutionListener;
import com.stardust.autojs.execution.SimpleScriptExecutionListener;
import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
import com.stardust.autojs.script.JavaScriptFileSource;
import com.stardust.autojs.script.ScriptSource;
import org.autojs.autojs.App;

import org.autojs.autojs.R;
import org.autojs.autojs.autojs.AutoJs;
import org.autojs.autojs.external.ScriptIntents;
Expand Down Expand Up @@ -100,8 +99,8 @@ public static ScriptExecution run(ScriptFile file) {

public static ScriptExecution run(ScriptSource source) {
return AutoJs.getInstance().getScriptEngineService().execute(source, new ExecutionConfig()
.executePath(StorageFileProvider.DEFAULT_DIRECTORY_PATH)
.requirePath(StorageFileProvider.DEFAULT_DIRECTORY_PATH));
.executePath(StorageFileProvider.getDefaultDirectoryPath())
.requirePath(StorageFileProvider.getDefaultDirectoryPath()));
}

public static ScriptExecution runWithBroadcastSender(File file) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import com.stardust.autojs.execution.ScriptExecution;
import com.stardust.autojs.script.StringScriptSource;
import com.stardust.pio.PFiles;
import org.autojs.autojs.App;

import org.autojs.autojs.R;
import org.autojs.autojs.autojs.AutoJs;
import org.autojs.autojs.model.script.Scripts;
Expand Down Expand Up @@ -98,7 +98,7 @@ private void saveScript(String name, String script) {
if (!name.endsWith(".js")) {
name = name + ".js";
}
PFiles.write(StorageFileProvider.DEFAULT_DIRECTORY_PATH + name, script);
PFiles.write(StorageFileProvider.getDefaultDirectoryPath() + name, script);
GlobalAppContext.toast(R.string.text_script_save_successfully);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
package org.autojs.autojs.storage.file;

import com.stardust.pio.PFiles;

import org.apache.commons.io.FileUtils;

import java.io.File;
import java.io.IOException;

import io.reactivex.Observable;
import io.reactivex.Observer;

public class FileObservable {

public static Observable<File> copy(String fromPath, String toPath) {
return copy(fromPath, toPath, false);
}

public static Observable<File> move(String fromPath, String toPath) {
return copy(fromPath, toPath, true);
}

private static Observable<File> copy(String fromPath, String toPath, boolean deleteOld) {
return new Observable<File>() {
@Override
protected void subscribeActual(Observer<? super File> observer) {
try {
copy(new File(fromPath), new File(toPath), deleteOld, observer);
observer.onComplete();
} catch (IOException e) {
observer.onError(e);
}
}
};
}

private static void copyDir(File fromDir, File toDir, boolean deleteOld, Observer<? super File> progress) throws IOException {
if (!fromDir.isDirectory()) {
return;
}
File[] files = fromDir.listFiles();
if (files == null || files.length == 0) {
return;
}
for (File file : files) {
copy(file, new File(toDir, file.getName()), deleteOld, progress);
}
}

private static void copy(File fromFile, File toFile, boolean deleteOld, Observer<? super File> progress) throws IOException {
progress.onNext(fromFile);
if (fromFile.isDirectory()) {
copyDir(fromFile, toFile, deleteOld, progress);
} else {
PFiles.ensureDir(toFile.getPath());
FileUtils.copyFile(fromFile, toFile);
}
if (deleteOld) {
fromFile.delete();
}
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,10 @@

import com.stardust.app.GlobalAppContext;
import com.stardust.pio.PFile;
import org.autojs.autojs.App;

import org.autojs.autojs.Pref;
import org.autojs.autojs.R;

import com.stardust.util.LimitedHashMap;

import org.greenrobot.eventbus.EventBus;
Expand All @@ -28,8 +30,7 @@ public class StorageFileProvider {
public static final int CREATE = 1;
public static final int CHANGE = 2;
public static final int ALL = 3;
public static final String DEFAULT_DIRECTORY_PATH = Environment.getExternalStorageDirectory() + GlobalAppContext.getString(R.string.folder_name);
public static final PFile DEFAULT_DIRECTORY = new PFile(DEFAULT_DIRECTORY_PATH);

public static final FileFilter SCRIPT_FILTER = file ->
file.isDirectory() || file.getName().endsWith(".js") || file.getName().endsWith(".auto");

Expand Down Expand Up @@ -74,8 +75,10 @@ public PFile getNewFile() {
}


private static final PFile INITIAL_DIRECTORY_DEFAULT = new PFile("");

private static StorageFileProvider externalStorageProvider;
private static final StorageFileProvider DEFAULT_PROVIDER = new StorageFileProvider(DEFAULT_DIRECTORY, 10, SCRIPT_FILTER);
private static final StorageFileProvider DEFAULT_PROVIDER = new StorageFileProvider(INITIAL_DIRECTORY_DEFAULT, 10, SCRIPT_FILTER);

private EventBus mDirectoryEventBus = new EventBus();
private LimitedHashMap<String, List<PFile>> mPFileCache;
Expand All @@ -99,7 +102,15 @@ public StorageFileProvider(PFile initialDirectory, int cacheSize) {
}

public StorageFileProvider() {
this(DEFAULT_DIRECTORY, 10);
this(getDefaultDirectory(), 10);
}

public static String getDefaultDirectoryPath() {
return getDefaultDirectory().getPath();
}

public static PFile getDefaultDirectory() {
return new PFile(Environment.getExternalStorageDirectory(), Pref.getScriptDirPath());
}

public static StorageFileProvider getDefault() {
Expand Down Expand Up @@ -149,25 +160,28 @@ public void notifyFileCreated(PFile dir, PFile file) {

public void notifyStoragePermissionGranted() {
mPFileCache.clear();
mDirectoryEventBus.post(new DirectoryChangeEvent(mInitialDirectory));
mDirectoryEventBus.post(new DirectoryChangeEvent(getInitialDirectory()));
}

@SuppressWarnings("unchecked")
public void refreshAll() {
Map<String, PFile> files = (Map<String, PFile>) mPFileCache.clone();
mPFileCache.clear();
mDirectoryEventBus.post(new DirectoryChangeEvent(mInitialDirectory));
mDirectoryEventBus.post(new DirectoryChangeEvent(getInitialDirectory()));
for (Map.Entry<String, PFile> file : files.entrySet()) {
mDirectoryEventBus.post(new DirectoryChangeEvent(new PFile(file.getKey())));
}
}

public PFile getInitialDirectory() {
if (mInitialDirectory == INITIAL_DIRECTORY_DEFAULT) {
return getDefaultDirectory();
}
return mInitialDirectory;
}

public Observable<PFile> getInitialDirectoryFiles() {
return getDirectoryFiles(mInitialDirectory);
return getDirectoryFiles(getInitialDirectory());
}

public Observable<PFile> getDirectoryFiles(PFile directory) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ private void downloadPlugin() {
private void setupWithSourceFile(ScriptFile file) {
String dir = file.getParent();
if (dir.startsWith(getFilesDir().getPath())) {
dir = StorageFileProvider.DEFAULT_DIRECTORY_PATH;
dir = StorageFileProvider.getDefaultDirectoryPath();
}
mOutputPath.setText(dir);
mAppName.setText(file.getSimplifiedName());
Expand All @@ -168,7 +168,7 @@ void selectSourceFilePath() {
new FileChooserDialogBuilder(this)
.title(R.string.text_source_file_path)
.dir(Environment.getExternalStorageDirectory().getPath(),
initialDir == null ? StorageFileProvider.DEFAULT_DIRECTORY_PATH : initialDir)
initialDir == null ? StorageFileProvider.getDefaultDirectoryPath() : initialDir)
.singleChoice(this::setSource)
.show();
}
Expand All @@ -190,7 +190,7 @@ private void setSource(File file) {
@Click(R.id.select_output)
void selectOutputDirPath() {
String initialDir = new File(mOutputPath.getText().toString()).exists() ?
mOutputPath.getText().toString() : StorageFileProvider.DEFAULT_DIRECTORY_PATH;
mOutputPath.getText().toString() : StorageFileProvider.getDefaultDirectoryPath();
new FileChooserDialogBuilder(this)
.title(R.string.text_output_apk_path)
.dir(initialDir)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ public ScriptOperations(Context context, View view, ScriptFile currentDirectory)
}

public ScriptOperations(Context context, View view) {
this(context, view, new ScriptFile(StorageFileProvider.DEFAULT_DIRECTORY));
this(context, view, new ScriptFile(StorageFileProvider.getDefaultDirectory()));
}

public void newScriptFileForScript(final String script) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ public interface MultiChoiceCallback {
}

private FileChooseListView mFileChooseListView;
private PFile mRootDir = StorageFileProvider.DEFAULT_DIRECTORY;
private PFile mRootDir = StorageFileProvider.getDefaultDirectory();
private MultiChoiceCallback mCallback;

public FileChooserDialogBuilder(@NonNull Context context) {
Expand All @@ -59,7 +59,7 @@ private void notifySelected() {

public FileChooserDialogBuilder dir(String rootDir, String initialDir) {
mRootDir = new PFile(rootDir);
if (mRootDir.equals(StorageFileProvider.DEFAULT_DIRECTORY)) {
if (mRootDir.equals(StorageFileProvider.getDefaultDirectory())) {
mFileChooseListView.setStorageFileProvider(StorageFileProvider.getDefault());
} else {
mFileChooseListView.setStorageFileProvider(new StorageFileProvider(mRootDir, 10), new ScriptFile(initialDir));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import android.support.design.widget.BottomSheetDialog;
import android.support.design.widget.Snackbar;
import android.util.AttributeSet;
import android.view.View;
import android.webkit.ValueCallback;
import android.webkit.WebView;

Expand Down Expand Up @@ -126,7 +125,7 @@ public boolean openFileChooser(ValueCallback<Uri> callback, String[] acceptType)
}
new FileChooserDialogBuilder(getContext())
.title(R.string.text_select_file_to_upload)
.dir(StorageFileProvider.DEFAULT_DIRECTORY_PATH)
.dir(StorageFileProvider.getDefaultDirectoryPath())
.singleChoice(file -> callback.onReceiveValue(Uri.fromFile(file)))
.cancelListener(dialog -> callback.onReceiveValue(null))
.show();
Expand Down
Loading

0 comments on commit 023b8a7

Please sign in to comment.