i don't know what I did
This commit is contained in:
@@ -74,7 +74,9 @@
|
|||||||
<activity android:name=".ui.help.DocumentationActivity"/>
|
<activity android:name=".ui.help.DocumentationActivity"/>
|
||||||
<activity android:name=".ui.help.HelpCatalogueActivity"/>
|
<activity android:name=".ui.help.HelpCatalogueActivity"/>
|
||||||
<activity android:name=".ui.settings.AboutActivity_"/>
|
<activity android:name=".ui.settings.AboutActivity_"/>
|
||||||
<activity android:name=".ui.settings.SettingsActivity_"/>
|
<activity
|
||||||
|
android:name=".ui.settings.SettingsActivity_"
|
||||||
|
android:theme="@style/AppTheme.Settings"/>
|
||||||
<activity android:name=".ui.console.LogActivity_"/>
|
<activity android:name=".ui.console.LogActivity_"/>
|
||||||
<activity android:name=".ui.error.ErrorReportActivity"/>
|
<activity android:name=".ui.error.ErrorReportActivity"/>
|
||||||
<activity android:name=".ui.help.LocalWebViewActivity"/>
|
<activity android:name=".ui.help.LocalWebViewActivity"/>
|
||||||
|
|||||||
@@ -18,8 +18,8 @@ import com.stardust.scriptdroid.script.Scripts;
|
|||||||
import com.stardust.scriptdroid.script.StorageFileProvider;
|
import com.stardust.scriptdroid.script.StorageFileProvider;
|
||||||
import com.stardust.scriptdroid.ui.common.ScriptLoopDialog;
|
import com.stardust.scriptdroid.ui.common.ScriptLoopDialog;
|
||||||
import com.stardust.scriptdroid.ui.edit.EditActivity;
|
import com.stardust.scriptdroid.ui.edit.EditActivity;
|
||||||
import com.stardust.scriptdroid.ui.main.script_list.ScriptListRecyclerView;
|
import com.stardust.scriptdroid.ui.main.scripts.ScriptListRecyclerView;
|
||||||
import com.stardust.scriptdroid.ui.main.script_list.ScriptListWithProgressBarView;
|
import com.stardust.scriptdroid.ui.main.scripts.ScriptListWithProgressBarView;
|
||||||
import com.stardust.widget.ViewHolderSupplier;
|
import com.stardust.widget.ViewHolderSupplier;
|
||||||
|
|
||||||
import io.mattcarroll.hover.Navigator;
|
import io.mattcarroll.hover.Navigator;
|
||||||
|
|||||||
@@ -13,8 +13,8 @@ import com.stardust.scriptdroid.external.CommonUtils;
|
|||||||
import com.stardust.scriptdroid.script.ScriptFile;
|
import com.stardust.scriptdroid.script.ScriptFile;
|
||||||
import com.stardust.scriptdroid.script.StorageFileProvider;
|
import com.stardust.scriptdroid.script.StorageFileProvider;
|
||||||
import com.stardust.scriptdroid.ui.BaseActivity;
|
import com.stardust.scriptdroid.ui.BaseActivity;
|
||||||
import com.stardust.scriptdroid.ui.main.script_list.ScriptListRecyclerView;
|
import com.stardust.scriptdroid.ui.main.scripts.ScriptListRecyclerView;
|
||||||
import com.stardust.scriptdroid.ui.main.script_list.ScriptListWithProgressBarView;
|
import com.stardust.scriptdroid.ui.main.scripts.ScriptListWithProgressBarView;
|
||||||
import com.twofortyfouram.locale.sdk.client.ui.activity.AbstractAppCompatPluginActivity;
|
import com.twofortyfouram.locale.sdk.client.ui.activity.AbstractAppCompatPluginActivity;
|
||||||
|
|
||||||
import org.androidannotations.annotations.AfterViews;
|
import org.androidannotations.annotations.AfterViews;
|
||||||
|
|||||||
@@ -11,8 +11,8 @@ import com.stardust.scriptdroid.R;
|
|||||||
import com.stardust.scriptdroid.script.ScriptFile;
|
import com.stardust.scriptdroid.script.ScriptFile;
|
||||||
import com.stardust.scriptdroid.script.StorageFileProvider;
|
import com.stardust.scriptdroid.script.StorageFileProvider;
|
||||||
import com.stardust.scriptdroid.ui.BaseActivity;
|
import com.stardust.scriptdroid.ui.BaseActivity;
|
||||||
import com.stardust.scriptdroid.ui.main.script_list.ScriptListRecyclerView;
|
import com.stardust.scriptdroid.ui.main.scripts.ScriptListRecyclerView;
|
||||||
import com.stardust.scriptdroid.ui.main.script_list.ScriptListWithProgressBarView;
|
import com.stardust.scriptdroid.ui.main.scripts.ScriptListWithProgressBarView;
|
||||||
|
|
||||||
import org.androidannotations.annotations.AfterViews;
|
import org.androidannotations.annotations.AfterViews;
|
||||||
import org.androidannotations.annotations.EActivity;
|
import org.androidannotations.annotations.EActivity;
|
||||||
|
|||||||
@@ -21,14 +21,18 @@ import com.stardust.scriptdroid.script.ScriptFile;
|
|||||||
import com.stardust.scriptdroid.script.Scripts;
|
import com.stardust.scriptdroid.script.Scripts;
|
||||||
import com.stardust.scriptdroid.script.StorageFileProvider;
|
import com.stardust.scriptdroid.script.StorageFileProvider;
|
||||||
import com.stardust.scriptdroid.script.sample.Sample;
|
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 com.stardust.theme.dialog.ThemeColorMaterialDialogBuilder;
|
||||||
|
|
||||||
|
import org.reactivestreams.Publisher;
|
||||||
|
import org.reactivestreams.Subscriber;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
|
||||||
import io.reactivex.Observable;
|
import io.reactivex.Observable;
|
||||||
|
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||||
import io.reactivex.functions.Consumer;
|
import io.reactivex.functions.Consumer;
|
||||||
import io.reactivex.functions.Function;
|
import io.reactivex.functions.Function;
|
||||||
import io.reactivex.schedulers.Schedulers;
|
import io.reactivex.schedulers.Schedulers;
|
||||||
@@ -157,17 +161,18 @@ public class ScriptOperations {
|
|||||||
|
|
||||||
private void showMessage(final int resId) {
|
private void showMessage(final int resId) {
|
||||||
if (Looper.myLooper() == Looper.getMainLooper()) {
|
if (Looper.myLooper() == Looper.getMainLooper()) {
|
||||||
showMessageDirectly(resId);
|
showMessageWithoutThreadSwitch(resId);
|
||||||
}
|
}
|
||||||
|
//switch to ui thread to show message
|
||||||
App.getApp().getUiHandler().post(new Runnable() {
|
App.getApp().getUiHandler().post(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
showMessageDirectly(resId);
|
showMessageWithoutThreadSwitch(resId);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showMessageDirectly(int resId) {
|
private void showMessageWithoutThreadSwitch(int resId) {
|
||||||
if (mView != null) {
|
if (mView != null) {
|
||||||
Snackbar.make(mView, resId, Snackbar.LENGTH_SHORT).show();
|
Snackbar.make(mView, resId, Snackbar.LENGTH_SHORT).show();
|
||||||
} else {
|
} 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<Boolean>() {
|
||||||
|
@Override
|
||||||
|
public void subscribe(Subscriber<? super Boolean> s) {
|
||||||
|
s.onNext(PFile.deleteRecursively(scriptFile));
|
||||||
|
}
|
||||||
|
}).subscribeOn(Schedulers.io())
|
||||||
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
|
.subscribe(new Consumer<Boolean>() {
|
||||||
|
@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 class InputCallback implements MaterialDialog.InputCallback {
|
||||||
|
|
||||||
private String mExcluded;
|
private String mExcluded;
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
package com.stardust.scriptdroid.ui.main;
|
package com.stardust.scriptdroid.ui.main;
|
||||||
|
|
||||||
import android.Manifest;
|
import android.Manifest;
|
||||||
import android.annotation.SuppressLint;
|
|
||||||
import android.app.Activity;
|
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
@@ -15,8 +13,6 @@ import android.support.v7.app.ActionBarDrawerToggle;
|
|||||||
import android.support.v7.widget.Toolbar;
|
import android.support.v7.widget.Toolbar;
|
||||||
import android.view.Gravity;
|
import android.view.Gravity;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.widget.ImageView;
|
|
||||||
import android.widget.TextView;
|
|
||||||
|
|
||||||
import com.afollestad.materialdialogs.DialogAction;
|
import com.afollestad.materialdialogs.DialogAction;
|
||||||
import com.afollestad.materialdialogs.MaterialDialog;
|
import com.afollestad.materialdialogs.MaterialDialog;
|
||||||
@@ -31,35 +27,26 @@ import com.stardust.scriptdroid.Pref;
|
|||||||
import com.stardust.scriptdroid.R;
|
import com.stardust.scriptdroid.R;
|
||||||
import com.stardust.scriptdroid.autojs.AutoJs;
|
import com.stardust.scriptdroid.autojs.AutoJs;
|
||||||
import com.stardust.scriptdroid.external.floatingwindow.HoverMenuManger;
|
import com.stardust.scriptdroid.external.floatingwindow.HoverMenuManger;
|
||||||
import com.stardust.scriptdroid.script.ScriptFile;
|
|
||||||
import com.stardust.scriptdroid.script.StorageFileProvider;
|
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.community.CommunityFragment_;
|
||||||
import com.stardust.scriptdroid.ui.main.doc.OnlineDocsFragment_;
|
import com.stardust.scriptdroid.ui.main.doc.OnlineDocsFragment_;
|
||||||
import com.stardust.scriptdroid.ui.main.drawer.DrawerFragment;
|
import com.stardust.scriptdroid.ui.main.scripts.MyScriptListFragment_;
|
||||||
import com.stardust.scriptdroid.ui.main.script_list.MyScriptListFragment_;
|
|
||||||
import com.stardust.scriptdroid.ui.main.task.TaskManagerFragment_;
|
import com.stardust.scriptdroid.ui.main.task.TaskManagerFragment_;
|
||||||
import com.stardust.theme.ThemeColorManager;
|
import com.stardust.theme.ThemeColorManager;
|
||||||
import com.stardust.theme.ThemeColorManagerCompat;
|
|
||||||
import com.stardust.util.DeveloperUtils;
|
import com.stardust.util.DeveloperUtils;
|
||||||
import com.stardust.scriptdroid.tool.AccessibilityServiceTool;
|
import com.stardust.scriptdroid.tool.AccessibilityServiceTool;
|
||||||
import com.stardust.scriptdroid.tool.DrawableSaver;
|
|
||||||
import com.stardust.scriptdroid.ui.BaseActivity;
|
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.settings.SettingsActivity_;
|
||||||
import com.stardust.scriptdroid.ui.update.VersionGuard;
|
import com.stardust.scriptdroid.ui.update.VersionGuard;
|
||||||
import com.stardust.util.BackPressedHandler;
|
import com.stardust.util.BackPressedHandler;
|
||||||
import com.stardust.util.MessageEvent;
|
|
||||||
import com.stardust.view.DrawerAutoClose;
|
import com.stardust.view.DrawerAutoClose;
|
||||||
import com.stardust.widget.CommonMarkdownView;
|
import com.stardust.widget.CommonMarkdownView;
|
||||||
import com.stardust.widget.SlidingUpPanel;
|
|
||||||
|
|
||||||
import org.androidannotations.annotations.AfterViews;
|
import org.androidannotations.annotations.AfterViews;
|
||||||
import org.androidannotations.annotations.Click;
|
import org.androidannotations.annotations.Click;
|
||||||
import org.androidannotations.annotations.EActivity;
|
import org.androidannotations.annotations.EActivity;
|
||||||
import org.androidannotations.annotations.ViewById;
|
import org.androidannotations.annotations.ViewById;
|
||||||
import org.greenrobot.eventbus.EventBus;
|
|
||||||
import org.greenrobot.eventbus.Subscribe;
|
|
||||||
|
|
||||||
@EActivity(R.layout.activity_main)
|
@EActivity(R.layout.activity_main)
|
||||||
public class MainActivity extends BaseActivity implements OnActivityResultDelegate.DelegateHost {
|
public class MainActivity extends BaseActivity implements OnActivityResultDelegate.DelegateHost {
|
||||||
@@ -68,10 +55,10 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
|
|||||||
|
|
||||||
@ViewById(R.id.drawer_layout)
|
@ViewById(R.id.drawer_layout)
|
||||||
DrawerLayout mDrawerLayout;
|
DrawerLayout mDrawerLayout;
|
||||||
@ViewById(R.id.bottom_menu)
|
|
||||||
SlidingUpPanel mAddBottomMenuPanel;
|
|
||||||
@ViewById(R.id.viewpager)
|
@ViewById(R.id.viewpager)
|
||||||
ViewPager mViewPager;
|
ViewPager mViewPager;
|
||||||
|
|
||||||
@ViewById(R.id.fab)
|
@ViewById(R.id.fab)
|
||||||
FloatingActionButton mFab;
|
FloatingActionButton mFab;
|
||||||
|
|
||||||
@@ -92,7 +79,8 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
|
|||||||
void setUpViews() {
|
void setUpViews() {
|
||||||
setUpToolbar();
|
setUpToolbar();
|
||||||
setUpTabViewPager();
|
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();
|
registerBackPressHandlers();
|
||||||
ThemeColorManager.addViewBackground(findViewById(R.id.app_bar));
|
ThemeColorManager.addViewBackground(findViewById(R.id.app_bar));
|
||||||
}
|
}
|
||||||
@@ -112,16 +100,6 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
|
|||||||
|
|
||||||
|
|
||||||
private void registerBackPressHandlers() {
|
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 DrawerAutoClose(mDrawerLayout, Gravity.START));
|
||||||
registerBackPressedHandler(new BackPressedHandler.DoublePressExit(this, R.string.text_press_again_to_exit));
|
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() {
|
private void showAccessibilitySettingPromptIfDisabled() {
|
||||||
if (!AccessibilityServiceTool.isAccessibilityServiceEnabled(this)) {
|
if (AccessibilityServiceTool.isAccessibilityServiceEnabled(this)) {
|
||||||
new NotAskAgainDialog.Builder(this, "Eating...love you...miss you...17.4.12")
|
return;
|
||||||
.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();
|
|
||||||
}
|
}
|
||||||
|
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() {
|
private void setUpToolbar() {
|
||||||
@@ -162,11 +141,15 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
|
|||||||
mPagerAdapter = new FragmentPagerAdapterBuilder(this)
|
mPagerAdapter = new FragmentPagerAdapterBuilder(this)
|
||||||
.add(new MyScriptListFragment_(), R.string.text_script)
|
.add(new MyScriptListFragment_(), R.string.text_script)
|
||||||
.add(new OnlineDocsFragment_(), R.string.text_tutorial)
|
.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)
|
.add(new TaskManagerFragment_(), R.string.text_manage)
|
||||||
.build();
|
.build();
|
||||||
mViewPager.setAdapter(mPagerAdapter);
|
mViewPager.setAdapter(mPagerAdapter);
|
||||||
tabLayout.setupWithViewPager(mViewPager);
|
tabLayout.setupWithViewPager(mViewPager);
|
||||||
|
setUpViewPagerFragmentBehaviors();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setUpViewPagerFragmentBehaviors() {
|
||||||
mPagerAdapter.setOnFragmentInstantiateListener(new FragmentPagerAdapterBuilder.OnFragmentInstantiateListener() {
|
mPagerAdapter.setOnFragmentInstantiateListener(new FragmentPagerAdapterBuilder.OnFragmentInstantiateListener() {
|
||||||
@Override
|
@Override
|
||||||
public void OnInstantiate(int pos, Fragment fragment) {
|
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)
|
@Click(R.id.setting)
|
||||||
void startSettingActivity() {
|
void startSettingActivity() {
|
||||||
startActivity(new Intent(this, SettingsActivity_.class).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
|
startActivity(new Intent(this, SettingsActivity_.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Click(R.id.exit)
|
@Click(R.id.exit)
|
||||||
@@ -247,6 +187,7 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega
|
|||||||
@Override
|
@Override
|
||||||
protected void onPause() {
|
protected void onPause() {
|
||||||
super.onPause();
|
super.onPause();
|
||||||
|
//not working
|
||||||
stopService(new Intent(this, DownloadService.class));
|
stopService(new Intent(this, DownloadService.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,20 +1,14 @@
|
|||||||
package com.stardust.scriptdroid.ui.main;
|
package com.stardust.scriptdroid.ui.main;
|
||||||
|
|
||||||
import android.app.AlertDialog;
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.support.annotation.IdRes;
|
|
||||||
import android.view.View;
|
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.github.aakira.expandablelayout.ExpandableRelativeLayout;
|
||||||
import com.stardust.scriptdroid.R;
|
import com.stardust.scriptdroid.R;
|
||||||
import com.stardust.theme.dialog.ThemeColorMaterialDialogBuilder;
|
import com.stardust.theme.dialog.ThemeColorMaterialDialogBuilder;
|
||||||
|
|
||||||
import butterknife.BindView;
|
import butterknife.BindView;
|
||||||
import butterknife.ButterKnife;
|
import butterknife.ButterKnife;
|
||||||
import butterknife.OnCheckedChanged;
|
|
||||||
import butterknife.OnClick;
|
import butterknife.OnClick;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -1,11 +1,7 @@
|
|||||||
package com.stardust.scriptdroid.ui.main;
|
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.design.widget.FloatingActionButton;
|
||||||
import android.support.v4.app.Fragment;
|
import android.support.v4.app.Fragment;
|
||||||
import android.support.v4.view.ViewPager;
|
|
||||||
import android.support.v4.view.animation.FastOutSlowInInterpolator;
|
import android.support.v4.view.animation.FastOutSlowInInterpolator;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
|
||||||
@@ -17,7 +13,7 @@ public abstract class ViewPagerFragment extends Fragment {
|
|||||||
|
|
||||||
protected static final int ROTATION_GONE = -1;
|
protected static final int ROTATION_GONE = -1;
|
||||||
|
|
||||||
private int mRotation;
|
private int mFabRotation;
|
||||||
private FloatingActionButton mFab;
|
private FloatingActionButton mFab;
|
||||||
private View.OnClickListener mOnFabClickListener = new View.OnClickListener() {
|
private View.OnClickListener mOnFabClickListener = new View.OnClickListener() {
|
||||||
@Override
|
@Override
|
||||||
@@ -26,8 +22,8 @@ public abstract class ViewPagerFragment extends Fragment {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
public ViewPagerFragment(int rotation) {
|
public ViewPagerFragment(int fabRotation) {
|
||||||
mRotation = rotation;
|
mFabRotation = fabRotation;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setFab(FloatingActionButton fab) {
|
public void setFab(FloatingActionButton fab) {
|
||||||
@@ -37,7 +33,7 @@ public abstract class ViewPagerFragment extends Fragment {
|
|||||||
protected abstract void onFabClick(FloatingActionButton fab);
|
protected abstract void onFabClick(FloatingActionButton fab);
|
||||||
|
|
||||||
public void onPageSelected() {
|
public void onPageSelected() {
|
||||||
if (mRotation == ROTATION_GONE) {
|
if (mFabRotation == ROTATION_GONE) {
|
||||||
if (mFab.getVisibility() == View.VISIBLE) {
|
if (mFab.getVisibility() == View.VISIBLE) {
|
||||||
mFab.hide();
|
mFab.hide();
|
||||||
}
|
}
|
||||||
@@ -46,11 +42,11 @@ public abstract class ViewPagerFragment extends Fragment {
|
|||||||
}
|
}
|
||||||
mFab.setOnClickListener(mOnFabClickListener);
|
mFab.setOnClickListener(mOnFabClickListener);
|
||||||
if (mFab.getVisibility() != View.VISIBLE) {
|
if (mFab.getVisibility() != View.VISIBLE) {
|
||||||
mFab.setRotation(mRotation);
|
mFab.setRotation(mFabRotation);
|
||||||
mFab.show();
|
mFab.show();
|
||||||
} else if (Math.abs(mFab.getRotation() - mRotation) > 0.1f) {
|
} else if (Math.abs(mFab.getRotation() - mFabRotation) > 0.1f) {
|
||||||
mFab.animate()
|
mFab.animate()
|
||||||
.rotation(mRotation)
|
.rotation(mFabRotation)
|
||||||
.setDuration(300)
|
.setDuration(300)
|
||||||
.setInterpolator(new FastOutSlowInInterpolator())
|
.setInterpolator(new FastOutSlowInInterpolator())
|
||||||
.start();
|
.start();
|
||||||
|
|||||||
@@ -1,24 +1,70 @@
|
|||||||
package com.stardust.scriptdroid.ui.main.community;
|
package com.stardust.scriptdroid.ui.main.community;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.content.Context;
|
||||||
import android.support.design.widget.FloatingActionButton;
|
import android.support.design.widget.FloatingActionButton;
|
||||||
import android.support.v4.app.Fragment;
|
import android.support.v4.app.Fragment;
|
||||||
import android.support.v4.view.ViewPager;
|
import android.support.v4.view.ViewPager;
|
||||||
import android.support.v4.view.animation.FastOutSlowInInterpolator;
|
import android.support.v4.view.animation.FastOutSlowInInterpolator;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.webkit.WebView;
|
||||||
|
|
||||||
import com.stardust.scriptdroid.R;
|
import com.stardust.scriptdroid.R;
|
||||||
import com.stardust.scriptdroid.ui.main.ViewPagerFragment;
|
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.
|
* 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() {
|
public CommunityFragment() {
|
||||||
super(0);
|
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
|
@Override
|
||||||
protected void onFabClick(FloatingActionButton fab) {
|
protected void onFabClick(FloatingActionButton fab) {
|
||||||
|
|
||||||
|
|||||||
@@ -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<Boolean>() {
|
|
||||||
@Override
|
|
||||||
public void subscribe(Subscriber<? super Boolean> s) {
|
|
||||||
s.onNext(PFile.deleteRecursively(mSelectedScriptFile));
|
|
||||||
}
|
|
||||||
}).subscribeOn(Schedulers.io())
|
|
||||||
.observeOn(AndroidSchedulers.mainThread())
|
|
||||||
.subscribe(new Consumer<Boolean>() {
|
|
||||||
@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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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.content.Context;
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
@@ -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.content.Context;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
@@ -27,12 +27,9 @@ import com.yqritc.recyclerviewflexibledivider.HorizontalDividerItemDecoration;
|
|||||||
|
|
||||||
import org.greenrobot.eventbus.Subscribe;
|
import org.greenrobot.eventbus.Subscribe;
|
||||||
import org.greenrobot.eventbus.ThreadMode;
|
import org.greenrobot.eventbus.ThreadMode;
|
||||||
import org.reactivestreams.Publisher;
|
|
||||||
import org.reactivestreams.Subscriber;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import io.reactivex.Observable;
|
|
||||||
import io.reactivex.android.schedulers.AndroidSchedulers;
|
import io.reactivex.android.schedulers.AndroidSchedulers;
|
||||||
import io.reactivex.annotations.NonNull;
|
import io.reactivex.annotations.NonNull;
|
||||||
import io.reactivex.functions.Consumer;
|
import io.reactivex.functions.Consumer;
|
||||||
@@ -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.content.Context;
|
||||||
import android.graphics.drawable.GradientDrawable;
|
import android.graphics.drawable.GradientDrawable;
|
||||||
@@ -8,21 +8,22 @@ import android.support.v7.widget.GridLayoutManager;
|
|||||||
import android.support.v7.widget.RecyclerView;
|
import android.support.v7.widget.RecyclerView;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
||||||
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
import android.widget.PopupMenu;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import com.stardust.autojs.script.AutoFileSource;
|
|
||||||
import com.stardust.pio.PFile;
|
import com.stardust.pio.PFile;
|
||||||
import com.stardust.scriptdroid.R;
|
import com.stardust.scriptdroid.R;
|
||||||
import com.stardust.scriptdroid.script.ScriptFile;
|
import com.stardust.scriptdroid.script.ScriptFile;
|
||||||
import com.stardust.scriptdroid.script.Scripts;
|
import com.stardust.scriptdroid.script.Scripts;
|
||||||
import com.stardust.scriptdroid.script.StorageFileProvider;
|
import com.stardust.scriptdroid.script.StorageFileProvider;
|
||||||
import com.stardust.scriptdroid.tool.SimpleObserver;
|
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 com.stardust.widget.BindableViewHolder;
|
||||||
|
|
||||||
import java.text.DateFormat;
|
|
||||||
import java.text.SimpleDateFormat;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import butterknife.BindView;
|
import butterknife.BindView;
|
||||||
@@ -35,7 +36,8 @@ import io.reactivex.schedulers.Schedulers;
|
|||||||
* Created by Stardust on 2017/8/21.
|
* 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 {
|
public interface OnScriptFileClickListener {
|
||||||
void onScriptFileClick(View view, ScriptFile file);
|
void onScriptFileClick(View view, ScriptFile file);
|
||||||
@@ -47,6 +49,7 @@ public class ScriptListView extends SwipeRefreshLayout implements SwipeRefreshLa
|
|||||||
private ArrayList<ScriptFile> mDirectories = new ArrayList<>();
|
private ArrayList<ScriptFile> mDirectories = new ArrayList<>();
|
||||||
private ScriptFile mCurrentDirectory;
|
private ScriptFile mCurrentDirectory;
|
||||||
private OnScriptFileClickListener mOnScriptFileClickListener;
|
private OnScriptFileClickListener mOnScriptFileClickListener;
|
||||||
|
private ScriptFile mSelectedScriptFile;
|
||||||
|
|
||||||
public ScriptListView(Context context) {
|
public ScriptListView(Context context) {
|
||||||
super(context);
|
super(context);
|
||||||
@@ -127,6 +130,35 @@ public class ScriptListView extends SwipeRefreshLayout implements SwipeRefreshLa
|
|||||||
loadScriptList();
|
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<RecyclerView.ViewHolder> {
|
private class ScriptListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
|
||||||
|
|
||||||
private final int VIEW_TYPE_FILE = 0;
|
private final int VIEW_TYPE_FILE = 0;
|
||||||
@@ -188,6 +220,10 @@ public class ScriptListView extends SwipeRefreshLayout implements SwipeRefreshLa
|
|||||||
TextView mFirstChar;
|
TextView mFirstChar;
|
||||||
@BindView(R.id.desc)
|
@BindView(R.id.desc)
|
||||||
TextView mDesc;
|
TextView mDesc;
|
||||||
|
@BindView(R.id.more)
|
||||||
|
View mOptions;
|
||||||
|
@BindView(R.id.edit)
|
||||||
|
View mEdit;
|
||||||
GradientDrawable mFirstCharBackground;
|
GradientDrawable mFirstCharBackground;
|
||||||
private ScriptFile mScriptFile;
|
private ScriptFile mScriptFile;
|
||||||
|
|
||||||
@@ -205,9 +241,11 @@ public class ScriptListView extends SwipeRefreshLayout implements SwipeRefreshLa
|
|||||||
if (file.getType() == ScriptFile.TYPE_JAVA_SCRIPT) {
|
if (file.getType() == ScriptFile.TYPE_JAVA_SCRIPT) {
|
||||||
mFirstChar.setText("J");
|
mFirstChar.setText("J");
|
||||||
mFirstCharBackground.setColor(getResources().getColor(R.color.color_j));
|
mFirstCharBackground.setColor(getResources().getColor(R.color.color_j));
|
||||||
|
mEdit.setVisibility(VISIBLE);
|
||||||
} else {
|
} else {
|
||||||
mFirstChar.setText("R");
|
mFirstChar.setText("R");
|
||||||
mFirstCharBackground.setColor(getResources().getColor(R.color.color_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)
|
@OnClick(R.id.more)
|
||||||
void showOptionMenu() {
|
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)
|
@BindView(R.id.name)
|
||||||
TextView mName;
|
TextView mName;
|
||||||
|
@BindView(R.id.more)
|
||||||
|
View mOptions;
|
||||||
|
|
||||||
private ScriptFile mScriptFile;
|
private ScriptFile mScriptFile;
|
||||||
|
|
||||||
DirectoryViewHolder(View itemView) {
|
DirectoryViewHolder(View itemView) {
|
||||||
@@ -258,7 +303,11 @@ public class ScriptListView extends SwipeRefreshLayout implements SwipeRefreshLa
|
|||||||
|
|
||||||
@OnClick(R.id.more)
|
@OnClick(R.id.more)
|
||||||
void showOptionMenu() {
|
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) {
|
public void bind(Boolean isDirCategory, int position) {
|
||||||
mTitle.setText(isDirCategory ? R.string.text_directory : R.string.text_file);
|
mTitle.setText(isDirCategory ? R.string.text_directory : R.string.text_file);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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.content.Context;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
@@ -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.splash.SplashActivity_;
|
import com.stardust.scriptdroid.ui.splash.SplashActivity_;
|
||||||
import com.stardust.scriptdroid.ui.update.UpdateCheckDialog;
|
import com.stardust.scriptdroid.ui.update.UpdateCheckDialog;
|
||||||
|
import com.stardust.theme.preference.ThemeColorPreferenceFragment;
|
||||||
import com.stardust.util.IntentUtil;
|
import com.stardust.util.IntentUtil;
|
||||||
import com.stardust.util.MapEntries;
|
import com.stardust.util.MapEntries;
|
||||||
import com.stardust.scriptdroid.R;
|
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<String, Runnable> ACTION_MAP;
|
private Map<String, Runnable> ACTION_MAP;
|
||||||
|
|
||||||
|
|||||||
16
app/src/main/res/drawable/pref_divider.xml
Normal file
16
app/src/main/res/drawable/pref_divider.xml
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
|
||||||
|
<item android:left="12dp">
|
||||||
|
<shape xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
|
||||||
|
<size
|
||||||
|
android:width="100dp"
|
||||||
|
android:height="0.9dp"/>
|
||||||
|
|
||||||
|
<solid android:color="#f3f5f9"/>
|
||||||
|
|
||||||
|
</shape>
|
||||||
|
</item>
|
||||||
|
|
||||||
|
</layer-list>
|
||||||
@@ -53,99 +53,6 @@
|
|||||||
app:layout_anchorGravity="bottom|right|end"
|
app:layout_anchorGravity="bottom|right|end"
|
||||||
app:layout_behavior="com.stardust.widget.ScrollAwareFABBehavior"/>
|
app:layout_behavior="com.stardust.widget.ScrollAwareFABBehavior"/>
|
||||||
|
|
||||||
<com.stardust.widget.SlidingUpPanel
|
|
||||||
android:id="@+id/bottom_menu"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent">
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="160dp"
|
|
||||||
android:background="@android:color/white"
|
|
||||||
android:baselineAligned="false"
|
|
||||||
android:gravity="center"
|
|
||||||
android:orientation="horizontal">
|
|
||||||
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:id="@+id/create_new_file"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:background="?attr/selectableItemBackgroundBorderless"
|
|
||||||
android:gravity="center"
|
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<com.stardust.theme.widget.ThemeColorImageViewCompat
|
|
||||||
android:layout_width="60dp"
|
|
||||||
android:layout_height="60dp"
|
|
||||||
android:padding="10dp"
|
|
||||||
android:src="@drawable/ic_add_file"/>
|
|
||||||
|
|
||||||
<com.stardust.theme.widget.ThemeColorTextView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:gravity="center"
|
|
||||||
android:text="@string/text_new_file"
|
|
||||||
android:textColor="@color/colorPrimary"
|
|
||||||
android:textSize="16sp"/>
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:id="@+id/create_new_directory"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:background="?attr/selectableItemBackgroundBorderless"
|
|
||||||
android:gravity="center"
|
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<com.stardust.theme.widget.ThemeColorImageViewCompat
|
|
||||||
android:layout_width="60dp"
|
|
||||||
android:layout_height="60dp"
|
|
||||||
android:padding="10dp"
|
|
||||||
android:src="@drawable/ic_new_directory"/>
|
|
||||||
|
|
||||||
<com.stardust.theme.widget.ThemeColorTextView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:gravity="center"
|
|
||||||
android:text="@string/text_new_directory"
|
|
||||||
android:textColor="@color/colorPrimary"
|
|
||||||
android:textSize="16sp"/>
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:id="@+id/import_from_file"
|
|
||||||
android:layout_width="0dp"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_weight="1"
|
|
||||||
android:background="?attr/selectableItemBackgroundBorderless"
|
|
||||||
android:gravity="center"
|
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<com.stardust.theme.widget.ThemeColorImageViewCompat
|
|
||||||
android:layout_width="60dp"
|
|
||||||
android:layout_height="60dp"
|
|
||||||
android:padding="10dp"
|
|
||||||
android:src="@drawable/ic_import"/>
|
|
||||||
|
|
||||||
<com.stardust.theme.widget.ThemeColorTextView
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:gravity="center"
|
|
||||||
android:text="@string/text_import_from_file"
|
|
||||||
android:textColor="@color/colorPrimary"
|
|
||||||
android:textSize="16sp"/>
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
</com.stardust.widget.SlidingUpPanel>
|
|
||||||
|
|
||||||
</android.support.design.widget.CoordinatorLayout>
|
</android.support.design.widget.CoordinatorLayout>
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,7 @@
|
|||||||
</com.stardust.theme.widget.ThemeColorToolbar>
|
</com.stardust.theme.widget.ThemeColorToolbar>
|
||||||
</android.support.design.widget.AppBarLayout>
|
</android.support.design.widget.AppBarLayout>
|
||||||
|
|
||||||
<com.stardust.scriptdroid.ui.main.script_list.ScriptListWithProgressBarView
|
<com.stardust.scriptdroid.ui.main.scripts.ScriptListWithProgressBarView
|
||||||
android:id="@+id/script_list"
|
android:id="@+id/script_list"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
android:background="@android:color/white"
|
||||||
android:fitsSystemWindows="true"
|
android:fitsSystemWindows="true"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
@@ -24,5 +25,6 @@
|
|||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:id="@+id/fragment_setting"
|
android:id="@+id/fragment_setting"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"/>
|
android:layout_height="match_parent"
|
||||||
|
android:background="@android:color/white"/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
@@ -49,7 +49,7 @@
|
|||||||
android:textSize="16sp"/>
|
android:textSize="16sp"/>
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<com.stardust.scriptdroid.ui.main.script_list.ScriptListWithProgressBarView
|
<com.stardust.scriptdroid.ui.main.scripts.ScriptListWithProgressBarView
|
||||||
android:id="@+id/script_list"
|
android:id="@+id/script_list"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
|
|||||||
7
app/src/main/res/layout/fragment_community.xml
Normal file
7
app/src/main/res/layout/fragment_community.xml
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<com.stardust.widget.EWebView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
android:id="@+id/eweb_view"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
app:layout_behavior="@string/appbar_scrolling_view_behavior"/>
|
||||||
@@ -4,7 +4,7 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
<com.stardust.scriptdroid.ui.main.script_list.ScriptListView
|
<com.stardust.scriptdroid.ui.main.scripts.ScriptListView
|
||||||
android:id="@+id/script_file_list"
|
android:id="@+id/script_file_list"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"/>
|
android:layout_height="wrap_content"/>
|
||||||
|
|||||||
19
app/src/main/res/layout/preference_category_custom.xml
Normal file
19
app/src/main/res/layout/preference_category_custom.xml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+android:id/title"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:paddingBottom="8dp"
|
||||||
|
android:paddingLeft="12dp"
|
||||||
|
android:paddingTop="8dp"
|
||||||
|
android:textColor="?attr/colorPrimary"
|
||||||
|
android:textSize="13sp"
|
||||||
|
tools:text="目录"/>
|
||||||
|
</LinearLayout>
|
||||||
70
app/src/main/res/layout/preference_custom.xml
Normal file
70
app/src/main/res/layout/preference_custom.xml
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:baselineAligned="false"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:minHeight="52dp"
|
||||||
|
android:orientation="horizontal"
|
||||||
|
android:paddingEnd="?android:attr/scrollbarSize"
|
||||||
|
android:paddingRight="?android:attr/scrollbarSize"
|
||||||
|
tools:ignore="RtlSymmetry,UnusedAttribute">
|
||||||
|
|
||||||
|
<ImageView
|
||||||
|
android:id="@android:id/icon"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="center"
|
||||||
|
android:layout_marginLeft="@dimen/md_preference_content_inset"
|
||||||
|
android:layout_marginStart="@dimen/md_preference_content_inset"
|
||||||
|
tools:ignore="ContentDescription"/>
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="0dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_gravity="left|start|center_vertical"
|
||||||
|
android:layout_marginBottom="12dip"
|
||||||
|
android:layout_marginEnd="6dip"
|
||||||
|
android:layout_marginLeft="12dp"
|
||||||
|
android:layout_marginRight="6dip"
|
||||||
|
android:layout_marginStart="12dp"
|
||||||
|
android:layout_marginTop="12dip"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:orientation="vertical">
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@android:id/title"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:ellipsize="marquee"
|
||||||
|
android:fadingEdge="horizontal"
|
||||||
|
android:fontFamily="sans-serif"
|
||||||
|
android:maxLines="1"
|
||||||
|
android:textColor="?android:textColorPrimary"
|
||||||
|
android:textSize="15sp"
|
||||||
|
tools:text="Title"/>
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@android:id/summary"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="2dp"
|
||||||
|
android:fontFamily="sans-serif"
|
||||||
|
android:maxLines="4"
|
||||||
|
android:textColor="?android:textColorSecondary"
|
||||||
|
android:textSize="12sp"
|
||||||
|
tools:text=""/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
<!-- Preference should place its actual preference widget here. -->
|
||||||
|
<LinearLayout
|
||||||
|
android:id="@android:id/widget_frame"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:layout_gravity="end|right|center_vertical"
|
||||||
|
android:gravity="center_vertical"
|
||||||
|
android:orientation="vertical"/>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
@@ -8,7 +8,7 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
<com.stardust.scriptdroid.ui.main.script_list.ScriptListRecyclerView
|
<com.stardust.scriptdroid.ui.main.scripts.ScriptListRecyclerView
|
||||||
android:id="@+id/script_list_recycler_view"
|
android:id="@+id/script_list_recycler_view"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"/>
|
android:layout_height="match_parent"/>
|
||||||
|
|||||||
@@ -67,16 +67,15 @@
|
|||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="108dp"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="34dp"
|
android:layout_height="34dp"
|
||||||
android:layout_gravity="center_vertical"
|
android:layout_gravity="center_vertical"
|
||||||
android:orientation="horizontal">
|
android:orientation="horizontal">
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/run"
|
android:id="@+id/run"
|
||||||
android:layout_width="0dp"
|
android:layout_width="34dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_weight="1"
|
|
||||||
android:background="?selectableItemBackgroundBorderless"
|
android:background="?selectableItemBackgroundBorderless"
|
||||||
android:clickable="true"
|
android:clickable="true"
|
||||||
android:paddingBottom="8dp"
|
android:paddingBottom="8dp"
|
||||||
@@ -86,9 +85,8 @@
|
|||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/edit"
|
android:id="@+id/edit"
|
||||||
android:layout_width="0dp"
|
android:layout_width="34dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_weight="1"
|
|
||||||
android:background="?selectableItemBackgroundBorderless"
|
android:background="?selectableItemBackgroundBorderless"
|
||||||
android:clickable="true"
|
android:clickable="true"
|
||||||
android:paddingBottom="8dp"
|
android:paddingBottom="8dp"
|
||||||
@@ -98,9 +96,8 @@
|
|||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/more"
|
android:id="@+id/more"
|
||||||
android:layout_width="0dp"
|
android:layout_width="24dp"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_weight="1"
|
|
||||||
android:background="?selectableItemBackgroundBorderless"
|
android:background="?selectableItemBackgroundBorderless"
|
||||||
android:clickable="true"
|
android:clickable="true"
|
||||||
android:paddingBottom="8dp"
|
android:paddingBottom="8dp"
|
||||||
|
|||||||
11
app/src/main/res/menu/menu_dir_options.xml
Normal file
11
app/src/main/res/menu/menu_dir_options.xml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
<item
|
||||||
|
android:id="@+id/rename"
|
||||||
|
android:title="@string/text_rename"/>
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/delete"
|
||||||
|
android:title="@string/text_delete"/>
|
||||||
|
|
||||||
|
</menu>
|
||||||
23
app/src/main/res/menu/menu_script_options.xml
Normal file
23
app/src/main/res/menu/menu_script_options.xml
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/run_repeatedly"
|
||||||
|
android:title="@string/text_run_repeatedly"/>
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/rename"
|
||||||
|
android:title="@string/text_rename"/>
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/delete"
|
||||||
|
android:title="@string/text_delete"/>
|
||||||
|
|
||||||
|
<item
|
||||||
|
android:id="@+id/create_shortcut"
|
||||||
|
android:title="@string/text_send_shortcut"/>
|
||||||
|
<item
|
||||||
|
android:id="@+id/open_by_other_apps"
|
||||||
|
android:title="@string/text_open_by_other_apps"/>
|
||||||
|
|
||||||
|
</menu>
|
||||||
@@ -7,4 +7,6 @@
|
|||||||
<color name="bubble_bg">#eef2f3f9</color>
|
<color name="bubble_bg">#eef2f3f9</color>
|
||||||
<color name="color_r">#FD999A</color>
|
<color name="color_r">#FD999A</color>
|
||||||
<color name="color_j">#99CC99</color>
|
<color name="color_j">#99CC99</color>
|
||||||
|
<color name="prefTextColorSecondary">#9DA0A2</color>
|
||||||
|
<color name="prefTextColorPrimary">#282C2F</color>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -20,6 +20,14 @@
|
|||||||
<item name="windowActionBar">false</item>
|
<item name="windowActionBar">false</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
<style name="AppTheme.Settings" parent="AppTheme">
|
||||||
|
<item name="android:dividerHeight">6dp</item>
|
||||||
|
<item name="android:listDivider">@drawable/pref_divider</item>
|
||||||
|
<item name="android:textColorPrimary">@color/prefTextColorPrimary</item>
|
||||||
|
<item name="android:textColorSecondary">@color/prefTextColorSecondary</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
|
||||||
<style name="AppTheme.Transparent" parent="AppTheme">
|
<style name="AppTheme.Transparent" parent="AppTheme">
|
||||||
<item name="android:windowIsTranslucent">true</item>
|
<item name="android:windowIsTranslucent">true</item>
|
||||||
<item name="android:windowBackground">@android:color/transparent</item>
|
<item name="android:windowBackground">@android:color/transparent</item>
|
||||||
|
|||||||
@@ -1,22 +1,30 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
|
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
android:widgetLayout="@layout/preference_custom">
|
||||||
|
|
||||||
|
<com.stardust.theme.preference.ThemeColorPreferenceCategory
|
||||||
|
android:layout="@layout/preference_category_custom"
|
||||||
|
android:title="@string/text_script_record"
|
||||||
|
android:widgetLayout="@layout/preference_custom">
|
||||||
|
|
||||||
<com.stardust.theme.preference.ThemeColorPreferenceCategory android:title="@string/text_script_record">
|
|
||||||
|
|
||||||
<com.stardust.theme.preference.ThemeColorSwitchPreference
|
<com.stardust.theme.preference.ThemeColorSwitchPreference
|
||||||
android:defaultValue="false"
|
android:defaultValue="false"
|
||||||
android:key="@string/key_use_volume_control_record"
|
android:key="@string/key_use_volume_control_record"
|
||||||
|
android:layout="@layout/preference_custom"
|
||||||
android:summary="@string/summary_use_volume_control_record"
|
android:summary="@string/summary_use_volume_control_record"
|
||||||
android:title="@string/text_use_volume_control_record"/>
|
android:title="@string/text_use_volume_control_record"/>
|
||||||
|
|
||||||
<com.stardust.theme.preference.ThemeColorSwitchPreference
|
<com.stardust.theme.preference.ThemeColorSwitchPreference
|
||||||
android:defaultValue="false"
|
android:defaultValue="false"
|
||||||
android:key="@string/key_record_with_root"
|
android:key="@string/key_record_with_root"
|
||||||
|
android:layout="@layout/preference_custom"
|
||||||
android:title="@string/text_record_with_root"/>
|
android:title="@string/text_record_with_root"/>
|
||||||
|
|
||||||
<com.stardust.theme.preference.ThemeColorSwitchPreference
|
<com.stardust.theme.preference.ThemeColorSwitchPreference
|
||||||
android:defaultValue="true"
|
android:defaultValue="true"
|
||||||
android:key="@string/key_record_toast"
|
android:key="@string/key_record_toast"
|
||||||
|
android:layout="@layout/preference_custom"
|
||||||
android:title="@string/text_record_msg"/>
|
android:title="@string/text_record_msg"/>
|
||||||
|
|
||||||
<com.afollestad.materialdialogs.prefs.MaterialListPreference
|
<com.afollestad.materialdialogs.prefs.MaterialListPreference
|
||||||
@@ -24,76 +32,119 @@
|
|||||||
android:entries="@array/root_record_out_file_type_keys"
|
android:entries="@array/root_record_out_file_type_keys"
|
||||||
android:entryValues="@array/root_record_out_file_type_values"
|
android:entryValues="@array/root_record_out_file_type_values"
|
||||||
android:key="@string/key_root_record_out_file_type"
|
android:key="@string/key_root_record_out_file_type"
|
||||||
|
android:layout="@layout/preference_custom"
|
||||||
android:title="@string/text_root_record_out_file_type"
|
android:title="@string/text_root_record_out_file_type"
|
||||||
/>
|
/>
|
||||||
</com.stardust.theme.preference.ThemeColorPreferenceCategory>
|
</com.stardust.theme.preference.ThemeColorPreferenceCategory>
|
||||||
|
|
||||||
<com.stardust.theme.preference.ThemeColorPreferenceCategory android:title="@string/text_script_running">
|
<com.stardust.theme.preference.ThemeColorPreferenceCategory
|
||||||
|
android:layout="@layout/preference_category_custom"
|
||||||
|
android:title="@string/text_script_running">
|
||||||
|
|
||||||
<com.stardust.theme.preference.ThemeColorSwitchPreference
|
<com.stardust.theme.preference.ThemeColorSwitchPreference
|
||||||
android:defaultValue="false"
|
android:defaultValue="false"
|
||||||
android:key="@string/key_use_volume_control_running"
|
android:key="@string/key_use_volume_control_running"
|
||||||
|
android:layout="@layout/preference_custom"
|
||||||
android:title="@string/text_use_volume_to_stop_running"/>
|
android:title="@string/text_use_volume_to_stop_running"/>
|
||||||
|
|
||||||
<com.stardust.theme.preference.ThemeColorSwitchPreference
|
<com.stardust.theme.preference.ThemeColorSwitchPreference
|
||||||
android:defaultValue="false"
|
android:defaultValue="false"
|
||||||
android:key="@string/key_guard_mode"
|
android:key="@string/key_guard_mode"
|
||||||
|
android:layout="@layout/preference_custom"
|
||||||
android:summary="@string/summary_guard_mode"
|
android:summary="@string/summary_guard_mode"
|
||||||
android:title="@string/text_guard_mode"/>
|
android:title="@string/text_guard_mode"/>
|
||||||
</com.stardust.theme.preference.ThemeColorPreferenceCategory>
|
</com.stardust.theme.preference.ThemeColorPreferenceCategory>
|
||||||
|
|
||||||
<com.stardust.theme.preference.ThemeColorPreferenceCategory android:title="@string/text_edit">
|
<com.stardust.theme.preference.ThemeColorPreferenceCategory
|
||||||
|
android:layout="@layout/preference_category_custom"
|
||||||
|
android:title="@string/text_edit">
|
||||||
|
|
||||||
<com.afollestad.materialdialogs.prefs.MaterialEditTextPreference
|
<com.afollestad.materialdialogs.prefs.MaterialEditTextPreference
|
||||||
android:defaultValue="2000"
|
android:defaultValue="2000"
|
||||||
android:inputType="number"
|
android:inputType="number"
|
||||||
android:key="@string/key_max_length_for_code_completion"
|
android:key="@string/key_max_length_for_code_completion"
|
||||||
|
android:layout="@layout/preference_custom"
|
||||||
android:title="@string/text_max_length_for_code_completion"/>
|
android:title="@string/text_max_length_for_code_completion"/>
|
||||||
</com.stardust.theme.preference.ThemeColorPreferenceCategory>
|
</com.stardust.theme.preference.ThemeColorPreferenceCategory>
|
||||||
|
|
||||||
<com.stardust.theme.preference.ThemeColorPreferenceCategory android:title="@string/text_accessibility_service">
|
<com.stardust.theme.preference.ThemeColorPreferenceCategory
|
||||||
|
android:layout="@layout/preference_category_custom"
|
||||||
|
android:title="@string/text_accessibility_service">
|
||||||
|
|
||||||
<com.stardust.theme.preference.ThemeColorSwitchPreference
|
<com.stardust.theme.preference.ThemeColorSwitchPreference
|
||||||
android:defaultValue="false"
|
android:defaultValue="false"
|
||||||
android:key="@string/key_enable_accessibility_service_by_root"
|
android:key="@string/key_enable_accessibility_service_by_root"
|
||||||
|
android:layout="@layout/preference_custom"
|
||||||
android:summary="@string/summary_enable_accessibility_service_by_root"
|
android:summary="@string/summary_enable_accessibility_service_by_root"
|
||||||
android:title="@string/text_enable_accessibility_service_by_root"/>
|
android:title="@string/text_enable_accessibility_service_by_root"/>
|
||||||
|
|
||||||
<com.stardust.theme.preference.ThemeColorSwitchPreference
|
<com.stardust.theme.preference.ThemeColorSwitchPreference
|
||||||
android:defaultValue="false"
|
android:defaultValue="false"
|
||||||
android:key="@string/key_stable_mode"
|
android:key="@string/key_stable_mode"
|
||||||
|
android:layout="@layout/preference_custom"
|
||||||
android:summary="@string/summary_stable_mode"
|
android:summary="@string/summary_stable_mode"
|
||||||
android:title="@string/text_stable_mode"/>
|
android:title="@string/text_stable_mode"/>
|
||||||
|
|
||||||
</com.stardust.theme.preference.ThemeColorPreferenceCategory>
|
</com.stardust.theme.preference.ThemeColorPreferenceCategory>
|
||||||
|
|
||||||
<com.stardust.theme.preference.ThemeColorPreferenceCategory android:title="@string/text_appearance">
|
<com.stardust.theme.preference.ThemeColorPreferenceCategory
|
||||||
<Preference android:title="@string/text_theme_color"/>
|
android:layout="@layout/preference_category_custom"
|
||||||
<Preference android:title="@string/text_reset_background"/>
|
android:title="@string/text_appearance">
|
||||||
|
<Preference
|
||||||
|
android:layout="@layout/preference_custom"
|
||||||
|
android:title="@string/text_theme_color"
|
||||||
|
/>
|
||||||
|
<Preference
|
||||||
|
android:layout="@layout/preference_custom"
|
||||||
|
android:title="@string/text_reset_background"
|
||||||
|
/>
|
||||||
</com.stardust.theme.preference.ThemeColorPreferenceCategory>
|
</com.stardust.theme.preference.ThemeColorPreferenceCategory>
|
||||||
|
|
||||||
<com.stardust.theme.preference.ThemeColorPreferenceCategory android:title="@string/text_ad">
|
<com.stardust.theme.preference.ThemeColorPreferenceCategory
|
||||||
<Preference android:title="@string/show_ad"/>
|
android:layout="@layout/preference_category_custom"
|
||||||
|
android:title="@string/text_ad">
|
||||||
|
<Preference
|
||||||
|
android:layout="@layout/preference_custom"
|
||||||
|
android:title="@string/show_ad"
|
||||||
|
/>
|
||||||
<com.afollestad.materialdialogs.prefs.MaterialListPreference
|
<com.afollestad.materialdialogs.prefs.MaterialListPreference
|
||||||
android:defaultValue="@string/text_default"
|
android:defaultValue="@string/text_default"
|
||||||
android:entries="@array/ad_showing_mode_keys"
|
android:entries="@array/ad_showing_mode_keys"
|
||||||
android:entryValues="@array/ad_showing_mode_values"
|
android:entryValues="@array/ad_showing_mode_values"
|
||||||
android:key="@string/key_ad_showing_mode"
|
android:key="@string/key_ad_showing_mode"
|
||||||
|
android:layout="@layout/preference_custom"
|
||||||
android:title="@string/text_ad_showing_settings"
|
android:title="@string/text_ad_showing_settings"
|
||||||
/>
|
/>
|
||||||
</com.stardust.theme.preference.ThemeColorPreferenceCategory>
|
</com.stardust.theme.preference.ThemeColorPreferenceCategory>
|
||||||
|
|
||||||
<com.stardust.theme.preference.ThemeColorPreferenceCategory android:title="@string/text_about">
|
<com.stardust.theme.preference.ThemeColorPreferenceCategory
|
||||||
|
android:layout="@layout/preference_category_custom"
|
||||||
|
android:title="@string/text_about">
|
||||||
|
|
||||||
<Preference android:title="@string/text_check_for_updates"/>
|
<Preference
|
||||||
|
android:layout="@layout/preference_custom"
|
||||||
|
android:title="@string/text_check_for_updates"
|
||||||
|
/>
|
||||||
|
|
||||||
<Preference android:title="@string/text_join_qq_group"/>
|
<Preference
|
||||||
|
android:layout="@layout/preference_custom"
|
||||||
|
android:title="@string/text_join_qq_group"
|
||||||
|
/>
|
||||||
|
|
||||||
<Preference android:title="@string/text_issue_report"/>
|
<Preference
|
||||||
|
android:layout="@layout/preference_custom"
|
||||||
|
android:title="@string/text_issue_report"
|
||||||
|
/>
|
||||||
|
|
||||||
<Preference android:title="@string/text_about_me_and_repo"/>
|
<Preference
|
||||||
|
android:layout="@layout/preference_custom"
|
||||||
|
android:title="@string/text_about_me_and_repo"
|
||||||
|
/>
|
||||||
|
|
||||||
<Preference android:title="@string/text_licenses"/>
|
<Preference
|
||||||
|
android:layout="@layout/preference_custom"
|
||||||
|
android:title="@string/text_licenses"
|
||||||
|
/>
|
||||||
</com.stardust.theme.preference.ThemeColorPreferenceCategory>
|
</com.stardust.theme.preference.ThemeColorPreferenceCategory>
|
||||||
|
|
||||||
</PreferenceScreen>
|
</PreferenceScreen>
|
||||||
@@ -214,12 +214,23 @@ public class ScriptRuntime {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setClip(final String text) {
|
public void setClip(final String text) {
|
||||||
|
final Object lock = new Object();
|
||||||
mUiHandler.post(new Runnable() {
|
mUiHandler.post(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
ClipboardUtil.setClip(mUiHandler.getContext(), text);
|
ClipboardUtil.setClip(mUiHandler.getContext(), text);
|
||||||
|
synchronized (lock) {
|
||||||
|
lock.notify();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
synchronized (lock) {
|
||||||
|
try {
|
||||||
|
lock.wait();
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
throw new ScriptInterruptedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getClip() {
|
public String getClip() {
|
||||||
|
|||||||
@@ -165,7 +165,7 @@ public class StardustConsole extends AbstractConsole {
|
|||||||
if (!mShown) {
|
if (!mShown) {
|
||||||
show();
|
show();
|
||||||
}
|
}
|
||||||
waitConsoleView();
|
waitForConsoleView();
|
||||||
}
|
}
|
||||||
mConsoleView.showEditText();
|
mConsoleView.showEditText();
|
||||||
try {
|
try {
|
||||||
@@ -175,7 +175,7 @@ public class StardustConsole extends AbstractConsole {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void waitConsoleView() {
|
private void waitForConsoleView() {
|
||||||
synchronized (this) {
|
synchronized (this) {
|
||||||
try {
|
try {
|
||||||
this.wait();
|
this.wait();
|
||||||
|
|||||||
Reference in New Issue
Block a user