Add field deletion

This commit is contained in:
Astatin3
2024-09-14 14:37:05 -06:00
parent d928fe78cf
commit ccf0b56636
3 changed files with 107 additions and 38 deletions
@@ -8,7 +8,6 @@ import android.os.Bundle;
import android.text.InputType;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
@@ -31,7 +30,6 @@ import com.astatin3.scoutingapp2025.types.input.sliderType;
import com.astatin3.scoutingapp2025.types.input.tallyType;
import com.astatin3.scoutingapp2025.types.input.textType;
import com.astatin3.scoutingapp2025.utility.AlertManager;
import com.astatin3.scoutingapp2025.utility.DataManager;
import com.skydoves.powerspinner.IconSpinnerAdapter;
import com.skydoves.powerspinner.IconSpinnerItem;
import com.skydoves.powerspinner.PowerSpinnerView;
@@ -64,6 +62,7 @@ public class FieldsFragment extends Fragment {
binding.upButton.setVisibility(View.GONE);
binding.addButton.setVisibility(View.GONE);
binding.downButton.setVisibility(View.GONE);
binding.deleteButton.setVisibility(View.GONE);
binding.valueEditContainer.setVisibility(View.GONE);
@@ -250,38 +249,95 @@ public class FieldsFragment extends Fragment {
binding.saveButton.setVisibility(View.VISIBLE);
binding.saveButton.setOnClickListener(a -> {
System.out.println(fe.save());
binding.editButton.setVisibility(View.VISIBLE);
binding.addButton.setVisibility(View.VISIBLE);
binding.upButton.setVisibility(View.VISIBLE);
binding.downButton.setVisibility(View.VISIBLE);
binding.ValueEditTable.removeAllViews();
binding.valueEditContainer.setVisibility(View.GONE);
binding.cancelEditButton.setVisibility(View.GONE);
binding.saveButton.setOnClickListener(this::buttonfunc);
defaultVisibility();
});
binding.cancelEditButton.setVisibility(View.VISIBLE);
binding.cancelEditButton.setOnClickListener(a -> {
binding.editButton.setVisibility(View.VISIBLE);
binding.addButton.setVisibility(View.VISIBLE);
binding.upButton.setVisibility(View.VISIBLE);
binding.downButton.setVisibility(View.VISIBLE);
binding.ValueEditTable.removeAllViews();
binding.valueEditContainer.setVisibility(View.GONE);
binding.cancelEditButton.setVisibility(View.GONE);
binding.saveButton.setOnClickListener(this::buttonfunc);
defaultVisibility();
});
binding.deleteButton.setVisibility(View.VISIBLE);
binding.deleteButton.setOnClickListener(a -> {
deleteField(field);
});
});
}
private void deleteField(inputType field){
AlertDialog.Builder alert = new AlertDialog.Builder(getContext());
alert.setTitle("Warning!");
alert.setMessage("Removing a value will result in data being deleted in subsequent field versions!");
alert.setNegativeButton("Cancel", null);
alert.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
defaultVisibility();
int oldindex = -1;
for(int i = 0; i < values[values.length - 1].length; i++){
if(values[values.length - 1][i].equals(field)){
oldindex = i;
break;
}
}
if(oldindex != -1) {
System.out.println(Arrays.toString(values[values.length - 1]));
binding.fieldsArea.removeViewAt(selindex);
binding.fieldsArea.removeElement(oldindex);
values[values.length - 1] = removeElement(values[values.length - 1], oldindex);
selindex = -1;
AlertManager.toast("Removed!");
binding.editButton.setVisibility(View.GONE);
System.out.println(Arrays.toString(values[values.length - 1]));
//System.out.println(values[values.length-1].length);
}
}
});
alert.setCancelable(true);
alert.create().show();
}
public inputType[] removeElement(inputType[] src, int i) {
inputType[] newArray = new inputType[src.length - 1];
if (i > 0){
System.arraycopy(src, 0, newArray, 0, i);
}
if (newArray.length > i){
System.arraycopy(src, i + 1, newArray, i, newArray.length - i);
}
return newArray;
}
private void defaultVisibility() {
binding.editButton.setVisibility(View.VISIBLE);
binding.addButton.setVisibility(View.VISIBLE);
binding.upButton.setVisibility(View.VISIBLE);
binding.downButton.setVisibility(View.VISIBLE);
binding.ValueEditTable.removeAllViews();
binding.valueEditContainer.setVisibility(View.GONE);
binding.cancelEditButton.setVisibility(View.GONE);
binding.deleteButton.setVisibility(View.GONE);
binding.saveButton.setOnClickListener(this::buttonfunc);
}
private void addField(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
builder.setTitle("Title");
@@ -430,26 +486,12 @@ public class FieldsFragment extends Fragment {
addRow(field);
System.out.println(fe.save());
binding.editButton.setVisibility(View.VISIBLE);
binding.addButton.setVisibility(View.VISIBLE);
binding.upButton.setVisibility(View.VISIBLE);
binding.downButton.setVisibility(View.VISIBLE);
binding.ValueEditTable.removeAllViews();
binding.valueEditContainer.setVisibility(View.GONE);
binding.cancelEditButton.setVisibility(View.GONE);
binding.saveButton.setOnClickListener(this::buttonfunc);
defaultVisibility();
});
binding.cancelEditButton.setVisibility(View.VISIBLE);
binding.cancelEditButton.setOnClickListener(a -> {
binding.editButton.setVisibility(View.VISIBLE);
binding.addButton.setVisibility(View.VISIBLE);
binding.upButton.setVisibility(View.VISIBLE);
binding.downButton.setVisibility(View.VISIBLE);
binding.ValueEditTable.removeAllViews();
binding.valueEditContainer.setVisibility(View.GONE);
binding.cancelEditButton.setVisibility(View.GONE);
binding.saveButton.setOnClickListener(this::buttonfunc);
defaultVisibility();
});
}
@@ -5,6 +5,7 @@ import android.util.AttributeSet;
import android.view.View;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
@@ -141,4 +142,17 @@ public class ReorderableTableLayout extends TableLayout {
public List<Integer> getReorderedIndexes() {
return reorderedIndices;
}
public void removeElement(int unshuffledindex){
System.out.println(Arrays.toString(new List[]{reorderedIndices}));
reorderedIndices.remove(unshuffledindex);
for (int i = 0; i < reorderedIndices.size(); i++) {
if(reorderedIndices.get(i) > unshuffledindex)
reorderedIndices.set(i, reorderedIndices.get(i) - 1);
}
System.out.println(Arrays.toString(new List[]{reorderedIndices}));
}
}
@@ -59,9 +59,22 @@
android:layout_height="wrap_content"
android:text="Cancel"
android:textSize="20sp"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
app:layout_constraintEnd_toEndOf="parent"
tools:visibility="gone" />
<Button
android:id="@+id/delete_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Delete"
android:textSize="20sp"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
tools:visibility="gone" />
<Button
android:id="@+id/revert_version_button"
@@ -85,13 +98,13 @@
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
android:paddingBottom="60dp">
<com.astatin3.scoutingapp2025.utility.ReorderableTableLayout
android:id="@+id/fieldsArea"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="60dp">
android:layout_height="match_parent">
</com.astatin3.scoutingapp2025.utility.ReorderableTableLayout>
</ScrollView>