initial commit
This commit is contained in:
@@ -0,0 +1,149 @@
|
||||
package com.stardust.scriptdroid.ui;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.net.Uri;
|
||||
import android.support.design.widget.Snackbar;
|
||||
|
||||
import com.afollestad.materialdialogs.MaterialDialog;
|
||||
import com.stardust.scriptdroid.R;
|
||||
import com.stardust.scriptdroid.ShortcutActivity;
|
||||
import com.stardust.scriptdroid.data.ScriptFile;
|
||||
import com.stardust.scriptdroid.data.ScriptFileList;
|
||||
import com.stardust.scriptdroid.shortcut.Shortcut;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by Stardust on 2017/1/23.
|
||||
*/
|
||||
|
||||
public abstract class ScriptFileOperation {
|
||||
|
||||
private static List<String> operationNames = new ArrayList<>();
|
||||
private static List<ScriptFileOperation> operations = new ArrayList<>();
|
||||
|
||||
public static ScriptFileOperation getOperation(int index) {
|
||||
return operations.get(index);
|
||||
}
|
||||
|
||||
public static List<String> getOperationNames() {
|
||||
return operationNames;
|
||||
}
|
||||
|
||||
public abstract void operate(ScriptListRecyclerView recyclerView, ScriptFileList scriptFileList, int position);
|
||||
|
||||
private static void addOperation(String name, int iconResId, ScriptFileOperation operation) {
|
||||
operation.mName = name;
|
||||
operation.mIconResId = iconResId;
|
||||
operationNames.add(name);
|
||||
operations.add(operation);
|
||||
}
|
||||
|
||||
private String mName;
|
||||
private int mIconResId;
|
||||
|
||||
public String getName() {
|
||||
return mName;
|
||||
}
|
||||
|
||||
public int getIconResId() {
|
||||
return mIconResId;
|
||||
}
|
||||
|
||||
public static class Run extends ScriptFileOperation {
|
||||
|
||||
static {
|
||||
addOperation("运行", R.drawable.ic_play_green, new Run());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void operate(ScriptListRecyclerView recyclerView, ScriptFileList scriptFileList, int position) {
|
||||
Snackbar.make(recyclerView, "开始运行", Snackbar.LENGTH_SHORT).show();
|
||||
ScriptFile scriptFile = scriptFileList.get(position);
|
||||
scriptFile.run(recyclerView.getContext());
|
||||
}
|
||||
}
|
||||
|
||||
public static class Edit extends ScriptFileOperation {
|
||||
|
||||
static {
|
||||
addOperation("编辑", R.drawable.ic_edit_green_48dp, new Edit());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void operate(ScriptListRecyclerView recyclerView, ScriptFileList scriptFileList, int position) {
|
||||
Context context = recyclerView.getContext();
|
||||
ScriptFile scriptFile = scriptFileList.get(position);
|
||||
Uri uri = Uri.parse("file://" + scriptFile.path);
|
||||
context.startActivity(new Intent(Intent.ACTION_EDIT).setDataAndType(uri, "text/plain"));
|
||||
}
|
||||
}
|
||||
|
||||
public static class Rename extends ScriptFileOperation {
|
||||
|
||||
static {
|
||||
addOperation("重命名", R.drawable.ic_rename_green, new Rename());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void operate(final ScriptListRecyclerView recyclerView, final ScriptFileList scriptFileList, final int position) {
|
||||
String oldName = scriptFileList.get(position).name;
|
||||
new MaterialDialog.Builder(recyclerView.getContext()).title("重命名")
|
||||
.input("输入新名称", oldName, (dialog, input) -> {
|
||||
scriptFileList.rename(position, input.toString());
|
||||
recyclerView.getAdapter().notifyItemChanged(position);
|
||||
}).show();
|
||||
}
|
||||
}
|
||||
|
||||
public static class CreateShortcut extends ScriptFileOperation {
|
||||
|
||||
static {
|
||||
addOperation("创建桌面快捷方式", R.drawable.ic_shortcut_green, new CreateShortcut());
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void operate(ScriptListRecyclerView recyclerView, ScriptFileList scriptFileList, int position) {
|
||||
Context context = recyclerView.getContext();
|
||||
ScriptFile scriptFile = scriptFileList.get(position);
|
||||
new Shortcut(context).name(scriptFile.name)
|
||||
.targetClass(ShortcutActivity.class)
|
||||
.icon(R.drawable.script_droid)
|
||||
.extras(new Intent().putExtra("path", scriptFile.path))
|
||||
.send();
|
||||
Snackbar.make(recyclerView, "已创建", Snackbar.LENGTH_SHORT).show();
|
||||
}
|
||||
}
|
||||
|
||||
public static class Remove extends ScriptFileOperation {
|
||||
|
||||
static {
|
||||
addOperation("删除", R.drawable.ic_delete_green_48dp, new Remove());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void operate(ScriptListRecyclerView recyclerView, ScriptFileList scriptFileList, int position) {
|
||||
scriptFileList.remove(position);
|
||||
recyclerView.getAdapter().notifyItemRemoved(position);
|
||||
}
|
||||
}
|
||||
|
||||
public static class Delete extends ScriptFileOperation {
|
||||
|
||||
static {
|
||||
addOperation("彻底删除", R.drawable.ic_delete_forever_green_48dp, new Delete());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void operate(ScriptListRecyclerView recyclerView, ScriptFileList scriptFileList, int position) {
|
||||
boolean succeed = scriptFileList.deleteFromFileSystem(position);
|
||||
Snackbar.make(recyclerView, succeed ? "已删除" : "文件删除失败", Snackbar.LENGTH_SHORT).show();
|
||||
recyclerView.getAdapter().notifyItemRemoved(position);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user