add: slide menu
This commit is contained in:
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user