Work on adding blankable fields

This commit is contained in:
Astatin3
2024-07-16 21:25:34 -06:00
parent 0dfddb7f89
commit 95c8dc45d3
13 changed files with 111 additions and 26 deletions
@@ -60,13 +60,13 @@ public class ScoutingDataWriter {
for(int i = 0; i < values[version].length; i++){
switch (objects.get(i+2).getType()){
case 0:
case 1:
dataTypes[i] = new intType(values[version][i].name, (int) objects.get(i+2).get());
break;
case 1:
case 2:
String name = values[version][i].name;
String value = (String) objects.get(i+2).get();
dataTypes[i] = new stringType(name,value);
dataTypes[i] = new stringType(name, value);
break;
}
}
@@ -7,6 +7,9 @@ public abstract class dataType {
}
public String name;
public Object value;
public abstract boolean isNull();
// public abstract Object getNullValue();
public abstract valueTypes getValueType();
public Object get(){
return value;
@@ -1,9 +1,21 @@
package com.astatin3.scoutingapp2025.types.data;
public class intType extends dataType{
public valueTypes getValueType() {return valueTypes.NUM;}
public intType(String name, int value){
public class intType extends dataType {
private static final int nulval = 255;
public valueTypes getValueType() {
return valueTypes.NUM;
}
public intType(String name, int value) {
super(name);
this.value = value;
}
}
public boolean isNull() {
return ((int) value) == nulval;
}
public static Object getNullValue(){
return nulval;
}
}
@@ -1,9 +1,17 @@
package com.astatin3.scoutingapp2025.types.data;
public class stringType extends dataType{
private static final String nulval = "Joe";
public valueTypes getValueType() {return valueTypes.STRING;}
public stringType(String name, String value){
super(name);
this.value = value;
}
public boolean isNull(){
return value.equals(nulval);
}
public static Object getNullValue(){
return nulval;
}
}
@@ -109,6 +109,7 @@ public class dropdownType extends inputType {
}
public dataType getViewValue(){
if(dropdown == null) return null;
if(dropdown.getVisibility() == View.GONE) return new intType(name, (int)intType.getNullValue());
return new intType(name, dropdown.getSelectedIndex());
}
public void add_individual_view(LinearLayout parent, dataType data){
@@ -2,8 +2,11 @@ package com.astatin3.scoutingapp2025.types.input;
import android.content.Context;
import android.view.View;
import android.widget.CheckBox;
import android.widget.LinearLayout;
import androidx.constraintlayout.widget.ConstraintLayout;
import com.astatin3.scoutingapp2025.types.data.dataType;
import com.astatin3.scoutingapp2025.utility.BuiltByteParser;
import com.astatin3.scoutingapp2025.utility.ByteBuilder;
@@ -21,8 +24,6 @@ public abstract class inputType {
NOTES_INPUT
}
public String name;
public Object default_value;
public abstract inputTypes getInputType();
@@ -12,6 +12,7 @@ import android.widget.LinearLayout;
import android.widget.TextView;
import com.astatin3.scoutingapp2025.types.data.dataType;
import com.astatin3.scoutingapp2025.types.data.intType;
import com.astatin3.scoutingapp2025.types.data.stringType;
import com.astatin3.scoutingapp2025.utility.BuiltByteParser;
import com.astatin3.scoutingapp2025.utility.ByteBuilder;
@@ -64,6 +65,7 @@ public class notesType extends inputType {
}
public dataType getViewValue(){
if(text == null) return null;
if(text.getVisibility() == View.GONE) return new stringType(name, (String) stringType.getNullValue());
return new stringType(name, text.getText().toString());
}
public void add_individual_view(LinearLayout parent, dataType data){
@@ -11,6 +11,7 @@ import androidx.annotation.NonNull;
import com.astatin3.scoutingapp2025.types.data.dataType;
import com.astatin3.scoutingapp2025.types.data.intType;
import com.astatin3.scoutingapp2025.types.data.stringType;
import com.astatin3.scoutingapp2025.utility.BuiltByteParser;
import com.astatin3.scoutingapp2025.utility.ByteBuilder;
import com.github.mikephil.charting.charts.LineChart;
@@ -81,7 +82,8 @@ public class sliderType extends inputType {
}
public dataType getViewValue(){
if(slider == null) return null;
return new intType(name, min + (int) (slider.getValue() * (max-min)));
if(slider.getVisibility() == View.GONE) return new intType(name, (int) intType.getNullValue());
return new intType(name, min + (int) (slider.getValue() * (max-min)));
}
public void add_individual_view(LinearLayout parent, dataType data){
Slider slider = new Slider(parent.getContext());
@@ -72,6 +72,7 @@ public class dataFragment extends Fragment {
// binding.teamsView.setVisibility(View.VISIBLE);
// binding.teamsView.init(binding, event);
// submenu = true;
});
binding.fieldsButton.setOnClickListener(v -> {
@@ -90,6 +91,7 @@ public class dataFragment extends Fragment {
binding.buttons.setVisibility(View.VISIBLE);
binding.statusView.setVisibility(View.GONE);
binding.teamsView.setVisibility(View.GONE);
binding.fieldsView.setVisibility(View.GONE);
submenu = false;
}
@@ -35,6 +35,7 @@ public class fieldsView extends ConstraintLayout {
this.binding = binding;
binding.fieldsSelectButtons.setVisibility(VISIBLE);
binding.fieldsArea.removeAllViews();
binding.fieldsSelectButtons.bringToFront();
binding.fieldsArea.setStretchAllColumns(true);
@@ -2,7 +2,9 @@ package com.astatin3.scoutingapp2025.ui.scouting;
import android.content.Context;
import android.util.AttributeSet;
import android.util.TypedValue;
import android.view.View;
import android.widget.CheckBox;
import android.widget.TextView;
import androidx.constraintlayout.widget.ConstraintLayout;
@@ -13,6 +15,7 @@ import com.astatin3.scoutingapp2025.SettingsVersionStack.latestSettings;
import com.astatin3.scoutingapp2025.databinding.FragmentScoutingBinding;
import com.astatin3.scoutingapp2025.scoutingData.transfer.transferType;
import com.astatin3.scoutingapp2025.types.data.dataType;
import com.astatin3.scoutingapp2025.types.data.intType;
import com.astatin3.scoutingapp2025.types.input.inputType;
import com.astatin3.scoutingapp2025.utility.fileEditor;
import com.astatin3.scoutingapp2025.types.frcEvent;
@@ -147,8 +150,7 @@ public class matchScoutingView extends ConstraintLayout {
update_scouting_data();
}
private int default_text_color = 0;
private void create_fields(){
if(asm.isRunning){
@@ -156,13 +158,15 @@ public class matchScoutingView extends ConstraintLayout {
}
for(int i = 0 ; i < latest_values.length; i++) {
TextView tv = new TextView(getContext());
final TextView tv = new TextView(getContext());
tv.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
tv.setText(latest_values[i].name);
tv.setPadding(8,8,8,8);
tv.setTextSize(24);
binding.MatchScoutArea.addView(tv);
View v = latest_values[i].createView(getContext(), new Function<dataType, Integer>() {
default_text_color = tv.getCurrentTextColor();
final View v = latest_values[i].createView(getContext(), new Function<dataType, Integer>() {
@Override
public Integer apply(dataType dataType) {
// edited = true;
@@ -172,6 +176,26 @@ public class matchScoutingView extends ConstraintLayout {
}
});
binding.MatchScoutArea.addView(tv);
int fi = i;
tv.setOnClickListener(p -> {
boolean blank = latest_values[fi].getViewValue().isNull();
System.out.println(blank);
if(blank){
tv.setBackgroundColor(0xffff0000);
tv.setTextColor(0xff000000);
v.setVisibility(GONE);
latest_values[fi].setViewValue(intType.getNullValue());
}else{
tv.setBackgroundColor(0x00000000);
tv.setTextColor(default_text_color);
v.setVisibility(VISIBLE);
latest_values[fi].setViewValue(latest_values[fi].default_value);
}
});
binding.MatchScoutArea.addView(v);
}
}
@@ -4,10 +4,11 @@ import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
public class BuiltByteParser {
public static final Integer intType = 0;
public static final Integer stringType = 1;
public static final Integer intArrayType = 2;
public static final Integer stringArrayType = 3;
public static final Integer boolType = 0;
public static final Integer intType = 1;
public static final Integer stringType = 2;
public static final Integer intArrayType = 3;
public static final Integer stringArrayType = 4;
public class byteParsingExeption extends Exception {
public byteParsingExeption() {}
@@ -22,6 +23,11 @@ public class BuiltByteParser {
public abstract Object get();
}
public class boolObject extends parsedObject{
boolean val;
public Integer getType(){return boolType;}
public Object get(){return val;}
}
public class intObject extends parsedObject{
int num;
@@ -83,16 +89,21 @@ public class BuiltByteParser {
switch(type){
case 0:
boolObject bo = new boolObject();
bo.val = block[0] == (byte) 1;
objects.add(bo);
break;
case 1:
intObject io = new intObject();
io.num = fileEditor.fromBytes(block, length);
objects.add(io);
break;
case 1:
case 2:
stringObject so = new stringObject();
so.str = new String(block, StandardCharsets.UTF_8);
objects.add(so);
break;
case 2:
case 3:
BuiltByteParser int_bbp = new BuiltByteParser(block);
ArrayList<parsedObject> intArrayObjects = int_bbp.parse();
@@ -106,7 +117,7 @@ public class BuiltByteParser {
ia.arr = intArr;
objects.add(ia);
break;
case 3:
case 4:
BuiltByteParser str_bbp = new BuiltByteParser(block);
ArrayList<parsedObject> strArrayObjects = str_bbp.parse();
@@ -4,10 +4,11 @@ import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
public class ByteBuilder {
public static final int int_id = 0;
public static final int string_id = 1;
public static final int int_arr_id = 2;
public static final int string_arr_id = 3;
public static final int bool_id = 0;
public static final int int_id = 1;
public static final int string_id = 2;
public static final int int_arr_id = 3;
public static final int string_arr_id = 4;
ArrayList<byteType> bytesToBuild = new ArrayList<>();
@@ -24,6 +25,23 @@ public class ByteBuilder {
public abstract byte[] build();
}
private class boolType extends byteType {
public boolean val;
public byte getType(){return bool_id;}
public int length(){return 1;}
public byte[] build(){
return new byte[]{(byte) (val ? 1 : 0)};
}
}
public ByteBuilder addBool(boolean n) throws buildingException {
boolType boolType = new boolType();
boolType.val = n;
bytesToBuild.add(boolType);
return this;
}
private class intType extends byteType {
public int precision;
public int num;