diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index d699b9ca..f4f91ba5 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -74,7 +74,9 @@
-
+
diff --git a/app/src/main/java/com/stardust/scriptdroid/external/floatingwindow/menu/content/ScriptListNavigatorContent.java b/app/src/main/java/com/stardust/scriptdroid/external/floatingwindow/menu/content/ScriptListNavigatorContent.java
index 5293e63d..dcc4c914 100644
--- a/app/src/main/java/com/stardust/scriptdroid/external/floatingwindow/menu/content/ScriptListNavigatorContent.java
+++ b/app/src/main/java/com/stardust/scriptdroid/external/floatingwindow/menu/content/ScriptListNavigatorContent.java
@@ -18,8 +18,8 @@ import com.stardust.scriptdroid.script.Scripts;
import com.stardust.scriptdroid.script.StorageFileProvider;
import com.stardust.scriptdroid.ui.common.ScriptLoopDialog;
import com.stardust.scriptdroid.ui.edit.EditActivity;
-import com.stardust.scriptdroid.ui.main.script_list.ScriptListRecyclerView;
-import com.stardust.scriptdroid.ui.main.script_list.ScriptListWithProgressBarView;
+import com.stardust.scriptdroid.ui.main.scripts.ScriptListRecyclerView;
+import com.stardust.scriptdroid.ui.main.scripts.ScriptListWithProgressBarView;
import com.stardust.widget.ViewHolderSupplier;
import io.mattcarroll.hover.Navigator;
diff --git a/app/src/main/java/com/stardust/scriptdroid/external/tasker/TaskPrefEditActivity.java b/app/src/main/java/com/stardust/scriptdroid/external/tasker/TaskPrefEditActivity.java
index 97ce7db9..2fe00588 100644
--- a/app/src/main/java/com/stardust/scriptdroid/external/tasker/TaskPrefEditActivity.java
+++ b/app/src/main/java/com/stardust/scriptdroid/external/tasker/TaskPrefEditActivity.java
@@ -13,8 +13,8 @@ import com.stardust.scriptdroid.external.CommonUtils;
import com.stardust.scriptdroid.script.ScriptFile;
import com.stardust.scriptdroid.script.StorageFileProvider;
import com.stardust.scriptdroid.ui.BaseActivity;
-import com.stardust.scriptdroid.ui.main.script_list.ScriptListRecyclerView;
-import com.stardust.scriptdroid.ui.main.script_list.ScriptListWithProgressBarView;
+import com.stardust.scriptdroid.ui.main.scripts.ScriptListRecyclerView;
+import com.stardust.scriptdroid.ui.main.scripts.ScriptListWithProgressBarView;
import com.twofortyfouram.locale.sdk.client.ui.activity.AbstractAppCompatPluginActivity;
import org.androidannotations.annotations.AfterViews;
diff --git a/app/src/main/java/com/stardust/scriptdroid/external/widget/ScriptWidgetSettingsActivity.java b/app/src/main/java/com/stardust/scriptdroid/external/widget/ScriptWidgetSettingsActivity.java
index d82eb7d3..5c7eb0ac 100644
--- a/app/src/main/java/com/stardust/scriptdroid/external/widget/ScriptWidgetSettingsActivity.java
+++ b/app/src/main/java/com/stardust/scriptdroid/external/widget/ScriptWidgetSettingsActivity.java
@@ -11,8 +11,8 @@ import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.script.ScriptFile;
import com.stardust.scriptdroid.script.StorageFileProvider;
import com.stardust.scriptdroid.ui.BaseActivity;
-import com.stardust.scriptdroid.ui.main.script_list.ScriptListRecyclerView;
-import com.stardust.scriptdroid.ui.main.script_list.ScriptListWithProgressBarView;
+import com.stardust.scriptdroid.ui.main.scripts.ScriptListRecyclerView;
+import com.stardust.scriptdroid.ui.main.scripts.ScriptListWithProgressBarView;
import org.androidannotations.annotations.AfterViews;
import org.androidannotations.annotations.EActivity;
diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/common/ScriptOperations.java b/app/src/main/java/com/stardust/scriptdroid/ui/common/ScriptOperations.java
index 6c7349b7..5104caa5 100644
--- a/app/src/main/java/com/stardust/scriptdroid/ui/common/ScriptOperations.java
+++ b/app/src/main/java/com/stardust/scriptdroid/ui/common/ScriptOperations.java
@@ -21,14 +21,18 @@ import com.stardust.scriptdroid.script.ScriptFile;
import com.stardust.scriptdroid.script.Scripts;
import com.stardust.scriptdroid.script.StorageFileProvider;
import com.stardust.scriptdroid.script.sample.Sample;
-import com.stardust.scriptdroid.ui.main.script_list.MyScriptListFragment;
+import com.stardust.scriptdroid.ui.main.scripts.MyScriptListFragment;
import com.stardust.theme.dialog.ThemeColorMaterialDialogBuilder;
+import org.reactivestreams.Publisher;
+import org.reactivestreams.Subscriber;
+
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import io.reactivex.Observable;
+import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.functions.Consumer;
import io.reactivex.functions.Function;
import io.reactivex.schedulers.Schedulers;
@@ -157,17 +161,18 @@ public class ScriptOperations {
private void showMessage(final int resId) {
if (Looper.myLooper() == Looper.getMainLooper()) {
- showMessageDirectly(resId);
+ showMessageWithoutThreadSwitch(resId);
}
+ //switch to ui thread to show message
App.getApp().getUiHandler().post(new Runnable() {
@Override
public void run() {
- showMessageDirectly(resId);
+ showMessageWithoutThreadSwitch(resId);
}
});
}
- private void showMessageDirectly(int resId) {
+ private void showMessageWithoutThreadSwitch(int resId) {
if (mView != null) {
Snackbar.make(mView, resId, Snackbar.LENGTH_SHORT).show();
} else {
@@ -224,6 +229,29 @@ public class ScriptOperations {
});
}
+ public void createShortcut(ScriptFile file) {
+ Scripts.createShortcut(file);
+ showMessage(R.string.text_already_create);
+ }
+
+ public void delete(final ScriptFile scriptFile) {
+ Observable.fromPublisher(new Publisher() {
+ @Override
+ public void subscribe(Subscriber super Boolean> s) {
+ s.onNext(PFile.deleteRecursively(scriptFile));
+ }
+ }).subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new Consumer() {
+ @Override
+ public void accept(@io.reactivex.annotations.NonNull Boolean deleted) throws Exception {
+ showMessage(deleted ? R.string.text_already_delete : R.string.text_delete_failed);
+ notifyScriptFileChanged();
+ }
+ });
+ }
+
+
private class InputCallback implements MaterialDialog.InputCallback {
private String mExcluded;
diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/main/MainActivity.java b/app/src/main/java/com/stardust/scriptdroid/ui/main/MainActivity.java
index 9e9b1e86..203af604 100644
--- a/app/src/main/java/com/stardust/scriptdroid/ui/main/MainActivity.java
+++ b/app/src/main/java/com/stardust/scriptdroid/ui/main/MainActivity.java
@@ -1,8 +1,6 @@
package com.stardust.scriptdroid.ui.main;
import android.Manifest;
-import android.annotation.SuppressLint;
-import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
@@ -15,8 +13,6 @@ import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.widget.Toolbar;
import android.view.Gravity;
import android.view.View;
-import android.widget.ImageView;
-import android.widget.TextView;
import com.afollestad.materialdialogs.DialogAction;
import com.afollestad.materialdialogs.MaterialDialog;
@@ -31,35 +27,26 @@ import com.stardust.scriptdroid.Pref;
import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.autojs.AutoJs;
import com.stardust.scriptdroid.external.floatingwindow.HoverMenuManger;
-import com.stardust.scriptdroid.script.ScriptFile;
import com.stardust.scriptdroid.script.StorageFileProvider;
-import com.stardust.scriptdroid.ui.common.ScriptOperations;
import com.stardust.scriptdroid.ui.main.community.CommunityFragment;
+import com.stardust.scriptdroid.ui.main.community.CommunityFragment_;
import com.stardust.scriptdroid.ui.main.doc.OnlineDocsFragment_;
-import com.stardust.scriptdroid.ui.main.drawer.DrawerFragment;
-import com.stardust.scriptdroid.ui.main.script_list.MyScriptListFragment_;
+import com.stardust.scriptdroid.ui.main.scripts.MyScriptListFragment_;
import com.stardust.scriptdroid.ui.main.task.TaskManagerFragment_;
import com.stardust.theme.ThemeColorManager;
-import com.stardust.theme.ThemeColorManagerCompat;
import com.stardust.util.DeveloperUtils;
import com.stardust.scriptdroid.tool.AccessibilityServiceTool;
-import com.stardust.scriptdroid.tool.DrawableSaver;
import com.stardust.scriptdroid.ui.BaseActivity;
-import com.stardust.scriptdroid.ui.main.script_list.ScriptFileChooserDialogBuilder;
import com.stardust.scriptdroid.ui.settings.SettingsActivity_;
import com.stardust.scriptdroid.ui.update.VersionGuard;
import com.stardust.util.BackPressedHandler;
-import com.stardust.util.MessageEvent;
import com.stardust.view.DrawerAutoClose;
import com.stardust.widget.CommonMarkdownView;
-import com.stardust.widget.SlidingUpPanel;
import org.androidannotations.annotations.AfterViews;
import org.androidannotations.annotations.Click;
import org.androidannotations.annotations.EActivity;
import org.androidannotations.annotations.ViewById;
-import org.greenrobot.eventbus.EventBus;
-import org.greenrobot.eventbus.Subscribe;
@EActivity(R.layout.activity_main)
public class MainActivity extends BaseActivity implements OnActivityResultDelegate.DelegateHost {
@@ -68,10 +55,10 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
@ViewById(R.id.drawer_layout)
DrawerLayout mDrawerLayout;
- @ViewById(R.id.bottom_menu)
- SlidingUpPanel mAddBottomMenuPanel;
+
@ViewById(R.id.viewpager)
ViewPager mViewPager;
+
@ViewById(R.id.fab)
FloatingActionButton mFab;
@@ -92,7 +79,8 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
void setUpViews() {
setUpToolbar();
setUpTabViewPager();
- getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
+ getWindow().getDecorView().setSystemUiVisibility(
+ View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
registerBackPressHandlers();
ThemeColorManager.addViewBackground(findViewById(R.id.app_bar));
}
@@ -112,16 +100,6 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
private void registerBackPressHandlers() {
- registerBackPressedHandler(new BackPressedHandler() {
- @Override
- public boolean onBackPressed(Activity activity) {
- if (mAddBottomMenuPanel.isShowing()) {
- mAddBottomMenuPanel.dismiss();
- return true;
- }
- return false;
- }
- });
registerBackPressedHandler(new DrawerAutoClose(mDrawerLayout, Gravity.START));
registerBackPressedHandler(new BackPressedHandler.DoublePressExit(this, R.string.text_press_again_to_exit));
}
@@ -132,19 +110,20 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
}
private void showAccessibilitySettingPromptIfDisabled() {
- if (!AccessibilityServiceTool.isAccessibilityServiceEnabled(this)) {
- new NotAskAgainDialog.Builder(this, "Eating...love you...miss you...17.4.12")
- .title(R.string.text_need_to_enable_accessibility_service)
- .content(R.string.explain_accessibility_permission)
- .positiveText(R.string.text_go_to_setting)
- .negativeText(R.string.text_cancel)
- .onPositive(new MaterialDialog.SingleButtonCallback() {
- @Override
- public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
- AccessibilityServiceTool.enableAccessibilityService();
- }
- }).show();
+ if (AccessibilityServiceTool.isAccessibilityServiceEnabled(this)) {
+ return;
}
+ new NotAskAgainDialog.Builder(this, "Eating...love you...miss you...17.4.12")
+ .title(R.string.text_need_to_enable_accessibility_service)
+ .content(R.string.explain_accessibility_permission)
+ .positiveText(R.string.text_go_to_setting)
+ .negativeText(R.string.text_cancel)
+ .onPositive(new MaterialDialog.SingleButtonCallback() {
+ @Override
+ public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
+ AccessibilityServiceTool.enableAccessibilityService();
+ }
+ }).show();
}
private void setUpToolbar() {
@@ -162,11 +141,15 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
mPagerAdapter = new FragmentPagerAdapterBuilder(this)
.add(new MyScriptListFragment_(), R.string.text_script)
.add(new OnlineDocsFragment_(), R.string.text_tutorial)
- .add(new CommunityFragment(), R.string.text_community)
+ .add(new CommunityFragment_(), R.string.text_community)
.add(new TaskManagerFragment_(), R.string.text_manage)
.build();
mViewPager.setAdapter(mPagerAdapter);
tabLayout.setupWithViewPager(mViewPager);
+ setUpViewPagerFragmentBehaviors();
+ }
+
+ private void setUpViewPagerFragmentBehaviors() {
mPagerAdapter.setOnFragmentInstantiateListener(new FragmentPagerAdapterBuilder.OnFragmentInstantiateListener() {
@Override
public void OnInstantiate(int pos, Fragment fragment) {
@@ -187,53 +170,10 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
});
}
- @Click(R.id.create_new_file)
- void createScriptFile() {
- new ScriptOperations(this, mDrawerLayout)
- .newScriptFile();
- }
-
- @Click(R.id.create_new_directory)
- void createNewDirectory() {
- new ScriptOperations(this, mDrawerLayout)
- .newDirectory();
- }
-
- @Click(R.id.import_from_file)
- void showFileChooser() {
- final StorageFileProvider provider = StorageFileProvider.getExternalStorageProvider();
- new ScriptFileChooserDialogBuilder(this)
- .scriptProvider(provider)
- .fileCallback(new ScriptFileChooserDialogBuilder.FileCallback() {
- @Override
- public void onFileSelection(MaterialDialog dialog, final ScriptFile file) {
- dialog.dismiss();
- provider.refreshAll();
- new ScriptOperations(MainActivity.this, mDrawerLayout)
- .importFile(file.getPath())
- .subscribe();
- }
- })
- .title(R.string.text_please_choose_file_to_import)
- .autoDismiss(false)
- .positiveText(R.string.cancel)
- .neutralText(R.string.text_refresh)
- .onAny(new MaterialDialog.SingleButtonCallback() {
- @Override
- public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
- if (which == DialogAction.POSITIVE) {
- dialog.dismiss();
- } else {
- provider.refreshAll();
- }
- }
- })
- .show();
- }
@Click(R.id.setting)
void startSettingActivity() {
- startActivity(new Intent(this, SettingsActivity_.class).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
+ startActivity(new Intent(this, SettingsActivity_.class));
}
@Click(R.id.exit)
@@ -247,6 +187,7 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
@Override
protected void onPause() {
super.onPause();
+ //not working
stopService(new Intent(this, DownloadService.class));
}
diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/main/NewFileDialogBuilder.java b/app/src/main/java/com/stardust/scriptdroid/ui/main/NewFileDialogBuilder.java
index c64a932b..126eed8d 100644
--- a/app/src/main/java/com/stardust/scriptdroid/ui/main/NewFileDialogBuilder.java
+++ b/app/src/main/java/com/stardust/scriptdroid/ui/main/NewFileDialogBuilder.java
@@ -1,20 +1,14 @@
package com.stardust.scriptdroid.ui.main;
-import android.app.AlertDialog;
import android.content.Context;
-import android.support.annotation.IdRes;
import android.view.View;
-import android.widget.RadioButton;
-import android.widget.RadioGroup;
-import com.afollestad.materialdialogs.MaterialDialog;
import com.github.aakira.expandablelayout.ExpandableRelativeLayout;
import com.stardust.scriptdroid.R;
import com.stardust.theme.dialog.ThemeColorMaterialDialogBuilder;
import butterknife.BindView;
import butterknife.ButterKnife;
-import butterknife.OnCheckedChanged;
import butterknife.OnClick;
/**
diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/main/ViewPagerFragment.java b/app/src/main/java/com/stardust/scriptdroid/ui/main/ViewPagerFragment.java
index b070463b..5f6705df 100644
--- a/app/src/main/java/com/stardust/scriptdroid/ui/main/ViewPagerFragment.java
+++ b/app/src/main/java/com/stardust/scriptdroid/ui/main/ViewPagerFragment.java
@@ -1,11 +1,7 @@
package com.stardust.scriptdroid.ui.main;
-import android.graphics.Paint;
-import android.os.Bundle;
-import android.support.annotation.Nullable;
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.view.View;
@@ -17,7 +13,7 @@ public abstract class ViewPagerFragment extends Fragment {
protected static final int ROTATION_GONE = -1;
- private int mRotation;
+ private int mFabRotation;
private FloatingActionButton mFab;
private View.OnClickListener mOnFabClickListener = new View.OnClickListener() {
@Override
@@ -26,8 +22,8 @@ public abstract class ViewPagerFragment extends Fragment {
}
};
- public ViewPagerFragment(int rotation) {
- mRotation = rotation;
+ public ViewPagerFragment(int fabRotation) {
+ mFabRotation = fabRotation;
}
public void setFab(FloatingActionButton fab) {
@@ -37,7 +33,7 @@ public abstract class ViewPagerFragment extends Fragment {
protected abstract void onFabClick(FloatingActionButton fab);
public void onPageSelected() {
- if (mRotation == ROTATION_GONE) {
+ if (mFabRotation == ROTATION_GONE) {
if (mFab.getVisibility() == View.VISIBLE) {
mFab.hide();
}
@@ -46,11 +42,11 @@ public abstract class ViewPagerFragment extends Fragment {
}
mFab.setOnClickListener(mOnFabClickListener);
if (mFab.getVisibility() != View.VISIBLE) {
- mFab.setRotation(mRotation);
+ mFab.setRotation(mFabRotation);
mFab.show();
- } else if (Math.abs(mFab.getRotation() - mRotation) > 0.1f) {
+ } else if (Math.abs(mFab.getRotation() - mFabRotation) > 0.1f) {
mFab.animate()
- .rotation(mRotation)
+ .rotation(mFabRotation)
.setDuration(300)
.setInterpolator(new FastOutSlowInInterpolator())
.start();
diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/main/community/CommunityFragment.java b/app/src/main/java/com/stardust/scriptdroid/ui/main/community/CommunityFragment.java
index 5af6c2fb..a123ef39 100644
--- a/app/src/main/java/com/stardust/scriptdroid/ui/main/community/CommunityFragment.java
+++ b/app/src/main/java/com/stardust/scriptdroid/ui/main/community/CommunityFragment.java
@@ -1,24 +1,70 @@
package com.stardust.scriptdroid.ui.main.community;
+import android.app.Activity;
+import android.content.Context;
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.view.View;
+import android.webkit.WebView;
import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.ui.main.ViewPagerFragment;
+import com.stardust.util.BackPressedHandler;
+import com.stardust.widget.EWebView;
+
+import org.androidannotations.annotations.AfterViews;
+import org.androidannotations.annotations.EFragment;
+import org.androidannotations.annotations.ViewById;
/**
* Created by Stardust on 2017/8/22.
*/
+@EFragment(R.layout.fragment_community)
+public class CommunityFragment extends ViewPagerFragment implements BackPressedHandler {
-public class CommunityFragment extends ViewPagerFragment {
+
+ @ViewById(R.id.eweb_view)
+ EWebView mEWebView;
+ WebView mWebView;
public CommunityFragment() {
super(0);
}
+ @Override
+ public void onAttach(Context context) {
+ super.onAttach(context);
+ ((BackPressedHandler.HostActivity) getActivity())
+ .getBackPressedObserver()
+ .registerHandler(this);
+ }
+
+ @AfterViews
+ void setUpViews() {
+ mWebView = mEWebView.getWebView();
+ mWebView.loadUrl("http://39.108.231.37/");
+ }
+
+ @Override
+ public void onDetach() {
+ super.onDetach();
+ ((BackPressedHandler.HostActivity) getActivity())
+ .getBackPressedObserver()
+ .unregisterHandler(this);
+ }
+
+ @Override
+ public boolean onBackPressed(Activity activity) {
+ if (mWebView.canGoBack()) {
+ mWebView.goBack();
+ return true;
+ }
+ return false;
+ }
+
+
@Override
protected void onFabClick(FloatingActionButton fab) {
diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/main/script_list/MyScriptListFragment.java b/app/src/main/java/com/stardust/scriptdroid/ui/main/script_list/MyScriptListFragment.java
deleted file mode 100644
index 6bf0ab33..00000000
--- a/app/src/main/java/com/stardust/scriptdroid/ui/main/script_list/MyScriptListFragment.java
+++ /dev/null
@@ -1,157 +0,0 @@
-package com.stardust.scriptdroid.ui.main.script_list;
-
-import android.support.annotation.NonNull;
-import android.support.design.widget.FloatingActionButton;
-import android.support.design.widget.Snackbar;
-import android.support.v4.app.Fragment;
-import android.support.v4.view.ViewPager;
-import android.support.v4.view.animation.FastOutSlowInInterpolator;
-import android.view.View;
-
-import com.afollestad.materialdialogs.DialogAction;
-import com.afollestad.materialdialogs.MaterialDialog;
-import com.stardust.pio.PFile;
-import com.stardust.scriptdroid.R;
-import com.stardust.scriptdroid.script.ScriptFile;
-import com.stardust.scriptdroid.script.Scripts;
-import com.stardust.scriptdroid.script.StorageFileProvider;
-import com.stardust.scriptdroid.ui.common.ScriptLoopDialog;
-import com.stardust.scriptdroid.ui.edit.ScriptEditView;
-import com.stardust.scriptdroid.ui.main.NewFileDialogBuilder;
-import com.stardust.scriptdroid.ui.main.ViewPagerFragment;
-
-import org.androidannotations.annotations.AfterViews;
-import org.androidannotations.annotations.EFragment;
-import org.androidannotations.annotations.ViewById;
-import org.reactivestreams.Publisher;
-import org.reactivestreams.Subscriber;
-
-import butterknife.OnClick;
-import butterknife.Optional;
-import io.reactivex.Observable;
-import io.reactivex.android.schedulers.AndroidSchedulers;
-import io.reactivex.functions.Consumer;
-import io.reactivex.schedulers.Schedulers;
-
-/**
- * Created by Stardust on 2017/3/13.
- */
-@EFragment(R.layout.fragment_my_script_list)
-public class MyScriptListFragment extends ViewPagerFragment {
-
- private static final String TAG = "MyScriptListFragment";
-
- private static ScriptFile sCurrentDirectory = StorageFileProvider.DEFAULT_DIRECTORY;
-
- public MyScriptListFragment(){
- super(0);
- }
-
- @ViewById(R.id.script_file_list)
- ScriptListView mScriptFileList;
-
- private ScriptFile mSelectedScriptFile;
-
-
- @AfterViews
- void setUpViews() {
- }
-
-
- public static ScriptFile getCurrentDirectory() {
- return sCurrentDirectory;
- }
-
-
- private void notifyScriptFileChanged() {
- getActivity().runOnUiThread(new Runnable() {
- @Override
- public void run() {
- StorageFileProvider.getDefault().notifyDirectoryChanged(getCurrentDirectory());
- }
- });
- }
-
- @Optional
- @OnClick(R.id.loop)
- void runScriptRepeatedly() {
- new ScriptLoopDialog(getActivity(), mSelectedScriptFile)
- .show();
- }
-
- @Optional
- @OnClick(R.id.rename)
- void renameScriptFile() {
- }
-
-
- @Optional
- @OnClick(R.id.open_by_other_apps)
- void openByOtherApps() {
- Scripts.openByOtherApps(mSelectedScriptFile);
- onScriptFileOperated();
- }
-
- private void onScriptFileOperated() {
- mSelectedScriptFile = null;
-
- }
-
- @Optional
- @OnClick(R.id.create_shortcut)
- void createShortcut() {
- Scripts.createShortcut(mSelectedScriptFile);
- Snackbar.make(getView(), R.string.text_already_create, Snackbar.LENGTH_SHORT).show();
- onScriptFileOperated();
- }
-
- @Optional
- @OnClick(R.id.delete)
- void deleteScriptFile() {
- new MaterialDialog.Builder(getActivity())
- .title(R.string.delete_confirm)
- .positiveText(R.string.cancel)
- .negativeText(R.string.ok)
- .onNegative(new MaterialDialog.SingleButtonCallback() {
- @Override
- public void onClick(@NonNull MaterialDialog dialog, @NonNull DialogAction which) {
- doDeletingScriptFile();
- }
- })
- .show();
- }
-
- private void doDeletingScriptFile() {
- Observable.fromPublisher(new Publisher() {
- @Override
- public void subscribe(Subscriber super Boolean> s) {
- s.onNext(PFile.deleteRecursively(mSelectedScriptFile));
- }
- }).subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(new Consumer() {
- @Override
- public void accept(@io.reactivex.annotations.NonNull Boolean deleted) throws Exception {
- showMessage(deleted ? R.string.text_already_delete : R.string.text_delete_failed);
- notifyScriptFileChanged();
- onScriptFileOperated();
- }
- });
- }
-
- private void showMessage(final int resId) {
- getActivity().runOnUiThread(new Runnable() {
- @Override
- public void run() {
- Snackbar.make(getView(), resId, Snackbar.LENGTH_SHORT).show();
- }
- });
- }
-
-
- @Override
- protected void onFabClick(FloatingActionButton fab) {
- new NewFileDialogBuilder(getContext())
- .show();
- }
-}
diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/main/scripts/MyScriptListFragment.java b/app/src/main/java/com/stardust/scriptdroid/ui/main/scripts/MyScriptListFragment.java
new file mode 100644
index 00000000..fa60a1ed
--- /dev/null
+++ b/app/src/main/java/com/stardust/scriptdroid/ui/main/scripts/MyScriptListFragment.java
@@ -0,0 +1,69 @@
+package com.stardust.scriptdroid.ui.main.scripts;
+
+import android.support.annotation.NonNull;
+import android.support.design.widget.FloatingActionButton;
+import android.support.design.widget.Snackbar;
+import android.view.View;
+
+import com.afollestad.materialdialogs.DialogAction;
+import com.afollestad.materialdialogs.MaterialDialog;
+import com.stardust.pio.PFile;
+import com.stardust.scriptdroid.R;
+import com.stardust.scriptdroid.script.ScriptFile;
+import com.stardust.scriptdroid.script.Scripts;
+import com.stardust.scriptdroid.script.StorageFileProvider;
+import com.stardust.scriptdroid.ui.common.ScriptLoopDialog;
+import com.stardust.scriptdroid.ui.main.NewFileDialogBuilder;
+import com.stardust.scriptdroid.ui.main.ViewPagerFragment;
+
+import org.androidannotations.annotations.AfterViews;
+import org.androidannotations.annotations.EFragment;
+import org.androidannotations.annotations.ViewById;
+import org.reactivestreams.Publisher;
+import org.reactivestreams.Subscriber;
+
+import butterknife.OnClick;
+import butterknife.Optional;
+import io.reactivex.Observable;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.functions.Consumer;
+import io.reactivex.schedulers.Schedulers;
+
+/**
+ * Created by Stardust on 2017/3/13.
+ */
+@EFragment(R.layout.fragment_my_script_list)
+public class MyScriptListFragment extends ViewPagerFragment {
+
+ private static final String TAG = "MyScriptListFragment";
+
+ private static ScriptFile sCurrentDirectory = StorageFileProvider.DEFAULT_DIRECTORY;
+
+ public MyScriptListFragment() {
+ super(0);
+ }
+
+ @ViewById(R.id.script_file_list)
+ ScriptListView mScriptFileList;
+
+ @AfterViews
+ void setUpViews() {
+ mScriptFileList.setOnScriptFileClickListener(new ScriptListView.OnScriptFileClickListener() {
+ @Override
+ public void onScriptFileClick(View view, ScriptFile file) {
+ Scripts.edit(file);
+ }
+ });
+ }
+
+
+ public static ScriptFile getCurrentDirectory() {
+ return sCurrentDirectory;
+ }
+
+ @Override
+ protected void onFabClick(FloatingActionButton fab) {
+ new NewFileDialogBuilder(getContext())
+ .show();
+ }
+}
diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/main/script_list/ScriptFileChooserDialogBuilder.java b/app/src/main/java/com/stardust/scriptdroid/ui/main/scripts/ScriptFileChooserDialogBuilder.java
similarity index 97%
rename from app/src/main/java/com/stardust/scriptdroid/ui/main/script_list/ScriptFileChooserDialogBuilder.java
rename to app/src/main/java/com/stardust/scriptdroid/ui/main/scripts/ScriptFileChooserDialogBuilder.java
index 3f6e8375..e2ce7520 100644
--- a/app/src/main/java/com/stardust/scriptdroid/ui/main/script_list/ScriptFileChooserDialogBuilder.java
+++ b/app/src/main/java/com/stardust/scriptdroid/ui/main/scripts/ScriptFileChooserDialogBuilder.java
@@ -1,4 +1,4 @@
-package com.stardust.scriptdroid.ui.main.script_list;
+package com.stardust.scriptdroid.ui.main.scripts;
import android.content.Context;
import android.support.annotation.NonNull;
diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/main/script_list/ScriptListRecyclerView.java b/app/src/main/java/com/stardust/scriptdroid/ui/main/scripts/ScriptListRecyclerView.java
similarity index 98%
rename from app/src/main/java/com/stardust/scriptdroid/ui/main/script_list/ScriptListRecyclerView.java
rename to app/src/main/java/com/stardust/scriptdroid/ui/main/scripts/ScriptListRecyclerView.java
index 9d421fb7..168f7bd6 100644
--- a/app/src/main/java/com/stardust/scriptdroid/ui/main/script_list/ScriptListRecyclerView.java
+++ b/app/src/main/java/com/stardust/scriptdroid/ui/main/scripts/ScriptListRecyclerView.java
@@ -1,4 +1,4 @@
-package com.stardust.scriptdroid.ui.main.script_list;
+package com.stardust.scriptdroid.ui.main.scripts;
import android.content.Context;
import android.os.Bundle;
@@ -27,12 +27,9 @@ import com.yqritc.recyclerviewflexibledivider.HorizontalDividerItemDecoration;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
-import org.reactivestreams.Publisher;
-import org.reactivestreams.Subscriber;
import java.util.List;
-import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.annotations.NonNull;
import io.reactivex.functions.Consumer;
diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/main/script_list/ScriptListView.java b/app/src/main/java/com/stardust/scriptdroid/ui/main/scripts/ScriptListView.java
similarity index 80%
rename from app/src/main/java/com/stardust/scriptdroid/ui/main/script_list/ScriptListView.java
rename to app/src/main/java/com/stardust/scriptdroid/ui/main/scripts/ScriptListView.java
index 473b5e34..8c340d2f 100644
--- a/app/src/main/java/com/stardust/scriptdroid/ui/main/script_list/ScriptListView.java
+++ b/app/src/main/java/com/stardust/scriptdroid/ui/main/scripts/ScriptListView.java
@@ -1,4 +1,4 @@
-package com.stardust.scriptdroid.ui.main.script_list;
+package com.stardust.scriptdroid.ui.main.scripts;
import android.content.Context;
import android.graphics.drawable.GradientDrawable;
@@ -8,21 +8,22 @@ import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.AttributeSet;
import android.view.LayoutInflater;
+import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.PopupMenu;
import android.widget.TextView;
-import com.stardust.autojs.script.AutoFileSource;
import com.stardust.pio.PFile;
import com.stardust.scriptdroid.R;
import com.stardust.scriptdroid.script.ScriptFile;
import com.stardust.scriptdroid.script.Scripts;
import com.stardust.scriptdroid.script.StorageFileProvider;
import com.stardust.scriptdroid.tool.SimpleObserver;
+import com.stardust.scriptdroid.ui.common.ScriptLoopDialog;
+import com.stardust.scriptdroid.ui.common.ScriptOperations;
import com.stardust.widget.BindableViewHolder;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
import java.util.ArrayList;
import butterknife.BindView;
@@ -35,7 +36,8 @@ import io.reactivex.schedulers.Schedulers;
* Created by Stardust on 2017/8/21.
*/
-public class ScriptListView extends SwipeRefreshLayout implements SwipeRefreshLayout.OnRefreshListener {
+public class ScriptListView extends SwipeRefreshLayout implements SwipeRefreshLayout.OnRefreshListener, PopupMenu.OnMenuItemClickListener {
+
public interface OnScriptFileClickListener {
void onScriptFileClick(View view, ScriptFile file);
@@ -47,6 +49,7 @@ public class ScriptListView extends SwipeRefreshLayout implements SwipeRefreshLa
private ArrayList mDirectories = new ArrayList<>();
private ScriptFile mCurrentDirectory;
private OnScriptFileClickListener mOnScriptFileClickListener;
+ private ScriptFile mSelectedScriptFile;
public ScriptListView(Context context) {
super(context);
@@ -127,6 +130,35 @@ public class ScriptListView extends SwipeRefreshLayout implements SwipeRefreshLa
loadScriptList();
}
+ @Override
+ public boolean onMenuItemClick(MenuItem item) {
+ switch (item.getItemId()) {
+ case R.id.rename:
+ new ScriptOperations(getContext(), this)
+ .rename(mSelectedScriptFile)
+ .subscribe();
+ break;
+ case R.id.delete:
+ new ScriptOperations(getContext(), this)
+ .delete(mSelectedScriptFile);
+ break;
+ case R.id.run_repeatedly:
+ new ScriptLoopDialog(getContext(), mSelectedScriptFile)
+ .show();
+ break;
+ case R.id.create_shortcut:
+ new ScriptOperations(getContext(), this)
+ .createShortcut(mSelectedScriptFile);
+ break;
+ case R.id.open_by_other_apps:
+ Scripts.openByOtherApps(mSelectedScriptFile);
+ break;
+ default:
+ return false;
+ }
+ return true;
+ }
+
private class ScriptListAdapter extends RecyclerView.Adapter {
private final int VIEW_TYPE_FILE = 0;
@@ -188,6 +220,10 @@ public class ScriptListView extends SwipeRefreshLayout implements SwipeRefreshLa
TextView mFirstChar;
@BindView(R.id.desc)
TextView mDesc;
+ @BindView(R.id.more)
+ View mOptions;
+ @BindView(R.id.edit)
+ View mEdit;
GradientDrawable mFirstCharBackground;
private ScriptFile mScriptFile;
@@ -205,9 +241,11 @@ public class ScriptListView extends SwipeRefreshLayout implements SwipeRefreshLa
if (file.getType() == ScriptFile.TYPE_JAVA_SCRIPT) {
mFirstChar.setText("J");
mFirstCharBackground.setColor(getResources().getColor(R.color.color_j));
+ mEdit.setVisibility(VISIBLE);
} else {
mFirstChar.setText("R");
mFirstCharBackground.setColor(getResources().getColor(R.color.color_r));
+ mEdit.setVisibility(GONE);
}
}
@@ -230,7 +268,11 @@ public class ScriptListView extends SwipeRefreshLayout implements SwipeRefreshLa
@OnClick(R.id.more)
void showOptionMenu() {
-
+ mSelectedScriptFile = mScriptFile;
+ PopupMenu popupMenu = new PopupMenu(getContext(), mOptions);
+ popupMenu.inflate(R.menu.menu_script_options);
+ popupMenu.setOnMenuItemClickListener(ScriptListView.this);
+ popupMenu.show();
}
}
@@ -238,6 +280,9 @@ public class ScriptListView extends SwipeRefreshLayout implements SwipeRefreshLa
@BindView(R.id.name)
TextView mName;
+ @BindView(R.id.more)
+ View mOptions;
+
private ScriptFile mScriptFile;
DirectoryViewHolder(View itemView) {
@@ -258,7 +303,11 @@ public class ScriptListView extends SwipeRefreshLayout implements SwipeRefreshLa
@OnClick(R.id.more)
void showOptionMenu() {
-
+ mSelectedScriptFile = mScriptFile;
+ PopupMenu popupMenu = new PopupMenu(getContext(), mOptions);
+ popupMenu.inflate(R.menu.menu_dir_options);
+ popupMenu.setOnMenuItemClickListener(ScriptListView.this);
+ popupMenu.show();
}
}
@@ -276,5 +325,6 @@ public class ScriptListView extends SwipeRefreshLayout implements SwipeRefreshLa
public void bind(Boolean isDirCategory, int position) {
mTitle.setText(isDirCategory ? R.string.text_directory : R.string.text_file);
}
+
}
}
diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/main/script_list/ScriptListWithProgressBarView.java b/app/src/main/java/com/stardust/scriptdroid/ui/main/scripts/ScriptListWithProgressBarView.java
similarity index 98%
rename from app/src/main/java/com/stardust/scriptdroid/ui/main/script_list/ScriptListWithProgressBarView.java
rename to app/src/main/java/com/stardust/scriptdroid/ui/main/scripts/ScriptListWithProgressBarView.java
index be77bc11..05b106a9 100644
--- a/app/src/main/java/com/stardust/scriptdroid/ui/main/script_list/ScriptListWithProgressBarView.java
+++ b/app/src/main/java/com/stardust/scriptdroid/ui/main/scripts/ScriptListWithProgressBarView.java
@@ -1,4 +1,4 @@
-package com.stardust.scriptdroid.ui.main.script_list;
+package com.stardust.scriptdroid.ui.main.scripts;
import android.content.Context;
import android.os.Build;
diff --git a/app/src/main/java/com/stardust/scriptdroid/ui/settings/SettingsActivity.java b/app/src/main/java/com/stardust/scriptdroid/ui/settings/SettingsActivity.java
index 1222b448..792bf3c5 100644
--- a/app/src/main/java/com/stardust/scriptdroid/ui/settings/SettingsActivity.java
+++ b/app/src/main/java/com/stardust/scriptdroid/ui/settings/SettingsActivity.java
@@ -14,6 +14,7 @@ import com.stardust.scriptdroid.ui.error.IssueReporterActivity;
import com.stardust.scriptdroid.ui.splash.SplashActivity;
import com.stardust.scriptdroid.ui.splash.SplashActivity_;
import com.stardust.scriptdroid.ui.update.UpdateCheckDialog;
+import com.stardust.theme.preference.ThemeColorPreferenceFragment;
import com.stardust.util.IntentUtil;
import com.stardust.util.MapEntries;
import com.stardust.scriptdroid.R;
@@ -82,7 +83,7 @@ public class SettingsActivity extends BaseActivity {
}
- public static class PreferenceFragment extends android.preference.PreferenceFragment {
+ public static class PreferenceFragment extends ThemeColorPreferenceFragment {
private Map ACTION_MAP;
diff --git a/app/src/main/res/drawable/pref_divider.xml b/app/src/main/res/drawable/pref_divider.xml
new file mode 100644
index 00000000..069afdab
--- /dev/null
+++ b/app/src/main/res/drawable/pref_divider.xml
@@ -0,0 +1,16 @@
+
+
+
+ -
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index b603494e..d03e0e7b 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -53,99 +53,6 @@
app:layout_anchorGravity="bottom|right|end"
app:layout_behavior="com.stardust.widget.ScrollAwareFABBehavior"/>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/layout/activity_script_widget_settings.xml b/app/src/main/res/layout/activity_script_widget_settings.xml
index 0112221c..67aeb07e 100644
--- a/app/src/main/res/layout/activity_script_widget_settings.xml
+++ b/app/src/main/res/layout/activity_script_widget_settings.xml
@@ -24,7 +24,7 @@
-
@@ -24,5 +25,6 @@
+ android:layout_height="match_parent"
+ android:background="@android:color/white"/>
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_tasker_edit.xml b/app/src/main/res/layout/activity_tasker_edit.xml
index b346515a..4b23be43 100644
--- a/app/src/main/res/layout/activity_tasker_edit.xml
+++ b/app/src/main/res/layout/activity_tasker_edit.xml
@@ -49,7 +49,7 @@
android:textSize="16sp"/>
-
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_my_script_list.xml b/app/src/main/res/layout/fragment_my_script_list.xml
index 03f1e40e..e0310e23 100644
--- a/app/src/main/res/layout/fragment_my_script_list.xml
+++ b/app/src/main/res/layout/fragment_my_script_list.xml
@@ -4,7 +4,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
-
diff --git a/app/src/main/res/layout/preference_category_custom.xml b/app/src/main/res/layout/preference_category_custom.xml
new file mode 100644
index 00000000..9f10b0af
--- /dev/null
+++ b/app/src/main/res/layout/preference_category_custom.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/preference_custom.xml b/app/src/main/res/layout/preference_custom.xml
new file mode 100644
index 00000000..eaf07f2b
--- /dev/null
+++ b/app/src/main/res/layout/preference_custom.xml
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/script_and_folder_list_view.xml b/app/src/main/res/layout/script_and_folder_list_view.xml
index 358eb56d..a9433723 100644
--- a/app/src/main/res/layout/script_and_folder_list_view.xml
+++ b/app/src/main/res/layout/script_and_folder_list_view.xml
@@ -8,7 +8,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
-
diff --git a/app/src/main/res/layout/script_file_list_file.xml b/app/src/main/res/layout/script_file_list_file.xml
index 8a877d60..c4b811f2 100644
--- a/app/src/main/res/layout/script_file_list_file.xml
+++ b/app/src/main/res/layout/script_file_list_file.xml
@@ -67,16 +67,15 @@
+
\ No newline at end of file
diff --git a/app/src/main/res/menu/menu_script_options.xml b/app/src/main/res/menu/menu_script_options.xml
new file mode 100644
index 00000000..b4176a5d
--- /dev/null
+++ b/app/src/main/res/menu/menu_script_options.xml
@@ -0,0 +1,23 @@
+
+
\ No newline at end of file
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index fc709093..7349fbb0 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -7,4 +7,6 @@
#eef2f3f9
#FD999A
#99CC99
+ #9DA0A2
+ #282C2F
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 51189956..1a0883bd 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -20,6 +20,14 @@
- false
+
+
+