mirror of
https://github.com/AngelAuraMC/Amethyst-Android.git
synced 2025-09-17 08:35:37 -04:00
- Major flattening of the code to avoid it being unreadeable.
- New edit button interface with new properties.
This commit is contained in:
parent
9748df5d49
commit
fdddabd1c7
@ -19,7 +19,10 @@
|
|||||||
*/
|
*/
|
||||||
package net.kdt.pojavlaunch.customcontrols.handleview;
|
package net.kdt.pojavlaunch.customcontrols.handleview;
|
||||||
|
|
||||||
|
import android.app.Dialog;
|
||||||
import android.content.*;
|
import android.content.*;
|
||||||
|
import android.graphics.Color;
|
||||||
|
import android.graphics.drawable.ColorDrawable;
|
||||||
import android.view.*;
|
import android.view.*;
|
||||||
import android.view.ViewGroup.*;
|
import android.view.ViewGroup.*;
|
||||||
import android.widget.*;
|
import android.widget.*;
|
||||||
@ -30,10 +33,49 @@ import android.view.View.OnClickListener;
|
|||||||
import net.kdt.pojavlaunch.customcontrols.*;
|
import net.kdt.pojavlaunch.customcontrols.*;
|
||||||
import androidx.appcompat.app.*;
|
import androidx.appcompat.app.*;
|
||||||
|
|
||||||
|
import com.rarepebble.colorpicker.ColorPickerView;
|
||||||
|
|
||||||
public class ActionPopupWindow extends PinnedPopupWindow implements OnClickListener {
|
public class ActionPopupWindow extends PinnedPopupWindow implements OnClickListener {
|
||||||
private TextView mEditTextView;
|
private TextView mEditTextView;
|
||||||
private TextView mDeleteTextView;
|
private TextView mDeleteTextView;
|
||||||
|
|
||||||
|
private AlertDialog.Builder alertBuilder;
|
||||||
|
private Dialog dialog;
|
||||||
|
|
||||||
|
private EditText editName;
|
||||||
|
private Spinner[] spinnersKeycode;
|
||||||
|
|
||||||
|
private CheckBox checkToggle;
|
||||||
|
private CheckBox checkPassThrough;
|
||||||
|
private CheckBox checkDynamicPosition;
|
||||||
|
private CheckBox checkHoldAlt;
|
||||||
|
private CheckBox checkHoldCtrl;
|
||||||
|
private CheckBox checkHoldShift;
|
||||||
|
|
||||||
|
private EditText editWidth;
|
||||||
|
private EditText editHeight;
|
||||||
|
private EditText editDynamicX;
|
||||||
|
private EditText editDynamicY;
|
||||||
|
|
||||||
|
private SeekBar seekBarOpacity;
|
||||||
|
private SeekBar seekBarCornerRadius;
|
||||||
|
private SeekBar seekBarStrokeWidth;
|
||||||
|
|
||||||
|
private ImageButton buttonBackgroundColor;
|
||||||
|
private ImageButton buttonStrokeColor;
|
||||||
|
|
||||||
|
private TextView textOpacity;
|
||||||
|
private TextView textCornerRadius;
|
||||||
|
private TextView textStrokeWidth;
|
||||||
|
|
||||||
|
private ControlData properties;
|
||||||
|
|
||||||
|
private ArrayAdapter<String> adapter;
|
||||||
|
private String[] specialArr;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public ActionPopupWindow(HandleView handleView) {
|
public ActionPopupWindow(HandleView handleView) {
|
||||||
super(handleView);
|
super(handleView);
|
||||||
}
|
}
|
||||||
@ -77,178 +119,30 @@ public class ActionPopupWindow extends PinnedPopupWindow implements OnClickListe
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onClick(final View view) {
|
public void onClick(final View view) {
|
||||||
AlertDialog.Builder alert = new AlertDialog.Builder(view.getContext());
|
alertBuilder = new AlertDialog.Builder(view.getContext());
|
||||||
alert.setCancelable(false);
|
alertBuilder.setCancelable(false);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if (view == mEditTextView) {
|
if (view == mEditTextView) {
|
||||||
alert.setTitle(view.getResources().getString(R.string.customctrl_edit, mHandleView.mView.getText()));
|
properties = mHandleView.mView.getProperties();
|
||||||
alert.setView(R.layout.control_setting);
|
initializeEditDialog(view.getContext());
|
||||||
alert.setPositiveButton(android.R.string.ok, null);
|
|
||||||
alert.setNegativeButton(android.R.string.cancel, null);
|
|
||||||
final AlertDialog dialog = alert.create();
|
|
||||||
final ControlData properties = mHandleView.mView.getProperties();
|
|
||||||
|
|
||||||
dialog.setOnShowListener(new DialogInterface.OnShowListener() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onShow(DialogInterface dialogInterface) {
|
|
||||||
final EditText editName = dialog.findViewById(R.id.controlsetting_edit_name);
|
|
||||||
editName.setText(properties.name);
|
|
||||||
|
|
||||||
final Spinner spinnerKeycode = dialog.findViewById(R.id.controlsetting_spinner_lwjglkeycode);
|
|
||||||
ArrayAdapter<String> adapter = new ArrayAdapter<String>(view.getContext(), android.R.layout.simple_spinner_item);
|
|
||||||
|
|
||||||
String[] oldSpecialArr = ControlData.buildSpecialButtonArray();
|
|
||||||
final String[] specialArr = new String[oldSpecialArr.length];
|
|
||||||
for (int i = 0; i < specialArr.length; i++) {
|
|
||||||
specialArr[i] = "SPECIAL_" + oldSpecialArr[specialArr.length - i - 1];
|
|
||||||
}
|
|
||||||
|
|
||||||
adapter.addAll(specialArr);
|
|
||||||
adapter.addAll(AndroidLWJGLKeycode.generateKeyName());
|
|
||||||
adapter.setDropDownViewResource(android.R.layout.simple_list_item_single_choice);
|
|
||||||
spinnerKeycode.setAdapter(adapter);
|
|
||||||
if (properties.keycode < 0) {
|
|
||||||
spinnerKeycode.setSelection(properties.keycode + specialArr.length);
|
|
||||||
} else {
|
|
||||||
spinnerKeycode.setSelection(AndroidLWJGLKeycode.getIndexByLWJGLKey(properties.keycode) + specialArr.length);
|
|
||||||
}
|
|
||||||
|
|
||||||
final CheckBox checkToggle = dialog.findViewById(R.id.controlsetting_checkbox_toggle);
|
|
||||||
checkToggle.setChecked(properties.isToggle);
|
|
||||||
final CheckBox checkPassthru = dialog.findViewById(R.id.controlsetting_checkbox_passthru);
|
|
||||||
checkPassthru.setChecked(properties.passThruEnabled);
|
|
||||||
final CheckBox checkRound = dialog.findViewById(R.id.controlsetting_checkbox_round);
|
|
||||||
checkRound.setChecked(properties.isRound);
|
|
||||||
final EditText editWidth = dialog.findViewById(R.id.controlsetting_edit_width);
|
|
||||||
final EditText editHeight = dialog.findViewById(R.id.controlsetting_edit_height);
|
|
||||||
editWidth.setText(Float.toString(properties.width));
|
|
||||||
editHeight.setText(Float.toString(properties.height));
|
|
||||||
|
|
||||||
final EditText editDynamicX = dialog.findViewById(R.id.controlsetting_edit_dynamicpos_x);
|
|
||||||
final EditText editDynamicY = dialog.findViewById(R.id.controlsetting_edit_dynamicpos_y);
|
|
||||||
editDynamicX.setEnabled(properties.isDynamicBtn);
|
|
||||||
editDynamicY.setEnabled(properties.isDynamicBtn);
|
|
||||||
|
|
||||||
final SeekBar seekTransparency = dialog.findViewById(R.id.controlsetting_seek_transparency);
|
|
||||||
seekTransparency.setMax(100);
|
|
||||||
seekTransparency.setProgress(properties.hidden ? 100 : properties.transparency);
|
|
||||||
|
|
||||||
final CheckBox checkDynamicPos = dialog.findViewById(R.id.controlsetting_checkbox_dynamicpos);
|
|
||||||
checkDynamicPos.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener(){
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onCheckedChanged(CompoundButton btn, boolean checked) {
|
|
||||||
editDynamicX.setEnabled(checked);
|
|
||||||
editDynamicY.setEnabled(checked);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
checkDynamicPos.setChecked(properties.isDynamicBtn);
|
|
||||||
|
|
||||||
editDynamicX.setHint(Float.toString(properties.x));
|
|
||||||
editDynamicX.setText(properties.dynamicX);
|
|
||||||
|
|
||||||
editDynamicY.setHint(Float.toString(properties.y));
|
|
||||||
editDynamicY.setText(properties.dynamicY);
|
|
||||||
|
|
||||||
final CheckBox checkHoldAlt = dialog.findViewById(R.id.controlsetting_checkbox_keycombine_alt);
|
|
||||||
checkHoldAlt.setChecked(properties.holdAlt);
|
|
||||||
|
|
||||||
final CheckBox checkHoldControl = dialog.findViewById(R.id.controlsetting_checkbox_keycombine_control);
|
|
||||||
checkHoldControl.setChecked(properties.holdCtrl);
|
|
||||||
|
|
||||||
final CheckBox checkHoldShift = dialog.findViewById(R.id.controlsetting_checkbox_keycombine_shift);
|
|
||||||
checkHoldShift.setChecked(properties.holdShift);
|
|
||||||
|
|
||||||
Button button = dialog.getButton(AlertDialog.BUTTON_POSITIVE);
|
|
||||||
button.setOnClickListener(new View.OnClickListener() {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onClick(View view2) {
|
|
||||||
if (editName.getText().toString().isEmpty()) {
|
|
||||||
editName.setError(view.getResources().getString(R.string.global_error_field_empty));
|
|
||||||
} else {
|
|
||||||
/*
|
|
||||||
String errorAt = null;
|
|
||||||
try {
|
|
||||||
errorAt = "DynamicX";
|
|
||||||
properties.insertDynamicPos(editDynamicX.getText().toString());
|
|
||||||
errorAt = "DynamicY";
|
|
||||||
properties.insertDynamicPos(editDynamicY.getText().toString());
|
|
||||||
} catch (Throwable th) {
|
|
||||||
Error e = new Error(errorAt, th);
|
|
||||||
e.setStackTrace(null);
|
|
||||||
Tools.showError(view.getContext(), e);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
errorAt = null;
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (properties.isDynamicBtn) {
|
|
||||||
int errorAt = 0;
|
|
||||||
try {
|
|
||||||
properties.insertDynamicPos(editDynamicX.getText().toString());
|
|
||||||
errorAt = 1;
|
|
||||||
properties.insertDynamicPos(editDynamicY.getText().toString());
|
|
||||||
} catch (Throwable th) {
|
|
||||||
(errorAt == 0 ? editDynamicX : editDynamicY)
|
|
||||||
.setError(th.getMessage());
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (spinnerKeycode.getSelectedItemPosition() < specialArr.length) {
|
|
||||||
properties.keycode = spinnerKeycode.getSelectedItemPosition() - specialArr.length;
|
|
||||||
} else {
|
|
||||||
properties.keycode = AndroidLWJGLKeycode.getKeyByIndex(spinnerKeycode.getSelectedItemPosition() - specialArr.length);
|
|
||||||
}
|
|
||||||
properties.name = editName.getText().toString();
|
|
||||||
|
|
||||||
properties.transparency = seekTransparency.getProgress();
|
|
||||||
|
|
||||||
properties.hidden = false;
|
|
||||||
properties.isToggle = checkToggle.isChecked();
|
|
||||||
properties.passThruEnabled = checkPassthru.isChecked();
|
|
||||||
properties.isRound = checkRound.isChecked();
|
|
||||||
properties.isDynamicBtn = checkDynamicPos.isChecked();
|
|
||||||
properties.width = Float.parseFloat(editWidth.getText().toString());
|
|
||||||
properties.height = Float.parseFloat(editHeight.getText().toString());
|
|
||||||
properties.dynamicX = editDynamicX.getText().toString();
|
|
||||||
properties.dynamicY = editDynamicY.getText().toString();
|
|
||||||
|
|
||||||
properties.holdAlt = checkHoldAlt.isChecked();
|
|
||||||
properties.holdCtrl = checkHoldControl.isChecked();
|
|
||||||
properties.holdShift = checkHoldShift.isChecked();
|
|
||||||
|
|
||||||
if (properties.dynamicX.isEmpty()) {
|
|
||||||
properties.dynamicX = Float.toString(properties.x);
|
|
||||||
} if (properties.dynamicY.isEmpty()) {
|
|
||||||
properties.dynamicY = Float.toString(properties.y);
|
|
||||||
}
|
|
||||||
|
|
||||||
mHandleView.mView.updateProperties();
|
|
||||||
|
|
||||||
dialog.dismiss();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
dialog.show();
|
dialog.show();
|
||||||
} else if (view == mDeleteTextView) {
|
} else if (view == mDeleteTextView) {
|
||||||
alert.setMessage(view.getContext().getString(R.string.customctrl_remove, mHandleView.mView.getText()) + "?");
|
alertBuilder.setMessage(view.getContext().getString(R.string.customctrl_remove, mHandleView.mView.getText()) + "?");
|
||||||
alert.setPositiveButton(R.string.global_remove, new DialogInterface.OnClickListener(){
|
|
||||||
|
|
||||||
@Override
|
alertBuilder.setPositiveButton(R.string.global_remove, (p1, p2) -> {
|
||||||
public void onClick(DialogInterface p1, int p2)
|
ControlLayout layout = ((ControlLayout) mHandleView.mView.getParent());
|
||||||
{
|
layout.removeControlButton(mHandleView.mView);
|
||||||
ControlLayout layout = ((ControlLayout) mHandleView.mView.getParent());
|
});
|
||||||
layout.removeControlButton(mHandleView.mView);
|
alertBuilder.setNegativeButton(android.R.string.cancel, null);
|
||||||
}
|
alertBuilder.show();
|
||||||
});
|
|
||||||
alert.setNegativeButton(android.R.string.cancel, null);
|
|
||||||
alert.show();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
hide();
|
hide();
|
||||||
@ -257,32 +151,229 @@ public class ActionPopupWindow extends PinnedPopupWindow implements OnClickListe
|
|||||||
@Override
|
@Override
|
||||||
protected int getTextOffset() {
|
protected int getTextOffset() {
|
||||||
return 0;
|
return 0;
|
||||||
// return (mTextView.getSelectionStart() + mTextView.getSelectionEnd()) / 2;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected int getVerticalLocalPosition(int line) {
|
protected int getVerticalLocalPosition(int line) {
|
||||||
// return mTextView.getLayout().getLineTop(line) - mContentView.getMeasuredHeight();
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected int clipVertically(int positionY) {
|
protected int clipVertically(int positionY) {
|
||||||
/*
|
|
||||||
if (positionY < 0) {
|
|
||||||
final int offset = getTextOffset();
|
|
||||||
final Layout layout = mTextView.getLayout();
|
|
||||||
final int line = layout.getLineForOffset(offset);
|
|
||||||
positionY += layout.getLineBottom(line) - layout.getLineTop(line);
|
|
||||||
positionY += mContentView.getMeasuredHeight();
|
|
||||||
|
|
||||||
// Assumes insertion and selection handles share the same height
|
|
||||||
final Drawable handle = mHandleView.getContext().getDrawable(
|
|
||||||
mTextView.mTextSelectHandleRes);
|
|
||||||
positionY += handle.getIntrinsicHeight();
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
return positionY;
|
return positionY;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void initializeEditDialog(Context ctx){
|
||||||
|
//TODO: Support the color picker, stroke width/color and corner radius
|
||||||
|
//Create the editing dialog
|
||||||
|
LayoutInflater layoutInflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
|
||||||
|
View v = layoutInflater.inflate(R.layout.control_setting_v2,null);
|
||||||
|
|
||||||
|
alertBuilder.setTitle(ctx.getResources().getString(R.string.customctrl_edit, mHandleView.mView.getText()));
|
||||||
|
alertBuilder.setView(v);
|
||||||
|
|
||||||
|
//Linking a lot of stuff
|
||||||
|
editName = v.findViewById(R.id.controlsetting_edit_name);
|
||||||
|
|
||||||
|
spinnersKeycode = new Spinner[]{
|
||||||
|
v.findViewById(R.id.controlsetting_spinner_lwjglkeycode),
|
||||||
|
v.findViewById(R.id.controlsetting_spinner_lwjglkeycode2),
|
||||||
|
v.findViewById(R.id.controlsetting_spinner_lwjglkeycode3),
|
||||||
|
v.findViewById(R.id.controlsetting_spinner_lwjglkeycode4)
|
||||||
|
};
|
||||||
|
checkToggle = v.findViewById(R.id.controlsetting_checkbox_toggle);
|
||||||
|
checkPassThrough = v.findViewById(R.id.controlsetting_checkbox_passthru);
|
||||||
|
|
||||||
|
editWidth = v.findViewById(R.id.controlsetting_edit_width);
|
||||||
|
editHeight = v.findViewById(R.id.controlsetting_edit_height);
|
||||||
|
|
||||||
|
editDynamicX = v.findViewById(R.id.controlsetting_edit_dynamicpos_x);
|
||||||
|
editDynamicY = v.findViewById(R.id.controlsetting_edit_dynamicpos_y);
|
||||||
|
|
||||||
|
seekBarOpacity = v.findViewById(R.id.controlsetting_seek_opacity);
|
||||||
|
seekBarCornerRadius = v.findViewById(R.id.controlsetting_seek_corner_radius);
|
||||||
|
seekBarStrokeWidth = v.findViewById(R.id.controlsetting_seek_stroke_width);
|
||||||
|
|
||||||
|
buttonBackgroundColor = v.findViewById(R.id.controlsetting_background_color);
|
||||||
|
buttonStrokeColor = v.findViewById(R.id.controlsetting_stroke_color);
|
||||||
|
|
||||||
|
textOpacity = v.findViewById(R.id.controlsetting_text_opacity);
|
||||||
|
textCornerRadius = v.findViewById(R.id.controlsetting_text_corner_radius);
|
||||||
|
textStrokeWidth = v.findViewById(R.id.controlsetting_text_stroke_width);
|
||||||
|
|
||||||
|
checkDynamicPosition = v.findViewById(R.id.controlsetting_checkbox_dynamicpos);
|
||||||
|
checkDynamicPosition.setOnCheckedChangeListener((btn, checked) -> {
|
||||||
|
editDynamicX.setEnabled(checked);
|
||||||
|
editDynamicY.setEnabled(checked);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
checkHoldAlt = v.findViewById(R.id.controlsetting_checkbox_keycombine_alt);
|
||||||
|
checkHoldCtrl = v.findViewById(R.id.controlsetting_checkbox_keycombine_control);
|
||||||
|
checkHoldShift = v.findViewById(R.id.controlsetting_checkbox_keycombine_shift);
|
||||||
|
|
||||||
|
//Initialize adapter for keycodes
|
||||||
|
adapter= new ArrayAdapter<String>(ctx, android.R.layout.simple_spinner_item);
|
||||||
|
String[] oldSpecialArr = ControlData.buildSpecialButtonArray();
|
||||||
|
specialArr = new String[oldSpecialArr.length];
|
||||||
|
for (int i = 0; i < specialArr.length; i++) {
|
||||||
|
specialArr[i] = "SPECIAL_" + oldSpecialArr[specialArr.length - i - 1];
|
||||||
|
}
|
||||||
|
adapter.addAll(specialArr);
|
||||||
|
adapter.addAll(AndroidLWJGLKeycode.generateKeyName());
|
||||||
|
adapter.setDropDownViewResource(android.R.layout.simple_list_item_single_choice);
|
||||||
|
|
||||||
|
for (Spinner spinner : spinnersKeycode) {
|
||||||
|
spinner.setAdapter(adapter);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Set color imageButton behavior
|
||||||
|
buttonBackgroundColor.setOnClickListener(view -> showBackgroundColorPicker(view.getContext()));
|
||||||
|
buttonStrokeColor.setOnClickListener(view -> showStrokeColorPicker(view.getContext()));
|
||||||
|
|
||||||
|
//Set dialog buttons behavior
|
||||||
|
alertBuilder.setPositiveButton(android.R.string.ok, (dialogInterface1, i) -> {
|
||||||
|
if(!hasErrors(dialog.getContext())){
|
||||||
|
saveProperties();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
alertBuilder.setNegativeButton(android.R.string.cancel, null);
|
||||||
|
|
||||||
|
//Create the finalized dialog
|
||||||
|
dialog = alertBuilder.create();
|
||||||
|
|
||||||
|
dialog.setOnShowListener(dialogInterface -> {
|
||||||
|
setEditDialogValues();
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setEditDialogValues(){
|
||||||
|
|
||||||
|
editName.setText(properties.name);
|
||||||
|
|
||||||
|
checkToggle.setChecked(properties.isToggle);
|
||||||
|
checkPassThrough.setChecked(properties.passThruEnabled);
|
||||||
|
|
||||||
|
editWidth.setText(Float.toString(properties.width));
|
||||||
|
editHeight.setText(Float.toString(properties.height));
|
||||||
|
|
||||||
|
editDynamicX.setEnabled(properties.isDynamicBtn);
|
||||||
|
editDynamicY.setEnabled(properties.isDynamicBtn);
|
||||||
|
editDynamicX.setHint(Float.toString(properties.x));
|
||||||
|
editDynamicX.setText(properties.dynamicX);
|
||||||
|
editDynamicY.setHint(Float.toString(properties.y));
|
||||||
|
editDynamicY.setText(properties.dynamicY);
|
||||||
|
|
||||||
|
seekBarOpacity.setProgress(properties.hidden ? 0 : (int)properties.opacity*100);
|
||||||
|
seekBarStrokeWidth.setProgress(properties.strokeWidth);
|
||||||
|
seekBarCornerRadius.setProgress((int)properties.cornerRadius);
|
||||||
|
|
||||||
|
buttonBackgroundColor.setBackgroundColor(properties.bgColor);
|
||||||
|
buttonStrokeColor.setBackgroundColor(properties.strokeColor);
|
||||||
|
|
||||||
|
checkHoldAlt.setChecked(properties.holdAlt);
|
||||||
|
checkHoldCtrl.setChecked(properties.holdCtrl);
|
||||||
|
checkHoldShift.setChecked(properties.holdShift);
|
||||||
|
checkDynamicPosition.setChecked(properties.isDynamicBtn);
|
||||||
|
|
||||||
|
for(int i=0; i< properties.keycodes.length; i++){
|
||||||
|
if (properties.keycodes[i] < 0) {
|
||||||
|
spinnersKeycode[i].setSelection(properties.keycodes[i] + specialArr.length);
|
||||||
|
} else {
|
||||||
|
spinnersKeycode[i].setSelection(AndroidLWJGLKeycode.getIndexByLWJGLKey(properties.keycodes[i]) + specialArr.length);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void saveProperties(){
|
||||||
|
//TODO save new properties
|
||||||
|
//This method assumes there are no error.
|
||||||
|
properties.name = editName.getText().toString();
|
||||||
|
|
||||||
|
//Keycodes
|
||||||
|
for(int i=0; i<spinnersKeycode.length; ++i){
|
||||||
|
if (spinnersKeycode[i].getSelectedItemPosition() < specialArr.length) {
|
||||||
|
properties.keycodes[i] = spinnersKeycode[i].getSelectedItemPosition() - specialArr.length;
|
||||||
|
} else {
|
||||||
|
properties.keycodes[i] = AndroidLWJGLKeycode.getKeyByIndex(spinnersKeycode[i].getSelectedItemPosition() - specialArr.length);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
properties.opacity = seekBarOpacity.getProgress()/100f;
|
||||||
|
properties.strokeWidth = seekBarStrokeWidth.getProgress();
|
||||||
|
properties.cornerRadius = seekBarCornerRadius.getProgress();
|
||||||
|
|
||||||
|
properties.bgColor = ((ColorDrawable) buttonBackgroundColor.getBackground()).getColor();
|
||||||
|
properties.strokeColor = ((ColorDrawable) buttonStrokeColor.getBackground()).getColor();
|
||||||
|
|
||||||
|
properties.hidden = false;
|
||||||
|
properties.isToggle = checkToggle.isChecked();
|
||||||
|
properties.passThruEnabled = checkPassThrough.isChecked();
|
||||||
|
|
||||||
|
properties.width = Float.parseFloat(editWidth.getText().toString());
|
||||||
|
properties.height = Float.parseFloat(editHeight.getText().toString());
|
||||||
|
|
||||||
|
properties.isDynamicBtn = checkDynamicPosition.isChecked();
|
||||||
|
properties.dynamicX = editDynamicX.getText().toString().isEmpty() ? properties.dynamicX = Float.toString(properties.x) : editDynamicX.getText().toString();
|
||||||
|
properties.dynamicY = editDynamicY.getText().toString().isEmpty() ? properties.dynamicY = Float.toString(properties.y) : editDynamicY.getText().toString();
|
||||||
|
|
||||||
|
properties.holdAlt = checkHoldAlt.isChecked();
|
||||||
|
properties.holdCtrl = checkHoldCtrl.isChecked();
|
||||||
|
properties.holdShift = checkHoldShift.isChecked();
|
||||||
|
|
||||||
|
mHandleView.mView.updateProperties();
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean hasErrors(Context ctx){
|
||||||
|
if (editName.getText().toString().isEmpty()) {
|
||||||
|
editName.setError(ctx.getResources().getString(R.string.global_error_field_empty));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (properties.isDynamicBtn) {
|
||||||
|
|
||||||
|
int errorAt = 0;
|
||||||
|
try {
|
||||||
|
properties.insertDynamicPos(editDynamicX.getText().toString());
|
||||||
|
errorAt = 1;
|
||||||
|
properties.insertDynamicPos(editDynamicY.getText().toString());
|
||||||
|
} catch (Throwable th) {
|
||||||
|
(errorAt == 0 ? editDynamicX : editDynamicY).setError(th.getMessage());
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void showBackgroundColorPicker(Context ctx){
|
||||||
|
ColorPickerView picker = new ColorPickerView(ctx);
|
||||||
|
picker.setColor(((ColorDrawable)buttonBackgroundColor.getBackground()).getColor());
|
||||||
|
|
||||||
|
AlertDialog.Builder dialog = new AlertDialog.Builder(ctx);
|
||||||
|
dialog.setTitle("Edit background color");
|
||||||
|
dialog.setView(picker);
|
||||||
|
dialog.setNegativeButton(android.R.string.cancel, null);
|
||||||
|
dialog.setPositiveButton(android.R.string.ok, (dialogInterface, i) -> buttonBackgroundColor.setBackgroundColor(picker.getColor()));
|
||||||
|
|
||||||
|
dialog.show();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void showStrokeColorPicker(Context ctx){
|
||||||
|
ColorPickerView picker = new ColorPickerView(ctx);
|
||||||
|
picker.setColor(((ColorDrawable)buttonStrokeColor.getBackground()).getColor());
|
||||||
|
picker.showAlpha(false);
|
||||||
|
|
||||||
|
AlertDialog.Builder dialog = new AlertDialog.Builder(ctx);
|
||||||
|
dialog.setTitle("Edit stroke color");
|
||||||
|
dialog.setView(picker);
|
||||||
|
dialog.setNegativeButton(android.R.string.cancel, null);
|
||||||
|
dialog.setPositiveButton(android.R.string.ok, (dialogInterface, i) -> buttonStrokeColor.setBackgroundColor(picker.getColor()));
|
||||||
|
|
||||||
|
dialog.show();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user