add: slide menu

This commit is contained in:
hyb1996
2017-01-31 22:41:04 +08:00
parent b47eaf9d5e
commit 853a518d97
51 changed files with 1214 additions and 299 deletions

View File

@@ -3,7 +3,7 @@ package com.stardust.scriptdroid;
import android.Manifest;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.os.Build;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.Snackbar;
@@ -11,12 +11,12 @@ import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.widget.Toolbar;
import android.text.InputType;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;
import com.afollestad.materialdialogs.DialogAction;
import com.afollestad.materialdialogs.MaterialDialog;
import com.stardust.app.NotRemindAgainDialog;
import com.stardust.scriptdroid.droid.runtime.action.ActionPerformService;
import com.stardust.scriptdroid.droid.script.file.ScriptFile;
import com.stardust.scriptdroid.droid.script.file.ScriptFileList;
@@ -25,18 +25,19 @@ import com.stardust.scriptdroid.file.FileChooser;
import com.stardust.scriptdroid.file.FileUtils;
import com.stardust.scriptdroid.ui.ScriptFileOperation;
import com.stardust.scriptdroid.ui.ScriptListRecyclerView;
import com.stardust.scriptdroid.ui.SlideMenuFragment;
import com.stardust.scriptdroid.ui.SlidingUpPanel;
import com.stardust.util.MapEntries;
import com.stardust.view.ViewBinder;
import com.stardust.view.ViewBinding;
import com.stardust.view.accessibility.AccessibilityServiceUtils;
import java.io.File;
import java.io.InputStream;
import java.util.Map;
public class MainActivity extends BaseActivity {
private View mView;
private SlidingUpPanel mSlidingUpPanel;
private SlidingUpPanel mAddFilePanel;
private ScriptListRecyclerView mScriptListRecyclerView;
private ScriptFileList mScriptFileList;
private FileChooser mFileChooser;
@@ -45,11 +46,8 @@ public class MainActivity extends BaseActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setUpUI();
setUpFileChooser();
checkPermissions();
}
@@ -60,7 +58,7 @@ public class MainActivity extends BaseActivity {
private void goToAccessibilityPermissionSettingIfDisabled() {
if (!AccessibilityServiceUtils.isAccessibilityServiceEnabled(this, ActionPerformService.class)) {
new MaterialDialog.Builder(this)
new NotRemindAgainDialog.Builder(this)
.title(R.string.text_alert)
.content(R.string.explain_accessibility_permission)
.positiveText(R.string.text_go_to_setting)
@@ -90,7 +88,7 @@ public class MainActivity extends BaseActivity {
private void addScriptFile(final String path) {
new MaterialDialog.Builder(this).title(R.string.text_name)
.inputType(InputType.TYPE_CLASS_TEXT)
.input(getString(R.string.text_please_input_name), "", new MaterialDialog.InputCallback() {
.input(getString(R.string.text_please_input_name), new File(path).getName(), new MaterialDialog.InputCallback() {
@Override
public void onInput(@NonNull MaterialDialog dialog, CharSequence input) {
MainActivity.this.addScriptFile(input.toString(), path);
@@ -105,14 +103,14 @@ public class MainActivity extends BaseActivity {
private void setUpUI() {
mView = View.inflate(this, R.layout.activity_main, null);
setContentView(mView);
mSlidingUpPanel = $(R.id.bottom_menu);
mDrawerLayout = $(R.id.drawer_layout);
mDrawerLayout = (DrawerLayout) View.inflate(this, R.layout.activity_main, null);
setContentView(mDrawerLayout);
SlideMenuFragment.init(this, R.id.fragment_slide_menu);
mAddFilePanel = $(R.id.bottom_menu);
setUpToolbar();
setUpScriptList();
setUpListener();
ViewBinder.bind(this);
}
private void setUpToolbar() {
@@ -128,31 +126,16 @@ public class MainActivity extends BaseActivity {
private void setUpScriptList() {
mScriptListRecyclerView = $(R.id.script_list);
mScriptFileList = new SharedPrefScriptFileList(this);
mScriptFileList = SharedPrefScriptFileList.getInstance();
mScriptListRecyclerView.setScriptFileList(mScriptFileList);
}
private void setUpListener() {
$(R.id.fab).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
mSlidingUpPanel.show();
}
});
$(R.id.import_from_file).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MainActivity.this.showFileChooser();
}
});
$(R.id.create_new_file).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MainActivity.this.createScriptFile();
}
});
@ViewBinding.Click(R.id.fab)
private void showAddFilePanel() {
mAddFilePanel.show();
}
@ViewBinding.Click(R.id.create_new_file)
private void createScriptFile() {
new MaterialDialog.Builder(this).title(R.string.text_name)
.inputType(InputType.TYPE_CLASS_TEXT)
@@ -170,73 +153,42 @@ public class MainActivity extends BaseActivity {
addScriptFile(name, path);
new ScriptFileOperation.Edit().operate(mScriptListRecyclerView, mScriptFileList, mScriptFileList.size() - 1);
} else {
Snackbar.make(mView, R.string.text_file_create_fail, Snackbar.LENGTH_LONG).show();
Snackbar.make(mDrawerLayout, R.string.text_file_create_fail, Snackbar.LENGTH_LONG).show();
}
}
@ViewBinding.Click(R.id.import_from_file)
private void showFileChooser() {
mFileChooser.startFileManagerToChoose("*/*", new FileChooser.FileManagerNotFoundHandler() {
@Override
public void handle(ActivityNotFoundException exception, String mimeType) {
exception.printStackTrace();
Snackbar.make(mView, R.string.text_file_manager_not_found, Snackbar.LENGTH_SHORT).show();
Snackbar.make(mDrawerLayout, R.string.text_file_manager_not_found, Snackbar.LENGTH_SHORT).show();
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
return true;
}
private final Map<Integer, Runnable> mOptionActionMap = new MapEntries<Integer, Runnable>()
.entry(R.id.action_exit, new Runnable() {
@Override
public void run() {
MainActivity.this.finish();
}
})
.entry(R.id.action_disable_service, new Runnable() {
@Override
public void run() {
MainActivity.this.disableAccessibilityService();
}
})
.entry(R.id.action_test, new Runnable() {
@Override
public void run() {
startActivity(new Intent(MainActivity.this, EditActivity.class));
}
})
.map();
@ViewBinding.Click(R.id.setting)
private void startSettingActivity() {
//TODO create Setting Activity
startActivity(new Intent(this, MainActivity.class));
Toast.makeText(this, "暂无", Toast.LENGTH_LONG).show();
}
private void disableAccessibilityService() {
if (ActionPerformService.getInstance() != null && Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
ActionPerformService.getInstance().disableSelf();
}
Snackbar.make(mView, R.string.text_service_disabled, Snackbar.LENGTH_SHORT).show();
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
Runnable action = mOptionActionMap.get(item.getItemId());
if (action != null) {
action.run();
return true;
} else {
return super.onOptionsItemSelected(item);
}
@ViewBinding.Click(R.id.exit)
public void finish() {
super.finish();
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
mFileChooser.onActivityResult(requestCode, resultCode, data);
}
@Override
public void onRequestPermissionsResult(int requestCode,
@NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == PERMISSION_REQUEST_CODE && grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
NonUiInitializer.getInstance().copySampleScriptFileIfNeeded();
mScriptListRecyclerView.getAdapter().notifyDataSetChanged();
}
}
}