From 04bffdc425164cfeaa23b699a1128c89ca1688bd Mon Sep 17 00:00:00 2001 From: hyb1996 <946994919@qq.com> Date: Mon, 17 Sep 2018 15:32:11 +0800 Subject: [PATCH] save works --- .idea/caches/build_file_checksums.ser | Bin 733 -> 733 bytes app/src/main/AndroidManifest.xml | 5 +- .../autojs/build/ApkBuilderPluginHelper.java | 3 +- .../autojs/model/explorer/Explorer.java | 5 +- .../model/explorer/ExplorerChangeEvent.java | 12 +- .../model/explorer/ExplorerDirPage.java | 20 +- .../model/explorer/ExplorerFileItem.java | 14 +- .../autojs/model/explorer/ExplorerItem.java | 5 + .../model/explorer/ExplorerProjectPage.java | 29 +++ .../model/explorer/ExplorerSamleItem.java | 29 +++ .../autojs/model/explorer/IExplorerPage.java | 4 - .../model/explorer/WorkspaceFileProvider.java | 38 ++- .../autojs/model/project/ProjectTemplate.java | 37 +++ .../org/autojs/autojs/ui/BaseActivity.java | 6 +- .../autojs/ui/common/ScriptOperations.java | 20 +- .../org/autojs/autojs/ui/edit/EditorMenu.java | 5 +- .../ui/explorer/ExplorerViewHelper.java | 4 + .../ui/filechooser/FileChooseListView.java | 2 +- .../autojs/ui/main/FloatingActionMenu.java | 5 +- .../autojs/autojs/ui/main/MainActivity.java | 2 +- .../autojs/ui/main/scripts/ExplorerView.java | 23 +- .../ui/main/scripts/MyScriptListFragment.java | 7 + .../ui/{build => project}/BuildActivity.java | 2 +- .../ui/project/ProjectConfigActivity.java | 125 ++++++++++ .../autojs/ui/settings/SettingsActivity.java | 23 +- .../autojs/ui/splash/SplashActivity.java | 28 ++- app/src/main/res/drawable/ic_project.png | Bin 0 -> 6971 bytes .../res/layout/activity_project_config.xml | 224 ++++++++++++++++++ .../res/layout/file_choose_list_directory.xml | 1 + app/src/main/res/menu/menu_script_options.xml | 4 +- app/src/main/res/values/strings.xml | 7 + .../autojs/project/ProjectConfig.java | 3 +- 32 files changed, 608 insertions(+), 84 deletions(-) create mode 100644 app/src/main/java/org/autojs/autojs/model/explorer/ExplorerProjectPage.java create mode 100644 app/src/main/java/org/autojs/autojs/model/explorer/ExplorerSamleItem.java delete mode 100644 app/src/main/java/org/autojs/autojs/model/explorer/IExplorerPage.java create mode 100644 app/src/main/java/org/autojs/autojs/model/project/ProjectTemplate.java rename app/src/main/java/org/autojs/autojs/ui/{build => project}/BuildActivity.java (99%) create mode 100644 app/src/main/java/org/autojs/autojs/ui/project/ProjectConfigActivity.java create mode 100644 app/src/main/res/drawable/ic_project.png create mode 100644 app/src/main/res/layout/activity_project_config.xml diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index db0c40bccc96ab1e017a72cc9c2d93db4206f9dc..db349d8c7ab73bc815199cde57a57947706c77ee 100644 GIT binary patch delta 98 zcmV-o0GFUZm;~h}^-GbQcM#^Tyi!^oJ#4QxmmmRF-?@_`0hADGR$^Rwntfn5 zjHH&5+;#|)#{qc|z*m9*T8^o%-Pn(JPkk`7lTZR45IofbHLa|VVXDhfaHl!SdXs(v EUvcOwiU0rr delta 98 zcmV-o0GFUZm;~Nh7)+6zcMxM?PjGpoU2d=Bqh3avjun$50hAEkV!1BLQ>o_L zjPfRp6JofN#{qc|(?GG}j>(=SBE90{q%m=$lTZR45IwePWly%vn~smDYADU$q?3LE EU(*>bwEzGB diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 8d953578..ef88f4bd 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -35,7 +35,7 @@ tools:replace="android:label, android:icon, android:allowBackup"> @@ -96,7 +96,8 @@ android:name=".ui.user.RegisterActivity_" android:windowSoftInputMode="adjustResize"/> - + + diff --git a/app/src/main/java/org/autojs/autojs/build/ApkBuilderPluginHelper.java b/app/src/main/java/org/autojs/autojs/build/ApkBuilderPluginHelper.java index f7e81676..ea11a20b 100644 --- a/app/src/main/java/org/autojs/autojs/build/ApkBuilderPluginHelper.java +++ b/app/src/main/java/org/autojs/autojs/build/ApkBuilderPluginHelper.java @@ -3,11 +3,10 @@ package org.autojs.autojs.build; import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; -import android.os.Build; import com.stardust.pio.UncheckedIOException; import org.autojs.autojs.BuildConfig; -import org.autojs.autojs.ui.build.BuildActivity; + import com.stardust.util.DeveloperUtils; import java.io.IOException; diff --git a/app/src/main/java/org/autojs/autojs/model/explorer/Explorer.java b/app/src/main/java/org/autojs/autojs/model/explorer/Explorer.java index 4b19386c..0e922610 100644 --- a/app/src/main/java/org/autojs/autojs/model/explorer/Explorer.java +++ b/app/src/main/java/org/autojs/autojs/model/explorer/Explorer.java @@ -84,7 +84,7 @@ public class Explorer { public Single fetchChildren(ExplorerPage page) { - ExplorerPage cachedGroup = mExplorerPageLruCache.get(page.getPath()); + ExplorerPage cachedGroup = mExplorerPageLruCache == null ? null : mExplorerPageLruCache.get(page.getPath()); if (cachedGroup != null) { page.copyChildren(cachedGroup); return Single.just(page); @@ -92,7 +92,8 @@ public class Explorer { return mExplorerProvider.getExplorerPage(page) .observeOn(AndroidSchedulers.mainThread()) .map(g -> { - mExplorerPageLruCache.put(g.getPath(), g); + if (mExplorerPageLruCache != null) + mExplorerPageLruCache.put(g.getPath(), g); page.copyChildren(g); return page; }); diff --git a/app/src/main/java/org/autojs/autojs/model/explorer/ExplorerChangeEvent.java b/app/src/main/java/org/autojs/autojs/model/explorer/ExplorerChangeEvent.java index cb0ca72c..f2a20b36 100644 --- a/app/src/main/java/org/autojs/autojs/model/explorer/ExplorerChangeEvent.java +++ b/app/src/main/java/org/autojs/autojs/model/explorer/ExplorerChangeEvent.java @@ -10,15 +10,15 @@ public class ExplorerChangeEvent { private final int mAction; private final ExplorerItem mItem; private final ExplorerItem mNewItem; - private final ExplorerPage mItemGroup; + private final ExplorerPage mPage; - public ExplorerChangeEvent(ExplorerPage itemGroup) { - this(itemGroup, CHANGE, null, null); + public ExplorerChangeEvent(ExplorerPage page) { + this(page, CHANGE, null, null); } public ExplorerChangeEvent(ExplorerPage parent, int action, ExplorerItem oldItem, ExplorerItem newItem) { mAction = action; - mItemGroup = parent; + mPage = parent; mNewItem = newItem; mItem = oldItem; } @@ -43,7 +43,7 @@ public class ExplorerChangeEvent { return mNewItem; } - public ExplorerPage getItemGroup() { - return mItemGroup; + public ExplorerPage getPage() { + return mPage; } } diff --git a/app/src/main/java/org/autojs/autojs/model/explorer/ExplorerDirPage.java b/app/src/main/java/org/autojs/autojs/model/explorer/ExplorerDirPage.java index 7348c169..0c2d78af 100644 --- a/app/src/main/java/org/autojs/autojs/model/explorer/ExplorerDirPage.java +++ b/app/src/main/java/org/autojs/autojs/model/explorer/ExplorerDirPage.java @@ -42,8 +42,19 @@ public class ExplorerDirPage extends ExplorerFileItem implements ExplorerPage { } } + protected int indexOf(ExplorerItem child){ + int i = 0; + for(ExplorerItem item : mChildren){ + if(item.getPath().equals(child.getPath())){ + return i; + } + i++; + } + return -1; + } + public boolean updateChild(ExplorerItem oldItem, ExplorerItem newItem) { - int i = mChildren.indexOf(oldItem); + int i = indexOf(oldItem); if (i < 0) { return false; } @@ -52,7 +63,12 @@ public class ExplorerDirPage extends ExplorerFileItem implements ExplorerPage { } public boolean removeChild(ExplorerItem item) { - return mChildren.remove(item); + int i = indexOf(item); + if(i < 0){ + return false; + } + mChildren.remove(i); + return true; } public void addChild(ExplorerItem item) { diff --git a/app/src/main/java/org/autojs/autojs/model/explorer/ExplorerFileItem.java b/app/src/main/java/org/autojs/autojs/model/explorer/ExplorerFileItem.java index f47b03af..9ad49533 100644 --- a/app/src/main/java/org/autojs/autojs/model/explorer/ExplorerFileItem.java +++ b/app/src/main/java/org/autojs/autojs/model/explorer/ExplorerFileItem.java @@ -1,7 +1,5 @@ package org.autojs.autojs.model.explorer; -import android.graphics.Color; - import com.stardust.pio.PFile; import org.autojs.autojs.model.script.ScriptFile; @@ -52,6 +50,16 @@ public class ExplorerFileItem implements ExplorerItem { return mFile.lastModified(); } + @Override + public boolean canDelete() { + return mFile.canWrite(); + } + + @Override + public boolean canRename() { + return mFile.canWrite(); + } + @Override public String getType() { if(mFile.isDirectory()){ @@ -73,7 +81,7 @@ public class ExplorerFileItem implements ExplorerItem { @Override public boolean isEditable() { String type = getType(); - return type.equals("js") || type.equals("json") || type.equals("xml"); + return !type.equals(TYPE_AUTO_FILE) && !type.equals(TYPE_APK); } @Override diff --git a/app/src/main/java/org/autojs/autojs/model/explorer/ExplorerItem.java b/app/src/main/java/org/autojs/autojs/model/explorer/ExplorerItem.java index 60507f0f..0f8c6b3e 100644 --- a/app/src/main/java/org/autojs/autojs/model/explorer/ExplorerItem.java +++ b/app/src/main/java/org/autojs/autojs/model/explorer/ExplorerItem.java @@ -10,6 +10,7 @@ public interface ExplorerItem { String TYPE_JSON = "json"; String TYPE_XML = "xml"; String TYPE_UNKNOWN = "?"; + String TYPE_APK = "apk"; String getName(); @@ -19,6 +20,10 @@ public interface ExplorerItem { long lastModified(); + boolean canDelete(); + + boolean canRename(); + String getType(); long getSize(); diff --git a/app/src/main/java/org/autojs/autojs/model/explorer/ExplorerProjectPage.java b/app/src/main/java/org/autojs/autojs/model/explorer/ExplorerProjectPage.java new file mode 100644 index 00000000..7c52992b --- /dev/null +++ b/app/src/main/java/org/autojs/autojs/model/explorer/ExplorerProjectPage.java @@ -0,0 +1,29 @@ +package org.autojs.autojs.model.explorer; + +import com.stardust.autojs.project.ProjectConfig; +import com.stardust.pio.PFile; + +import java.io.File; + +public class ExplorerProjectPage extends ExplorerDirPage { + + private ProjectConfig mProjectConfig; + + public ExplorerProjectPage(PFile file, ExplorerPage parent, ProjectConfig projectConfig) { + super(file, parent); + mProjectConfig = projectConfig; + } + + public ExplorerProjectPage(String path, ExplorerPage parent, ProjectConfig projectConfig) { + super(path, parent); + mProjectConfig = projectConfig; + } + + public ExplorerProjectPage(File file, ExplorerPage parent, ProjectConfig projectConfig) { + super(file, parent); + mProjectConfig = projectConfig; + } + + + +} diff --git a/app/src/main/java/org/autojs/autojs/model/explorer/ExplorerSamleItem.java b/app/src/main/java/org/autojs/autojs/model/explorer/ExplorerSamleItem.java new file mode 100644 index 00000000..f469acd9 --- /dev/null +++ b/app/src/main/java/org/autojs/autojs/model/explorer/ExplorerSamleItem.java @@ -0,0 +1,29 @@ +package org.autojs.autojs.model.explorer; + +import com.stardust.pio.PFile; + +import java.io.File; + +public class ExplorerSamleItem extends ExplorerFileItem { + public ExplorerSamleItem(PFile file, ExplorerPage parent) { + super(file, parent); + } + + public ExplorerSamleItem(String path, ExplorerPage parent) { + super(path, parent); + } + + public ExplorerSamleItem(File file, ExplorerPage parent) { + super(file, parent); + } + + @Override + public boolean canDelete() { + return false; + } + + @Override + public boolean canRename() { + return false; + } +} diff --git a/app/src/main/java/org/autojs/autojs/model/explorer/IExplorerPage.java b/app/src/main/java/org/autojs/autojs/model/explorer/IExplorerPage.java deleted file mode 100644 index 116d6cbf..00000000 --- a/app/src/main/java/org/autojs/autojs/model/explorer/IExplorerPage.java +++ /dev/null @@ -1,4 +0,0 @@ -package org.autojs.autojs.model.explorer; - -public interface IExplorerPage { -} diff --git a/app/src/main/java/org/autojs/autojs/model/explorer/WorkspaceFileProvider.java b/app/src/main/java/org/autojs/autojs/model/explorer/WorkspaceFileProvider.java index e5da7ab3..403cad93 100644 --- a/app/src/main/java/org/autojs/autojs/model/explorer/WorkspaceFileProvider.java +++ b/app/src/main/java/org/autojs/autojs/model/explorer/WorkspaceFileProvider.java @@ -3,6 +3,7 @@ package org.autojs.autojs.model.explorer; import android.content.Context; import android.content.res.AssetManager; +import com.stardust.autojs.project.ProjectConfig; import com.stardust.pio.PFile; import com.stardust.pio.PFiles; @@ -38,22 +39,35 @@ public class WorkspaceFileProvider extends ExplorerFileProvider { String path = page.getPath(); return listFiles(new PFile(path)) .collectInto(createExplorerPage(path, parent), (p, file) -> { - if(file.isDirectory()){ - if(file.getPath().startsWith(mSampleDir.getPath())){ + if (file.isDirectory()) { + ProjectConfig projectConfig = ProjectConfig.fromProjectDir(file.getPath()); + if (projectConfig != null) { + p.addChild(new ExplorerProjectPage(file, parent, projectConfig)); + return; + } + if (inSampleDir(file)) { p.addChild(new ExplorerSamplePage(file, p)); - }else { + } else { p.addChild(new ExplorerDirPage(file, p)); } - }else { - p.addChild(new ExplorerFileItem(file, p)); + } else { + if (file.getPath().startsWith(mSampleDir.getPath())) { + p.addChild(new ExplorerSamleItem(file, p)); + } else { + p.addChild(new ExplorerFileItem(file, p)); + } } }) .subscribeOn(Schedulers.io()); } + private boolean inSampleDir(PFile file) { + return file.getPath().startsWith(mSampleDir.getPath()); + } + @Override protected Observable listFiles(PFile directory) { - if (directory.getPath().startsWith(mSampleDir.getPath())) { + if (inSampleDir(directory)) { return listSamples(directory); } return super.listFiles(directory); @@ -61,9 +75,9 @@ public class WorkspaceFileProvider extends ExplorerFileProvider { private Observable listSamples(PFile directory) { String pathOfSample; - if(directory.getPath().length() <= mSampleDir.getPath().length() + 1){ + if (directory.getPath().length() <= mSampleDir.getPath().length() + 1) { pathOfSample = ""; - }else { + } else { pathOfSample = directory.getPath().substring(mSampleDir.getPath().length()); } String pathOfAsset = SAMPLE_PATH + pathOfSample; @@ -71,13 +85,13 @@ public class WorkspaceFileProvider extends ExplorerFileProvider { .flatMap(path -> Observable.fromArray(mAssetManager.list(path))) .map(child -> { PFile file = new PFile(new File(directory, child).getPath()); - if(file.exists()){ - return file; + if (file.exists()) { + return file; } try { InputStream stream = mAssetManager.open(pathOfAsset + "/" + child); PFiles.copyStream(stream, file.getPath()); - }catch (FileNotFoundException e){ + } catch (FileNotFoundException e) { file.mkdirs(); } return file; @@ -88,7 +102,7 @@ public class WorkspaceFileProvider extends ExplorerFileProvider { protected ExplorerDirPage createExplorerPage(String path, ExplorerPage parent) { ExplorerDirPage page = super.createExplorerPage(path, parent); if (new File(path).equals(new File(Pref.getScriptDirPath()))) { - page.addChild( ExplorerSamplePage.createRoot(mSampleDir)); + page.addChild(ExplorerSamplePage.createRoot(mSampleDir)); } return page; } diff --git a/app/src/main/java/org/autojs/autojs/model/project/ProjectTemplate.java b/app/src/main/java/org/autojs/autojs/model/project/ProjectTemplate.java new file mode 100644 index 00000000..ebae7f36 --- /dev/null +++ b/app/src/main/java/org/autojs/autojs/model/project/ProjectTemplate.java @@ -0,0 +1,37 @@ +package org.autojs.autojs.model.project; + +import android.annotation.SuppressLint; + +import com.stardust.autojs.project.ProjectConfig; +import com.stardust.pio.PFiles; + +import java.io.File; + +import io.reactivex.Observable; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.schedulers.Schedulers; + +public class ProjectTemplate { + + + private final ProjectConfig mProjectConfig; + private final File mProjectDir; + + public ProjectTemplate(ProjectConfig projectConfig, File projectDir) { + mProjectConfig = projectConfig; + mProjectDir = projectDir; + } + + @SuppressLint("CheckResult") + public Observable newProject() { + return Observable.fromCallable(() -> { + mProjectDir.mkdirs(); + PFiles.write(ProjectConfig.configFileOfDir(mProjectDir.getPath()), mProjectConfig.toJson()); + new File(mProjectDir, mProjectConfig.getMainScriptFile()).createNewFile(); + return mProjectDir; + }) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()); + } + +} diff --git a/app/src/main/java/org/autojs/autojs/ui/BaseActivity.java b/app/src/main/java/org/autojs/autojs/ui/BaseActivity.java index ec76a8dc..bbc4f9be 100644 --- a/app/src/main/java/org/autojs/autojs/ui/BaseActivity.java +++ b/app/src/main/java/org/autojs/autojs/ui/BaseActivity.java @@ -13,6 +13,7 @@ import android.widget.SeekBar; import org.autojs.autojs.R; import org.autojs.autojs.network.VersionService; + import com.stardust.theme.ThemeColorManager; import com.stardust.util.BackPressedHandler; @@ -51,16 +52,19 @@ public abstract class BaseActivity extends AppCompatActivity { return (T) findViewById(resId); } - protected void checkPermission(String... permissions) { + protected boolean checkPermission(String... permissions) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { String[] requestPermissions = getRequestPermissions(permissions); if (requestPermissions.length > 0) { requestPermissions(requestPermissions, PERMISSION_REQUEST_CODE); + return false; } + return true; } else { int[] grantResults = new int[permissions.length]; Arrays.fill(grantResults, PERMISSION_GRANTED); onRequestPermissionsResult(PERMISSION_REQUEST_CODE, permissions, grantResults); + return false; } } diff --git a/app/src/main/java/org/autojs/autojs/ui/common/ScriptOperations.java b/app/src/main/java/org/autojs/autojs/ui/common/ScriptOperations.java index 793dc738..44427e1d 100644 --- a/app/src/main/java/org/autojs/autojs/ui/common/ScriptOperations.java +++ b/app/src/main/java/org/autojs/autojs/ui/common/ScriptOperations.java @@ -25,8 +25,10 @@ import org.autojs.autojs.Pref; import org.autojs.autojs.R; import org.autojs.autojs.external.ScriptIntents; import org.autojs.autojs.model.explorer.Explorer; +import org.autojs.autojs.model.explorer.ExplorerDirPage; import org.autojs.autojs.model.explorer.ExplorerFileItem; import org.autojs.autojs.model.explorer.ExplorerItem; +import org.autojs.autojs.model.explorer.ExplorerPage; import org.autojs.autojs.model.explorer.Explorers; import org.autojs.autojs.storage.file.TmpScriptFiles; import org.autojs.autojs.model.sample.SampleFile; @@ -58,7 +60,7 @@ import io.reactivex.subjects.PublishSubject; public class ScriptOperations { private static final String LOG_TAG = "ScriptOperations"; - private final ExplorerItem mExplorerItem; + private final ExplorerPage mExplorerPage; private Context mContext; private View mView; private ScriptFile mCurrentDirectory; @@ -69,15 +71,15 @@ public class ScriptOperations { mView = view; mCurrentDirectory = currentDirectory; mExplorer = Explorers.workspace(); - mExplorerItem = new ExplorerFileItem(currentDirectory, null); + mExplorerPage = new ExplorerDirPage(currentDirectory, null); } - public ScriptOperations(Context context, View view, ExplorerItem item) { + public ScriptOperations(Context context, View view, ExplorerPage page) { mContext = context; mView = view; - mCurrentDirectory = item.toScriptFile(); + mCurrentDirectory = page.toScriptFile(); mExplorer = Explorers.workspace(); - mExplorerItem = item; + mExplorerPage = page; } public ScriptOperations(Context context, View view) { @@ -118,7 +120,7 @@ public class ScriptOperations { } private void notifyFileCreated(ScriptFile directory, ScriptFile scriptFile) { - mExplorer.notifyItemCreated(new ExplorerFileItem(scriptFile, mExplorerItem.getParent())); + mExplorer.notifyItemCreated(new ExplorerFileItem(scriptFile, mExplorerPage)); } public void newScriptFile() { @@ -236,8 +238,8 @@ public class ScriptOperations { } private void notifyFileChanged(ScriptFile directory, ScriptFile oldFile, PFile newFile) { - mExplorer.notifyItemChanged(new ExplorerFileItem(oldFile, mExplorerItem.getParent()), - new ExplorerFileItem(newFile, mExplorerItem.getParent())); + mExplorer.notifyItemChanged(new ExplorerFileItem(oldFile, mExplorerPage), + new ExplorerFileItem(newFile, mExplorerPage)); } public void createShortcut(ScriptFile file) { @@ -270,7 +272,7 @@ public class ScriptOperations { } private void notifyFileRemoved(ScriptFile directory, ScriptFile scriptFile) { - mExplorer.notifyItemRemoved(new ExplorerFileItem(scriptFile, mExplorerItem.getParent())); + mExplorer.notifyItemRemoved(new ExplorerFileItem(scriptFile, mExplorerPage)); } diff --git a/app/src/main/java/org/autojs/autojs/ui/edit/EditorMenu.java b/app/src/main/java/org/autojs/autojs/ui/edit/EditorMenu.java index e3390c6a..15fededd 100644 --- a/app/src/main/java/org/autojs/autojs/ui/edit/EditorMenu.java +++ b/app/src/main/java/org/autojs/autojs/ui/edit/EditorMenu.java @@ -10,14 +10,13 @@ import android.widget.Toast; import com.afollestad.materialdialogs.MaterialDialog; import com.stardust.autojs.script.JavaScriptSource; -import com.stardust.autojs.script.ScriptSource; import com.stardust.pio.PFiles; import org.autojs.autojs.R; import org.autojs.autojs.model.indices.AndroidClass; import org.autojs.autojs.model.indices.ClassSearchingItem; -import org.autojs.autojs.ui.build.BuildActivity; -import org.autojs.autojs.ui.build.BuildActivity_; +import org.autojs.autojs.ui.project.BuildActivity; +import org.autojs.autojs.ui.project.BuildActivity_; import org.autojs.autojs.ui.common.NotAskAgainDialog; import org.autojs.autojs.ui.edit.editor.CodeEditor; import org.autojs.autojs.ui.log.LogActivity_; diff --git a/app/src/main/java/org/autojs/autojs/ui/explorer/ExplorerViewHelper.java b/app/src/main/java/org/autojs/autojs/ui/explorer/ExplorerViewHelper.java index 1b1f11cc..c1719b0b 100644 --- a/app/src/main/java/org/autojs/autojs/ui/explorer/ExplorerViewHelper.java +++ b/app/src/main/java/org/autojs/autojs/ui/explorer/ExplorerViewHelper.java @@ -9,6 +9,7 @@ import org.autojs.autojs.R; import org.autojs.autojs.model.explorer.ExplorerFileItem; import org.autojs.autojs.model.explorer.ExplorerItem; import org.autojs.autojs.model.explorer.ExplorerPage; +import org.autojs.autojs.model.explorer.ExplorerProjectPage; import org.autojs.autojs.model.explorer.ExplorerSamplePage; import static android.support.v4.content.ContextCompat.getColor; @@ -62,6 +63,9 @@ public class ExplorerViewHelper { if (page instanceof ExplorerSamplePage) { return R.drawable.ic_sample_dir; } + if(page instanceof ExplorerProjectPage){ + return R.drawable.ic_project; + } return R.drawable.ic_folder_yellow_100px; } } diff --git a/app/src/main/java/org/autojs/autojs/ui/filechooser/FileChooseListView.java b/app/src/main/java/org/autojs/autojs/ui/filechooser/FileChooseListView.java index 8afb1fd5..8ca094e8 100644 --- a/app/src/main/java/org/autojs/autojs/ui/filechooser/FileChooseListView.java +++ b/app/src/main/java/org/autojs/autojs/ui/filechooser/FileChooseListView.java @@ -152,7 +152,7 @@ public class FileChooseListView extends ExplorerView { CheckBoxCompat mCheckBox; @BindView(R.id.icon) - ImageView mIcon; + ImageView mIcon; private ExplorerPage mExplorerPage; diff --git a/app/src/main/java/org/autojs/autojs/ui/main/FloatingActionMenu.java b/app/src/main/java/org/autojs/autojs/ui/main/FloatingActionMenu.java index 0644083e..e4c746fe 100644 --- a/app/src/main/java/org/autojs/autojs/ui/main/FloatingActionMenu.java +++ b/app/src/main/java/org/autojs/autojs/ui/main/FloatingActionMenu.java @@ -34,8 +34,9 @@ public class FloatingActionMenu extends FrameLayout implements View.OnClickListe private static final int[] ICONS = { R.drawable.ic_floating_action_menu_dir, R.drawable.ic_floating_action_menu_file, - R.drawable.ic_floating_action_menu_open}; - private static final int[] LABELS = {R.string.text_directory, R.string.text_file, R.string.text_import}; + R.drawable.ic_floating_action_menu_open, + R.drawable.ic_project}; + private static final int[] LABELS = {R.string.text_directory, R.string.text_file, R.string.text_import, R.string.text_project}; private TextView[] mLabels; private FloatingActionButton[] mFabs; private View[] mFabContainers; diff --git a/app/src/main/java/org/autojs/autojs/ui/main/MainActivity.java b/app/src/main/java/org/autojs/autojs/ui/main/MainActivity.java index 3d05c99b..026b77d2 100644 --- a/app/src/main/java/org/autojs/autojs/ui/main/MainActivity.java +++ b/app/src/main/java/org/autojs/autojs/ui/main/MainActivity.java @@ -166,7 +166,7 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega .add(new MyScriptListFragment_(), R.string.text_file) .add(new DocsFragment_(), R.string.text_tutorial) .add(new CommunityFragment_(), R.string.text_community) - .add(new MarketFragment_(), R.string.text_sample) + .add(new MarketFragment_(), R.string.text_market) .add(new TaskManagerFragment_(), R.string.text_manage) .build(); mViewPager.setAdapter(mPagerAdapter); diff --git a/app/src/main/java/org/autojs/autojs/ui/main/scripts/ExplorerView.java b/app/src/main/java/org/autojs/autojs/ui/main/scripts/ExplorerView.java index d79fb1de..86d17104 100644 --- a/app/src/main/java/org/autojs/autojs/ui/main/scripts/ExplorerView.java +++ b/app/src/main/java/org/autojs/autojs/ui/main/scripts/ExplorerView.java @@ -9,6 +9,7 @@ import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.AttributeSet; import android.view.LayoutInflater; +import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; @@ -23,10 +24,11 @@ import org.autojs.autojs.model.explorer.Explorer; import org.autojs.autojs.model.explorer.ExplorerChangeEvent; import org.autojs.autojs.model.explorer.ExplorerItem; import org.autojs.autojs.model.explorer.ExplorerPage; +import org.autojs.autojs.model.explorer.ExplorerSamplePage; import org.autojs.autojs.model.script.ScriptFile; import org.autojs.autojs.model.script.Scripts; -import org.autojs.autojs.ui.build.BuildActivity; -import org.autojs.autojs.ui.build.BuildActivity_; +import org.autojs.autojs.ui.project.BuildActivity; +import org.autojs.autojs.ui.project.BuildActivity_; import org.autojs.autojs.ui.common.ScriptLoopDialog; import org.autojs.autojs.ui.common.ScriptOperations; import org.autojs.autojs.ui.explorer.ExplorerViewHelper; @@ -219,7 +221,9 @@ public class ExplorerView extends ThemeColorSwipeRefreshLayout implements SwipeR @Subscribe public void onExplorerChange(ExplorerChangeEvent event) { if (event.getAction() == ExplorerChangeEvent.ALL - || mCurrentPageState.page.equals(event.getItemGroup())) { + || (event.getAction() == ExplorerChangeEvent.CHANGE && + mCurrentPageState.page.getPath().equals(event.getPage().getPath())) + || (event.getAction() == Explorer)) { loadItemList(); } } @@ -457,6 +461,17 @@ public class ExplorerView extends ThemeColorSwipeRefreshLayout implements SwipeR mSelectedItem = mExplorerItem; PopupMenu popupMenu = new PopupMenu(getContext(), mOptions); popupMenu.inflate(R.menu.menu_script_options); + Menu menu = popupMenu.getMenu(); + if(!mExplorerItem.isExecutable()){ + menu.removeItem(R.id.run_repeatedly); + menu.removeItem(R.id.more); + } + if(!mExplorerItem.canDelete()){ + menu.removeItem(R.id.delete); + } + if(!mExplorerItem.canRename()){ + menu.removeItem(R.id.rename); + } popupMenu.setOnMenuItemClickListener(ExplorerView.this); popupMenu.show(); } @@ -484,7 +499,9 @@ public class ExplorerView extends ThemeColorSwipeRefreshLayout implements SwipeR public void bind(ExplorerPage data, int position) { mName.setText(ExplorerViewHelper.getDisplayName(data)); mIcon.setImageResource(ExplorerViewHelper.getIcon(data)); + mOptions.setVisibility(data instanceof ExplorerSamplePage ? GONE : VISIBLE); mExplorerPage = data; + } @OnClick(R.id.item) diff --git a/app/src/main/java/org/autojs/autojs/ui/main/scripts/MyScriptListFragment.java b/app/src/main/java/org/autojs/autojs/ui/main/scripts/MyScriptListFragment.java index 1151fc59..813a3431 100644 --- a/app/src/main/java/org/autojs/autojs/ui/main/scripts/MyScriptListFragment.java +++ b/app/src/main/java/org/autojs/autojs/ui/main/scripts/MyScriptListFragment.java @@ -21,6 +21,8 @@ import org.autojs.autojs.ui.common.ScriptOperations; import org.autojs.autojs.ui.main.FloatingActionMenu; import org.autojs.autojs.ui.main.QueryEvent; import org.autojs.autojs.ui.main.ViewPagerFragment; +import org.autojs.autojs.ui.project.ProjectConfigActivity; +import org.autojs.autojs.ui.project.ProjectConfigActivity_; import org.autojs.autojs.ui.viewmodel.ExplorerItemList; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; @@ -177,6 +179,11 @@ public class MyScriptListFragment extends ViewPagerFragment implements BackPress case 2: new ScriptOperations(getContext(), mExplorerView, mExplorerView.getCurrentPage()) .importFile(); + case 3: + ProjectConfigActivity_.intent(getContext()) + .extra(ProjectConfigActivity.EXTRA_PARENT_DIRECTORY, mExplorerView.getCurrentPage().getPath()) + .extra(ProjectConfigActivity.EXTRA_NEW_PROJECT, true) + .start(); break; } diff --git a/app/src/main/java/org/autojs/autojs/ui/build/BuildActivity.java b/app/src/main/java/org/autojs/autojs/ui/project/BuildActivity.java similarity index 99% rename from app/src/main/java/org/autojs/autojs/ui/build/BuildActivity.java rename to app/src/main/java/org/autojs/autojs/ui/project/BuildActivity.java index b7039d94..6378bfc3 100644 --- a/app/src/main/java/org/autojs/autojs/ui/build/BuildActivity.java +++ b/app/src/main/java/org/autojs/autojs/ui/project/BuildActivity.java @@ -1,4 +1,4 @@ -package org.autojs.autojs.ui.build; +package org.autojs.autojs.ui.project; import android.annotation.SuppressLint; import android.content.Intent; diff --git a/app/src/main/java/org/autojs/autojs/ui/project/ProjectConfigActivity.java b/app/src/main/java/org/autojs/autojs/ui/project/ProjectConfigActivity.java new file mode 100644 index 00000000..a8aea754 --- /dev/null +++ b/app/src/main/java/org/autojs/autojs/ui/project/ProjectConfigActivity.java @@ -0,0 +1,125 @@ +package org.autojs.autojs.ui.project; + +import android.annotation.SuppressLint; +import android.os.Bundle; +import android.support.annotation.Nullable; +import android.support.design.widget.TextInputEditText; +import android.text.Editable; +import android.widget.EditText; +import android.widget.ImageView; + +import com.stardust.autojs.project.LaunchConfig; +import com.stardust.autojs.project.ProjectConfig; + +import org.androidannotations.annotations.AfterViews; +import org.androidannotations.annotations.Click; +import org.androidannotations.annotations.EActivity; +import org.androidannotations.annotations.ViewById; +import org.autojs.autojs.R; +import org.autojs.autojs.model.explorer.ExplorerDirPage; +import org.autojs.autojs.model.explorer.Explorers; +import org.autojs.autojs.model.project.ProjectTemplate; +import org.autojs.autojs.ui.BaseActivity; +import org.autojs.autojs.ui.widget.SimpleTextWatcher; + +import java.io.File; +import java.util.concurrent.Executors; + +@EActivity(R.layout.activity_project_config) +public class ProjectConfigActivity extends BaseActivity { + + public static final String EXTRA_PARENT_DIRECTORY = "parent_directory"; + + public static final String EXTRA_NEW_PROJECT = "new_project"; + + public static final String EXTRA_DIRECTORY = "directory"; + + + @ViewById(R.id.project_location) + EditText mProjectLocation; + + @ViewById(R.id.app_name) + TextInputEditText mAppName; + + @ViewById(R.id.package_name) + TextInputEditText mPackageName; + + @ViewById(R.id.version_name) + TextInputEditText mVersionName; + + @ViewById(R.id.version_code) + TextInputEditText mVersionCode; + + @ViewById(R.id.main_file_name) + EditText mMainFileName; + + @ViewById(R.id.icon) + ImageView mIcon; + + private File mDirectory; + private File mParentDirectory; + private ProjectConfig mProjectConfig; + private boolean mNewProject; + + @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + mNewProject = getIntent().getBooleanExtra(EXTRA_NEW_PROJECT, false); + String parentDirectory = getIntent().getStringExtra(EXTRA_PARENT_DIRECTORY); + if (mNewProject) { + if (parentDirectory == null) { + finish(); + return; + } + mParentDirectory = new File(parentDirectory); + mProjectConfig = new ProjectConfig(); + } else { + String dir = getIntent().getStringExtra(EXTRA_DIRECTORY); + if(dir == null){ + finish(); + return; + } + mDirectory = new File(dir); + mProjectConfig = ProjectConfig.fromProjectDir(dir); + } + } + + @AfterViews + void setupViews() { + setToolbarAsBack(mNewProject ? getString(R.string.text_new_project) : mProjectConfig.getName()); + mAppName.addTextChangedListener(new SimpleTextWatcher(s -> + mProjectLocation.setText(new File(mParentDirectory, s.toString()).getPath())) + ); + + } + + @SuppressLint("CheckResult") + @Click(R.id.fab) + void commit() { + syncProjectConfig(); + if (!checkInputs()) { + return; + } + if(mNewProject){ + String location = mProjectLocation.getText().toString(); + new ProjectTemplate(mProjectConfig, new File(location)) + .newProject() + .subscribe(ignored -> { + Explorers.workspace().notifyItemCreated(new ExplorerDirPage(location, null)); + finish(); + }); + } + } + + private void syncProjectConfig(){ + mProjectConfig.setName(mAppName.getText().toString()); + mProjectConfig.setVersionCode(Integer.parseInt(mVersionCode.getText().toString())); + mProjectConfig.setVersionName(mVersionName.getText().toString()); + mProjectConfig.setMainScriptFile(mMainFileName.getText().toString()); + //mProjectConfig.getLaunchConfig().setHideLogs(true); + } + + private boolean checkInputs() { + return true; + } +} diff --git a/app/src/main/java/org/autojs/autojs/ui/settings/SettingsActivity.java b/app/src/main/java/org/autojs/autojs/ui/settings/SettingsActivity.java index 0d1b15b2..bcf4ccbc 100644 --- a/app/src/main/java/org/autojs/autojs/ui/settings/SettingsActivity.java +++ b/app/src/main/java/org/autojs/autojs/ui/settings/SettingsActivity.java @@ -8,23 +8,18 @@ import android.preference.PreferenceScreen; import android.support.v4.util.Pair; import android.support.v7.widget.Toolbar; import android.view.View; -import android.widget.Toast; -import org.autojs.autojs.network.VersionService; -import org.autojs.autojs.ui.BaseActivity; -import org.autojs.autojs.ui.error.IssueReporterActivity; -import org.autojs.autojs.ui.splash.SplashActivity; -import org.autojs.autojs.ui.splash.SplashActivity_; -import org.autojs.autojs.ui.update.UpdateCheckDialog; -import com.stardust.theme.preference.ThemeColorPreferenceFragment; -import com.stardust.util.IntentUtil; -import com.stardust.util.MapEntries; -import org.autojs.autojs.R; import com.stardust.theme.app.ColorSelectActivity; +import com.stardust.theme.preference.ThemeColorPreferenceFragment; import com.stardust.theme.util.ListBuilder; +import com.stardust.util.MapEntries; import org.androidannotations.annotations.AfterViews; import org.androidannotations.annotations.EActivity; +import org.autojs.autojs.R; +import org.autojs.autojs.ui.BaseActivity; +import org.autojs.autojs.ui.error.IssueReporterActivity; +import org.autojs.autojs.ui.update.UpdateCheckDialog; import java.util.ArrayList; import java.util.List; @@ -107,12 +102,6 @@ public class SettingsActivity extends BaseActivity { super.onStart(); ACTION_MAP = new MapEntries() .entry(getString(R.string.text_theme_color), () -> selectThemeColor(getActivity())) - .entry(getString(R.string.show_ad), () -> { - SplashActivity_.intent(getActivity()) - .extra(SplashActivity.NOT_START_MAIN_ACTIVITY, true) - .extra(SplashActivity.FORCE_SHOW_AD, true) - .start(); - }) .entry(getString(R.string.text_check_for_updates), () -> new UpdateCheckDialog(getActivity()) .show()) .entry(getString(R.string.text_issue_report), () -> startActivity(new Intent(getActivity(), IssueReporterActivity.class).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK))) diff --git a/app/src/main/java/org/autojs/autojs/ui/splash/SplashActivity.java b/app/src/main/java/org/autojs/autojs/ui/splash/SplashActivity.java index 0b97900d..fc73ba14 100644 --- a/app/src/main/java/org/autojs/autojs/ui/splash/SplashActivity.java +++ b/app/src/main/java/org/autojs/autojs/ui/splash/SplashActivity.java @@ -1,9 +1,12 @@ package org.autojs.autojs.ui.splash; +import android.Manifest; import android.os.Bundle; import android.os.Handler; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.util.Log; +import android.view.View; import android.widget.ImageView; import com.xcy8.ads.listener.LoadAdListener; @@ -24,7 +27,6 @@ import java.util.Random; /** * Created by Stardust on 2017/7/7. */ -@EActivity(R.layout.activity_splash) public class SplashActivity extends BaseActivity { public static final String NOT_START_MAIN_ACTIVITY = "notStartMainActivity"; @@ -32,8 +34,6 @@ public class SplashActivity extends BaseActivity { private static final String LOG_TAG = SplashActivity.class.getSimpleName(); - @ViewById(R.id.logo) - ImageView mLogo; private boolean mCanEnterNextActivity = false; private boolean mNotStartMainActivity; @@ -42,7 +42,6 @@ public class SplashActivity extends BaseActivity { private Handler mHandler; - @ViewById(R.id.full_screen_view) FullScreenAdView mFullScreenAdView; @Override @@ -51,17 +50,18 @@ public class SplashActivity extends BaseActivity { mHandler = new Handler(); mNotStartMainActivity = getIntent().getBooleanExtra(NOT_START_MAIN_ACTIVITY, false); boolean forceShowAd = getIntent().getBooleanExtra(FORCE_SHOW_AD, false); + setContentView(R.layout.activity_splash); + mFullScreenAdView = (FullScreenAdView) findViewById(R.id.full_screen_view); if (!forceShowAd && !Pref.shouldShowAd()) { - enterNextActivity(); - return; + mFullScreenAdView.setVisibility(View.INVISIBLE); + mHandler.postDelayed(this::enterNextActivity, 1500); + } else { + if(checkPermission(Manifest.permission.READ_PHONE_STATE)){ + fetchSplashAD(); + } } } - @AfterViews - void afterViews(){ - fetchSplashAD(); - } - void enterNextActivity() { if (mAlreadyEnterNextActivity) return; @@ -91,6 +91,12 @@ public class SplashActivity extends BaseActivity { mCanEnterNextActivity = true; } + @Override + public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults); + fetchSplashAD(); + } + private void fetchSplashAD() { mAdLoading = true; mFullScreenAdView.setFullScreenListener(this::enterNextActivity); diff --git a/app/src/main/res/drawable/ic_project.png b/app/src/main/res/drawable/ic_project.png new file mode 100644 index 0000000000000000000000000000000000000000..5f71d5aee05c5192602cab90e67105a6810dd78c GIT binary patch literal 6971 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 K4OT8=9`rwmep|o* literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/activity_project_config.xml b/app/src/main/res/layout/activity_project_config.xml new file mode 100644 index 00000000..80f0990e --- /dev/null +++ b/app/src/main/res/layout/activity_project_config.xml @@ -0,0 +1,224 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/file_choose_list_directory.xml b/app/src/main/res/layout/file_choose_list_directory.xml index 935b7220..0d3a9855 100644 --- a/app/src/main/res/layout/file_choose_list_directory.xml +++ b/app/src/main/res/layout/file_choose_list_directory.xml @@ -29,6 +29,7 @@ android:gravity="center"/> - + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 591fcd0f..2b4e5e8b 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -389,4 +389,11 @@ import key_ad_type 广告类型设置 + 市场 + 运行配置 + 主脚本名称 + main.js + 项目 + 项目位置 + 新建项目 diff --git a/autojs/src/main/java/com/stardust/autojs/project/ProjectConfig.java b/autojs/src/main/java/com/stardust/autojs/project/ProjectConfig.java index c5731e30..fd13ce93 100644 --- a/autojs/src/main/java/com/stardust/autojs/project/ProjectConfig.java +++ b/autojs/src/main/java/com/stardust/autojs/project/ProjectConfig.java @@ -4,6 +4,7 @@ import android.content.Context; import android.support.annotation.NonNull; import com.google.gson.Gson; +import com.google.gson.GsonBuilder; import com.google.gson.annotations.SerializedName; import com.stardust.pio.PFiles; import com.stardust.pio.UncheckedIOException; @@ -22,7 +23,7 @@ public class ProjectConfig { public static final String CONFIG_FILE_NAME = "project.json"; - private static final Gson GSON = new Gson(); + private static final Gson GSON = new GsonBuilder().setPrettyPrinting().create(); @SerializedName("name") private String mName;