mirror of
https://github.com/2009scape/2009Scape-mobile.git
synced 2025-12-17 12:00:10 -07:00
158 lines
5.1 KiB
Java
158 lines
5.1 KiB
Java
package net.kdt.pojavlaunch;
|
|
|
|
import android.content.*;
|
|
import android.os.*;
|
|
import android.support.design.widget.*;
|
|
import android.support.v4.widget.*;
|
|
import android.support.v7.app.*;
|
|
import android.view.*;
|
|
import android.widget.*;
|
|
import com.google.gson.*;
|
|
import com.kdt.filerapi.*;
|
|
import java.io.*;
|
|
import java.util.*;
|
|
import net.kdt.pojavlaunch.value.customcontrols.*;
|
|
import org.lwjgl.input.*;
|
|
|
|
public class CustomControlsActivity extends AppCompatActivity
|
|
{
|
|
private DrawerLayout drawerLayout;
|
|
private NavigationView navDrawer;
|
|
|
|
private ControlsLayout ctrlLayout;
|
|
|
|
private String selectedName = "";
|
|
|
|
private CustomControls mCtrl;
|
|
|
|
private Gson gson;
|
|
|
|
@Override
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
super.onCreate(savedInstanceState);
|
|
setContentView(R.layout.control_mapping);
|
|
|
|
gson = new GsonBuilder().setPrettyPrinting().create();
|
|
|
|
// Menu
|
|
drawerLayout = (DrawerLayout) findViewById(R.id.customctrl_drawerlayout);
|
|
|
|
navDrawer = (NavigationView) findViewById(R.id.customctrl_navigation_view);
|
|
navDrawer.setNavigationItemSelectedListener(
|
|
new NavigationView.OnNavigationItemSelectedListener() {
|
|
@Override
|
|
public boolean onNavigationItemSelected(MenuItem menuItem) {
|
|
switch (menuItem.getItemId()) {
|
|
case R.id.menu_ctrl_load:
|
|
actionLoad();
|
|
break;
|
|
case R.id.menu_ctrl_add:
|
|
ctrlLayout.addControlButton(new ControlButton("New", Keyboard.CHAR_NONE, 100, 100));
|
|
break;
|
|
}
|
|
//Toast.makeText(MainActivity.this, menuItem.getTitle() + ":" + menuItem.getItemId(), Toast.LENGTH_SHORT).show();
|
|
|
|
drawerLayout.closeDrawers();
|
|
return true;
|
|
}
|
|
});
|
|
|
|
mCtrl = new CustomControls();
|
|
generateDefaultControlMap();
|
|
|
|
ctrlLayout = (ControlsLayout) findViewById(R.id.customctrl_controllayout);
|
|
ctrlLayout.loadLayout(mCtrl);
|
|
ctrlLayout.setModifiable(true);
|
|
}
|
|
|
|
@Override
|
|
public void onBackPressed() {
|
|
final EditText edit = new EditText(this);
|
|
edit.setSingleLine();
|
|
edit.setText(selectedName);
|
|
|
|
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
|
builder.setTitle(R.string.global_save);
|
|
builder.setView(edit);
|
|
builder.setPositiveButton(android.R.string.ok, null);
|
|
builder.setNegativeButton(android.R.string.cancel, null);
|
|
builder.setNeutralButton("Exit without save", new AlertDialog.OnClickListener(){
|
|
|
|
@Override
|
|
public void onClick(DialogInterface p1, int p2)
|
|
{
|
|
CustomControlsActivity.super.onBackPressed();
|
|
}
|
|
});
|
|
final AlertDialog dialog = builder.create();
|
|
dialog.setOnShowListener(new DialogInterface.OnShowListener() {
|
|
|
|
@Override
|
|
public void onShow(DialogInterface dialogInterface) {
|
|
|
|
Button button = dialog.getButton(AlertDialog.BUTTON_POSITIVE);
|
|
button.setOnClickListener(new View.OnClickListener() {
|
|
|
|
@Override
|
|
public void onClick(View view) {
|
|
if (edit.getText().toString().isEmpty()) {
|
|
edit.setError(getResources().getString(R.string.global_error_field_empty));
|
|
} else {
|
|
try {
|
|
Tools.write(Tools.CTRLMAP_PATH + "/" + edit.getText().toString() + ".json", gson.toJson(mCtrl));
|
|
dialog.dismiss();
|
|
CustomControlsActivity.super.onBackPressed();
|
|
} catch (Throwable th) {
|
|
Tools.showError(CustomControlsActivity.this, th);
|
|
}
|
|
}
|
|
}
|
|
});
|
|
}
|
|
});
|
|
dialog.show();
|
|
|
|
}
|
|
|
|
private void actionLoad() {
|
|
AlertDialog.Builder builder = new AlertDialog.Builder(this);
|
|
builder.setTitle("Select control json file");
|
|
builder.setPositiveButton(android.R.string.cancel, null);
|
|
|
|
final AlertDialog dialog = builder.create();
|
|
FileListView flv = new FileListView(this);
|
|
flv.listFileAt(Tools.CTRLMAP_PATH);
|
|
flv.setFileSelectedListener(new FileSelectedListener(){
|
|
|
|
@Override
|
|
public void onFileSelected(File file, String path, String name) {
|
|
if (name.endsWith(".json")) {
|
|
try {
|
|
mCtrl = gson.fromJson(Tools.read(path), CustomControls.class);
|
|
ctrlLayout.loadLayout(mCtrl);
|
|
dialog.dismiss();
|
|
} catch (Exception e) {
|
|
Tools.showError(CustomControlsActivity.this, e);
|
|
}
|
|
}
|
|
}
|
|
});
|
|
dialog.setView(flv);
|
|
dialog.show();
|
|
}
|
|
|
|
private float dpToPx(float dp) {
|
|
return Tools.dpToPx(this, dp);
|
|
}
|
|
|
|
private void generateDefaultControlMap() {
|
|
List<ControlButton> btn = mCtrl.button;
|
|
btn.add(ControlButton.getSpecialButtons()[0]); // Keyboard
|
|
btn.add(ControlButton.getSpecialButtons()[1]); // GUI
|
|
// btn.add(ControlButton.getSpecialButtons()[2]); // Toggle mouse
|
|
btn.add(new ControlButton(this, R.string.control_debug, Keyboard.KEY_F3, ControlButton.pixelOf2dp, ControlButton.pixelOf2dp, false));
|
|
btn.add(new ControlButton(this, R.string.control_chat, Keyboard.KEY_T, ControlButton.pixelOf2dp * 2 + ControlButton.pixelOf80dp, ControlButton.pixelOf2dp, false));
|
|
btn.add(new ControlButton(this, R.string.control_listplayers, Keyboard.KEY_TAB, ControlButton.pixelOf2dp * 3 + ControlButton.pixelOf80dp * 2, ControlButton.pixelOf2dp, false));
|
|
btn.add(new ControlButton(this, R.string.control_thirdperson, Keyboard.KEY_F5, ControlButton.pixelOf2dp, ControlButton.pixelOf2dp, false));
|
|
}
|
|
}
|