From 36801e2f9bc9f45ca44d521b3e4920cc4101cced Mon Sep 17 00:00:00 2001 From: Michael Mikovsky <77305074+Astatin3@users.noreply.github.com> Date: Mon, 21 Apr 2025 12:06:37 -0600 Subject: [PATCH] Add comments to classes and update TODO --- TODO.md | 27 ++++-- .../ridgebotics/ridgescout/MainActivity.java | 9 +- .../ridgescout/scoutingData/Fields.java | 2 + .../scoutingData/ScoutingDataWriter.java | 30 +++--- .../transfer/CreateTransferType.java | 1 + .../transfer/DirectTransferType.java | 1 + .../scoutingData/transfer/TransferType.java | 5 + .../ridgescout/types/ScoutingArray.java | 19 ++-- .../ridgescout/types/ScoutingFile.java | 1 + .../ridgescout/types/data/IntArrType.java | 4 +- .../ridgescout/types/data/IntType.java | 3 +- .../data/{DataType.java => RawDataType.java} | 5 +- .../ridgescout/types/data/StringType.java | 3 +- .../ridgescout/types/frcEvent.java | 2 + .../ridgescout/types/frcMatch.java | 2 + .../ridgebotics/ridgescout/types/frcTeam.java | 2 + .../ridgescout/types/input/CheckboxType.java | 18 ++-- .../ridgescout/types/input/DropdownType.java | 20 ++-- .../ridgescout/types/input/FieldType.java | 22 +++-- .../ridgescout/types/input/FieldposType.java | 28 +++--- .../ridgescout/types/input/NumberType.java | 24 +++-- .../ridgescout/types/input/SliderType.java | 19 ++-- .../ridgescout/types/input/TallyType.java | 29 +++--- .../ridgescout/types/input/TextType.java | 19 ++-- .../ridgescout/ui/TeamSelectorFragment.java | 94 ------------------- .../ridgescout/ui/data/DataFragment.java | 10 +- .../ui/data/DataParentFragment.java | 10 +- .../ridgescout/ui/data/DataProcessing.java | 13 +-- .../ridgescout/ui/data/FieldDataFragment.java | 7 +- .../ridgescout/ui/data/TeamsFragment.java | 7 +- .../ridgescout/ui/scouting/EventFragment.java | 3 +- .../ui/scouting/MatchScoutingFragment.java | 9 +- .../ui/scouting/PitScoutingFragment.java | 15 +-- .../ui/scouting/PitSelectorFragment.java | 9 +- .../ui/scouting/ScoutingFragment.java | 1 + .../ui/settings/FieldEditorHelper.java | 1 + .../ui/settings/FieldsFragment.java | 6 +- .../ui/settings/SettingsFragment.java | 7 +- .../ridgescout/ui/transfer/CSVExport.java | 7 +- .../ridgescout/ui/transfer/FTPSync.java | 2 +- .../ridgescout/ui/transfer/FileBundle.java | 22 +---- .../ui/transfer/FileSelectorFragment.java | 1 + .../ui/transfer/TBAEventFragment.java | 1 + .../ui/transfer/TBASelectorFragment.java | 3 +- .../ui/transfer/TransferFragment.java | 1 + .../ui/transfer/TransferSelectorFragment.java | 1 + .../transfer/bluetooth/BluetoothReceiver.java | 3 +- .../bluetooth/BluetoothReceiverFragment.java | 1 + .../transfer/bluetooth/BluetoothSender.java | 3 +- .../bluetooth/BluetoothSenderFragment.java | 1 + .../ui/transfer/codes/CodeGeneratorView.java | 1 + .../ui/transfer/codes/CodeOverlayView.java | 1 + .../ui/transfer/codes/CodeScanTask.java | 1 + .../ui/transfer/codes/CodeScannerView.java | 2 +- .../ui/{ => views}/BackgroundView.java | 8 +- .../ui/{ => views}/CandlestickHeader.java | 4 +- .../ui/{ => views}/CandlestickView.java | 8 +- .../ui/{ => views}/CustomSpinnerPopup.java | 16 +--- .../ui/{ => views}/CustomSpinnerView.java | 3 +- .../ui/{ => views}/FieldBorderedRow.java | 2 +- .../ui/{ => views}/FieldDisplay.java | 9 +- .../ui/{scouting => views}/FieldPosView.java | 3 +- .../MultiFieldPosView.java | 5 +- .../ui/{ => views}/TBAEventOption.java | 6 +- .../{scouting => views}/TallyCounterView.java | 3 +- .../ridgescout/ui/{ => views}/TeamCard.java | 3 +- .../ui/{ => views}/TeamListOption.java | 3 +- .../ui/{ => views}/ToggleTitleView.java | 4 +- .../ridgescout/utility/AlertManager.java | 3 + .../ridgescout/utility/AutoSaveManager.java | 2 + .../ridgescout/utility/BuiltByteParser.java | 1 + .../ridgescout/utility/ByteBuilder.java | 1 + .../ridgescout/utility/Colors.java | 3 +- .../ridgescout/utility/DataManager.java | 1 + .../ridgescout/utility/FileEditor.java | 1 + .../ridgescout/utility/ImageRequestTask.java | 2 + .../ridgescout/utility/JSONUtil.java | 1 + .../ridgescout/utility/RequestTask.java | 2 + .../ridgescout/utility/SentimentAnalysis.java | 2 + .../ridgescout/utility/SettingsManager.java | 1 + .../ridgescout/utility/SharePrompt.java | 1 + app/src/main/res/layout/fragment_data.xml | 2 +- .../main/res/layout/fragment_data_teams.xml | 4 +- .../res/layout/fragment_scouting_match.xml | 2 +- .../main/res/layout/fragment_scouting_pit.xml | 2 +- 85 files changed, 281 insertions(+), 365 deletions(-) rename app/src/main/java/com/ridgebotics/ridgescout/types/data/{DataType.java => RawDataType.java} (84%) delete mode 100644 app/src/main/java/com/ridgebotics/ridgescout/ui/TeamSelectorFragment.java rename app/src/main/java/com/ridgebotics/ridgescout/ui/{ => views}/BackgroundView.java (96%) rename app/src/main/java/com/ridgebotics/ridgescout/ui/{ => views}/CandlestickHeader.java (97%) rename app/src/main/java/com/ridgebotics/ridgescout/ui/{ => views}/CandlestickView.java (96%) rename app/src/main/java/com/ridgebotics/ridgescout/ui/{ => views}/CustomSpinnerPopup.java (85%) rename app/src/main/java/com/ridgebotics/ridgescout/ui/{ => views}/CustomSpinnerView.java (97%) rename app/src/main/java/com/ridgebotics/ridgescout/ui/{ => views}/FieldBorderedRow.java (97%) rename app/src/main/java/com/ridgebotics/ridgescout/ui/{ => views}/FieldDisplay.java (92%) rename app/src/main/java/com/ridgebotics/ridgescout/ui/{scouting => views}/FieldPosView.java (97%) rename app/src/main/java/com/ridgebotics/ridgescout/ui/{scouting => views}/MultiFieldPosView.java (93%) rename app/src/main/java/com/ridgebotics/ridgescout/ui/{ => views}/TBAEventOption.java (93%) rename app/src/main/java/com/ridgebotics/ridgescout/ui/{scouting => views}/TallyCounterView.java (93%) rename app/src/main/java/com/ridgebotics/ridgescout/ui/{ => views}/TeamCard.java (96%) rename app/src/main/java/com/ridgebotics/ridgescout/ui/{ => views}/TeamListOption.java (95%) rename app/src/main/java/com/ridgebotics/ridgescout/ui/{ => views}/ToggleTitleView.java (96%) diff --git a/TODO.md b/TODO.md index 8439971..0006f6f 100644 --- a/TODO.md +++ b/TODO.md @@ -1,24 +1,31 @@ ### TODO: ##### Scouting: +- Make an easier way to make game-specific UI elements ##### Data Analysis: -- Statbotics intigration??? +- Add analysis for the rest of the data types besides Tally +- Add a "scout note" system for scouters to contribute to the scouting report? +- Make data that has been marked for rescouting not processed in either by team or by type analysis. ##### Functionality: -- Test new FTP thing -- UUIDs instead of names for the fields -- Fix data storage crashes -- Match selector instead of list for individual team views +- Rewrite FTP transfer to be over HTTP requests +- - Potentially using a python server or some other pre-existing file transfer over HTTP +- Delete file menu +- Make "Sync meta files" option only block uploading fields specifically. +##### UI: +- Update docs and README.md with new features +- Improve file status indicator for scouting +- - The autosave timeout can be significantly reduced, so the save indicator is not a necessity +- - A new system for the rescout indicator should be used. +- Improve UI elements for scouting data by team +- Field button in settings overlaps with other elements in some devices ### In Progress: ##### Scouting: -- Make scouting UI look much better ##### Data Analysis: ##### Functionality: +##### UI: ### Done: ##### Scouting: -- Make practice mode -- Description for fields ##### Data Analysis: ##### Functionality: -- "Send Meta Files" button -- Year selector \ No newline at end of file +##### UI: \ No newline at end of file diff --git a/app/src/main/java/com/ridgebotics/ridgescout/MainActivity.java b/app/src/main/java/com/ridgebotics/ridgescout/MainActivity.java index f98b427..74cf131 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/MainActivity.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/MainActivity.java @@ -24,6 +24,9 @@ import com.ridgebotics.ridgescout.utility.SettingsManager; import java.util.Objects; import java.util.TimeZone; +// Entrypoint for the scouting app. +// Configures stuff like the nav menu +// Also has some extra functions like a better back stack or a way to suppress the back button. public class MainActivity extends AppCompatActivity { @@ -37,19 +40,21 @@ public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { - + // Load shared prefrences SettingsManager.prefs = this.getSharedPreferences( "com.ridgebotics.ridgescout", Context.MODE_PRIVATE); + // Load default match fields if(!FileEditor.fileExist(Fields.matchFieldsFilename)){ Fields.save(Fields.matchFieldsFilename, Fields.default_match_fields); } + // Load default pit fields if(!FileEditor.fileExist(Fields.pitsFieldsFilename)){ Fields.save(Fields.pitsFieldsFilename, Fields.default_pit_fields); } - + // get time zone for FTP file transfer TimeZone.setDefault(TimeZone.getTimeZone("UTC")); AlertManager.init(this); diff --git a/app/src/main/java/com/ridgebotics/ridgescout/scoutingData/Fields.java b/app/src/main/java/com/ridgebotics/ridgescout/scoutingData/Fields.java index 961a4a0..c77b368 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/scoutingData/Fields.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/scoutingData/Fields.java @@ -16,6 +16,8 @@ import com.ridgebotics.ridgescout.utility.ByteBuilder; import java.util.ArrayList; import java.util.UUID; + +// The mechanism to load, save, and create the fields based off of the raw types from ScoutingDataWriter.java public class Fields { // public static ScoutingVersion sv = new ScoutingVersion(); diff --git a/app/src/main/java/com/ridgebotics/ridgescout/scoutingData/ScoutingDataWriter.java b/app/src/main/java/com/ridgebotics/ridgescout/scoutingData/ScoutingDataWriter.java index e9dd6a5..397ad0c 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/scoutingData/ScoutingDataWriter.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/scoutingData/ScoutingDataWriter.java @@ -2,7 +2,7 @@ package com.ridgebotics.ridgescout.scoutingData; import com.ridgebotics.ridgescout.scoutingData.transfer.TransferType; import com.ridgebotics.ridgescout.types.ScoutingArray; -import com.ridgebotics.ridgescout.types.data.DataType; +import com.ridgebotics.ridgescout.types.data.RawDataType; import com.ridgebotics.ridgescout.types.data.IntArrType; import com.ridgebotics.ridgescout.types.data.StringType; import com.ridgebotics.ridgescout.types.input.FieldType; @@ -12,17 +12,17 @@ import com.ridgebotics.ridgescout.utility.FileEditor; import com.ridgebotics.ridgescout.utility.BuiltByteParser; import com.ridgebotics.ridgescout.utility.ByteBuilder; -import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; import java.util.List; + +// Mostly an extension of Fields.java. Saves the raw data from each Field Type. public class ScoutingDataWriter { // private static final int int_type_id = 255; // private static final int string_type_id = 254; - public static boolean save(int version, String username, String filename, DataType[] data){ + public static boolean save(int version, String username, String filename, RawDataType[] data){ ByteBuilder bb = new ByteBuilder(); try { bb.addInt(version); @@ -64,7 +64,7 @@ public class ScoutingDataWriter { try { ArrayList objects = bbp.parse(); - DataType[] dataTypes = new DataType[objects.size()-2]; + RawDataType[] rawDataTypes = new RawDataType[objects.size()-2]; int version = ((int)objects.get(0).get()); @@ -80,24 +80,24 @@ public class ScoutingDataWriter { for(int i = 0; i < values[version].length; i++){ switch (objects.get(i+2).getType()){ case 1: // Int - dataTypes[i] = IntType.newNull(values[version][i].UUID); - dataTypes[i].forceSetValue(objects.get(i+2).get()); - System.out.println("Loaded INT: " + values[version][i].name + " (" + values[version][i].UUID + ") " + ", ("+ dataTypes[i].get() +")"); + rawDataTypes[i] = IntType.newNull(values[version][i].UUID); + rawDataTypes[i].forceSetValue(objects.get(i+2).get()); + System.out.println("Loaded INT: " + values[version][i].name + " (" + values[version][i].UUID + ") " + ", ("+ rawDataTypes[i].get() +")"); break; case 2: // String - dataTypes[i] = StringType.newNull(values[version][i].UUID); - dataTypes[i].forceSetValue(objects.get(i+2).get()); - System.out.println("Loaded STR: " + values[version][i].name + " (" + values[version][i].UUID + ") " + ", ("+ dataTypes[i].get() +")"); + rawDataTypes[i] = StringType.newNull(values[version][i].UUID); + rawDataTypes[i].forceSetValue(objects.get(i+2).get()); + System.out.println("Loaded STR: " + values[version][i].name + " (" + values[version][i].UUID + ") " + ", ("+ rawDataTypes[i].get() +")"); break; case 3: // Int array - dataTypes[i] = IntArrType.newNull(values[version][i].UUID); - dataTypes[i].forceSetValue(objects.get(i+2).get()); - System.out.println("Loaded intARR: " + values[version][i].name + " (" + values[version][i].UUID + ") " + ", ("+ Arrays.toString((int[])dataTypes[i].get()) +")"); + rawDataTypes[i] = IntArrType.newNull(values[version][i].UUID); + rawDataTypes[i].forceSetValue(objects.get(i+2).get()); + System.out.println("Loaded intARR: " + values[version][i].name + " (" + values[version][i].UUID + ") " + ", ("+ Arrays.toString((int[]) rawDataTypes[i].get()) +")"); break; } } - ScoutingArray msa = new ScoutingArray(version, dataTypes, values, transferValues); + ScoutingArray msa = new ScoutingArray(version, rawDataTypes, values, transferValues); msa.update(); ParsedScoutingDataResult psda = new ParsedScoutingDataResult(); diff --git a/app/src/main/java/com/ridgebotics/ridgescout/scoutingData/transfer/CreateTransferType.java b/app/src/main/java/com/ridgebotics/ridgescout/scoutingData/transfer/CreateTransferType.java index a42cb21..f923ef6 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/scoutingData/transfer/CreateTransferType.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/scoutingData/transfer/CreateTransferType.java @@ -1,5 +1,6 @@ package com.ridgebotics.ridgescout.scoutingData.transfer; +// Transfer type if a field was created public class CreateTransferType extends TransferType { public transferValue getType() {return transferValue.CREATE;} public CreateTransferType(String UUID){ diff --git a/app/src/main/java/com/ridgebotics/ridgescout/scoutingData/transfer/DirectTransferType.java b/app/src/main/java/com/ridgebotics/ridgescout/scoutingData/transfer/DirectTransferType.java index ca1c319..c0c8a9b 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/scoutingData/transfer/DirectTransferType.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/scoutingData/transfer/DirectTransferType.java @@ -1,5 +1,6 @@ package com.ridgebotics.ridgescout.scoutingData.transfer; +// Transfer type if a field directly transfers public class DirectTransferType extends TransferType { public transferValue getType() {return transferValue.DIRECT;} public DirectTransferType(String UUID){ diff --git a/app/src/main/java/com/ridgebotics/ridgescout/scoutingData/transfer/TransferType.java b/app/src/main/java/com/ridgebotics/ridgescout/scoutingData/transfer/TransferType.java index b279474..c768635 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/scoutingData/transfer/TransferType.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/scoutingData/transfer/TransferType.java @@ -2,6 +2,10 @@ package com.ridgebotics.ridgescout.scoutingData.transfer; import com.ridgebotics.ridgescout.types.input.FieldType; + +// The "Transfer Types" system, a component in the loading of scouting data. +// Dictates how the +// For example, a field can be created in one version, and how the app updates it is by obtaining it's transfer value, in this case being "create". public abstract class TransferType { public enum transferValue { DIRECT, @@ -22,6 +26,7 @@ public abstract class TransferType { return null; } + //Inputs: public static TransferType[][] get_transfer_values(FieldType[][] values) { TransferType[][] output = new TransferType[values.length][]; for(int a = 1; a < values.length; a++){ diff --git a/app/src/main/java/com/ridgebotics/ridgescout/types/ScoutingArray.java b/app/src/main/java/com/ridgebotics/ridgescout/types/ScoutingArray.java index d9d2bfa..42e58f0 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/types/ScoutingArray.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/types/ScoutingArray.java @@ -3,19 +3,20 @@ package com.ridgebotics.ridgescout.types; import com.ridgebotics.ridgescout.scoutingData.transfer.CreateTransferType; import com.ridgebotics.ridgescout.scoutingData.transfer.DirectTransferType; import com.ridgebotics.ridgescout.scoutingData.transfer.TransferType; -import com.ridgebotics.ridgescout.types.data.DataType; +import com.ridgebotics.ridgescout.types.data.RawDataType; import com.ridgebotics.ridgescout.types.data.IntType; import com.ridgebotics.ridgescout.types.data.StringType; import com.ridgebotics.ridgescout.types.input.FieldType; +// A wrapper class for the stuff going on in Fields.java and ScoutingDataWriter.java. public class ScoutingArray { public int version; - public DataType[] array; + public RawDataType[] array; public FieldType[][] values; public int latest_version_num; public TransferType[][] transfer_values; - public ScoutingArray(int version, DataType[] array, FieldType[][] values, TransferType[][] transfer_values){ + public ScoutingArray(int version, RawDataType[] array, FieldType[][] values, TransferType[][] transfer_values){ this.version = version; this.array = array; this.values = values; @@ -23,13 +24,13 @@ public class ScoutingArray { this.transfer_values = transfer_values; } - public ScoutingArray(int version, DataType[] array, FieldType[][] values){ + public ScoutingArray(int version, RawDataType[] array, FieldType[][] values){ this(version, array, values, TransferType.get_transfer_values(values)); } public void update(){ while(version onUpdate){ + public View createView(Context context, Function onUpdate){ checkBox = new CheckBox(context); checkBox.setTextAppearance(com.google.android.material.R.style.TextAppearance_MaterialComponents_Headline6); checkBox.setText(name); @@ -85,7 +85,7 @@ public class CheckboxType extends FieldType { isBlank = true; checkBox.setVisibility(View.GONE); } - public DataType getViewValue(){ + public RawDataType getViewValue(){ if(checkBox == null) return null; if(checkBox.getVisibility() == View.GONE) return new IntType(name, IntType.nullval); return new IntType(name, checkBox.isChecked() ? 1 : 0); @@ -96,7 +96,7 @@ public class CheckboxType extends FieldType { - public void add_individual_view(LinearLayout parent, DataType data){ + public void add_individual_view(LinearLayout parent, RawDataType data){ if(data.isNull()) return; CheckBox cb = new CheckBox(parent.getContext()); cb.setTextAppearance(com.google.android.material.R.style.TextAppearance_MaterialComponents_Headline6); @@ -107,7 +107,7 @@ public class CheckboxType extends FieldType { } - public void add_compiled_view(LinearLayout parent, DataType[] data){ + public void add_compiled_view(LinearLayout parent, RawDataType[] data){ PieChart chart = new PieChart(parent.getContext()); FrameLayout.LayoutParams layout = new FrameLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, @@ -147,7 +147,7 @@ public class CheckboxType extends FieldType { - public void add_history_view(LinearLayout parent, DataType[] data){ + public void add_history_view(LinearLayout parent, RawDataType[] data){ LineChart chart = new LineChart(parent.getContext()); FrameLayout.LayoutParams layout = new FrameLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, @@ -207,11 +207,11 @@ public class CheckboxType extends FieldType { parent.addView(chart); } - public void addDataToTable(TableLayout parent, Map> data){ + public void addDataToTable(TableLayout parent, Map> data){ } - public String toString(DataType data){ + public String toString(RawDataType data){ return (int) data.get() == 1 ? "true" : "false"; } } diff --git a/app/src/main/java/com/ridgebotics/ridgescout/types/input/DropdownType.java b/app/src/main/java/com/ridgebotics/ridgescout/types/input/DropdownType.java index b80eddb..ef87f34 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/types/input/DropdownType.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/types/input/DropdownType.java @@ -15,9 +15,9 @@ import android.widget.LinearLayout; import android.widget.TableLayout; import android.widget.TextView; -import com.ridgebotics.ridgescout.types.data.DataType; +import com.ridgebotics.ridgescout.types.data.RawDataType; import com.ridgebotics.ridgescout.types.data.IntType; -import com.ridgebotics.ridgescout.ui.CustomSpinnerView; +import com.ridgebotics.ridgescout.ui.views.CustomSpinnerView; import com.ridgebotics.ridgescout.utility.BuiltByteParser; import com.ridgebotics.ridgescout.utility.ByteBuilder; import com.github.mikephil.charting.charts.LineChart; @@ -40,7 +40,7 @@ public class DropdownType extends FieldType { public String[] text_options; public int get_byte_id() {return dropdownType;} public inputTypes getInputType(){return inputTypes.DROPDOWN;} - public DataType.valueTypes getValueType(){return DataType.valueTypes.NUM;} + public RawDataType.valueTypes getValueType(){return RawDataType.valueTypes.NUM;} public Object get_fallback_value(){return 0;} public DropdownType(){}; public String get_type_name(){return "Dropdown";} @@ -62,7 +62,7 @@ public class DropdownType extends FieldType { public CustomSpinnerView dropdown = null; - public View createView(Context context, Function onUpdate){ + public View createView(Context context, Function onUpdate){ dropdown = new CustomSpinnerView(context); ArrayList iconSpinnerItems = new ArrayList<>(Arrays.asList(text_options)); @@ -92,7 +92,7 @@ public class DropdownType extends FieldType { isBlank = true; dropdown.setVisibility(View.GONE); } - public DataType getViewValue(){ + public RawDataType getViewValue(){ if(dropdown == null) return null; if(dropdown.getVisibility() == View.GONE) return new IntType(name, IntType.nullval); return new IntType(name, dropdown.getIndex()); @@ -103,7 +103,7 @@ public class DropdownType extends FieldType { - public void add_individual_view(LinearLayout parent, DataType data){ + public void add_individual_view(LinearLayout parent, RawDataType data){ if(data.isNull()) return; TextView tv = new TextView(parent.getContext()); tv.setLayoutParams(new FrameLayout.LayoutParams( @@ -139,7 +139,7 @@ public class DropdownType extends FieldType { return colors; } - public void add_compiled_view(LinearLayout parent, DataType[] data){ + public void add_compiled_view(LinearLayout parent, RawDataType[] data){ PieChart chart = new PieChart(parent.getContext()); FrameLayout.LayoutParams layout = new FrameLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, @@ -173,7 +173,7 @@ public class DropdownType extends FieldType { - public void add_history_view(LinearLayout parent, DataType[] data){ + public void add_history_view(LinearLayout parent, RawDataType[] data){ LineChart chart = new LineChart(parent.getContext()); FrameLayout.LayoutParams layout = new FrameLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, @@ -239,11 +239,11 @@ public class DropdownType extends FieldType { parent.addView(chart); } - public void addDataToTable(TableLayout parent, Map> data){ + public void addDataToTable(TableLayout parent, Map> data){ } - public String toString(DataType data){ + public String toString(RawDataType data){ return text_options[(int) data.get()]; } } diff --git a/app/src/main/java/com/ridgebotics/ridgescout/types/input/FieldType.java b/app/src/main/java/com/ridgebotics/ridgescout/types/input/FieldType.java index 1fa9122..7c87116 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/types/input/FieldType.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/types/input/FieldType.java @@ -5,7 +5,7 @@ import android.view.View; import android.widget.LinearLayout; import android.widget.TableLayout; -import com.ridgebotics.ridgescout.types.data.DataType; +import com.ridgebotics.ridgescout.types.data.RawDataType; import com.ridgebotics.ridgescout.utility.BuiltByteParser; import com.ridgebotics.ridgescout.utility.ByteBuilder; @@ -14,7 +14,9 @@ import java.util.List; import java.util.Map; import java.util.function.Function; +// Abstract class for fields. public abstract class FieldType { + // Define what the IDS are for each type public static final int slider_type_id = 255; public static final int dropdownType = 254; public static final int notesType = 253; @@ -37,7 +39,7 @@ public abstract class FieldType { public String description; public Object default_value; public abstract inputTypes getInputType(); - public abstract DataType.valueTypes getValueType(); + public abstract RawDataType.valueTypes getValueType(); public abstract Object get_fallback_value(); public abstract int get_byte_id(); public FieldType(){} @@ -80,24 +82,24 @@ public abstract class FieldType { // public abstract dataType[] getConfig(); // public abstract void setConfig(dataType[] config); - public abstract View createView(Context context, Function onUpdate); + public abstract View createView(Context context, Function onUpdate); public boolean isBlank = false; public abstract void nullify(); - public void setViewValue(DataType type){setViewValue(type.get());} + public void setViewValue(RawDataType type){setViewValue(type.get());} public abstract void setViewValue(Object value); - public abstract DataType getViewValue(); + public abstract RawDataType getViewValue(); - public abstract void add_individual_view(LinearLayout parent, DataType data); - public abstract void add_compiled_view(LinearLayout parent, DataType[] data); - public abstract void add_history_view(LinearLayout parent, DataType[] data); + public abstract void add_individual_view(LinearLayout parent, RawDataType data); + public abstract void add_compiled_view(LinearLayout parent, RawDataType[] data); + public abstract void add_history_view(LinearLayout parent, RawDataType[] data); - public abstract void addDataToTable(TableLayout parent, Map> data); + public abstract void addDataToTable(TableLayout parent, Map> data); - public abstract String toString(DataType data); + public abstract String toString(RawDataType data); } \ No newline at end of file diff --git a/app/src/main/java/com/ridgebotics/ridgescout/types/input/FieldposType.java b/app/src/main/java/com/ridgebotics/ridgescout/types/input/FieldposType.java index bf2584b..3676105 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/types/input/FieldposType.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/types/input/FieldposType.java @@ -1,6 +1,5 @@ package com.ridgebotics.ridgescout.types.input; -import static com.ridgebotics.ridgescout.utility.Colors.background_color; import static com.ridgebotics.ridgescout.utility.Colors.chart_background; import static com.ridgebotics.ridgescout.utility.Colors.chart_text; import static com.ridgebotics.ridgescout.utility.Colors.dropdown_value_text_1; @@ -8,7 +7,6 @@ import static com.ridgebotics.ridgescout.utility.Colors.dropdown_value_text_2; import static com.ridgebotics.ridgescout.utility.Colors.fieldpos_data; import android.content.Context; -import android.graphics.Color; import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; @@ -20,10 +18,10 @@ import com.github.mikephil.charting.components.Legend; import com.github.mikephil.charting.data.Entry; import com.github.mikephil.charting.data.LineData; import com.github.mikephil.charting.data.LineDataSet; -import com.ridgebotics.ridgescout.types.data.DataType; +import com.ridgebotics.ridgescout.types.data.RawDataType; import com.ridgebotics.ridgescout.types.data.IntArrType; -import com.ridgebotics.ridgescout.ui.scouting.FieldPosView; -import com.ridgebotics.ridgescout.ui.scouting.MultiFieldPosView; +import com.ridgebotics.ridgescout.ui.views.FieldPosView; +import com.ridgebotics.ridgescout.ui.views.MultiFieldPosView; import com.ridgebotics.ridgescout.utility.BuiltByteParser; import com.ridgebotics.ridgescout.utility.ByteBuilder; @@ -35,7 +33,7 @@ import java.util.function.Function; public class FieldposType extends FieldType { public int get_byte_id() {return fieldposType;} public inputTypes getInputType(){return inputTypes.FIELDPOS;} - public DataType.valueTypes getValueType(){return DataType.valueTypes.NUM;} + public RawDataType.valueTypes getValueType(){return RawDataType.valueTypes.NUM;} public Object get_fallback_value(){return 0;} public FieldposType(){} public String get_type_name(){return "Field Pos";} @@ -62,7 +60,7 @@ public class FieldposType extends FieldType { public FieldPosView field = null; - public View createView(Context context, Function onUpdate){ + public View createView(Context context, Function onUpdate){ field = new FieldPosView(context, pos -> { onUpdate.apply(new IntArrType(name, pos)); }); @@ -90,7 +88,7 @@ public class FieldposType extends FieldType { isBlank = true; field.setVisibility(View.GONE); } - public DataType getViewValue(){ + public RawDataType getViewValue(){ if(field == null) return null; if(field.getVisibility() == View.GONE) return IntArrType.newNull(name); return new IntArrType(name, field.getPos()); @@ -98,7 +96,7 @@ public class FieldposType extends FieldType { - public void add_individual_view(LinearLayout parent, DataType data){ + public void add_individual_view(LinearLayout parent, RawDataType data){ if(data.isNull()) return; FieldPosView fp = new FieldPosView(parent.getContext()); @@ -141,7 +139,7 @@ public class FieldposType extends FieldType { return entries; } - private static int findMin(DataType[] data){ + private static int findMin(RawDataType[] data){ int min = (int)data[0].get(); for(int i = 1; i < data.length; i++) if((int)data[i].get() < min) @@ -149,7 +147,7 @@ public class FieldposType extends FieldType { return min; } - private static int findMax(DataType[] data){ + private static int findMax(RawDataType[] data){ int max = (int)data[0].get(); for(int i = 1; i < data.length; i++) if((int)data[i].get() > max) @@ -157,7 +155,7 @@ public class FieldposType extends FieldType { return max; } - public void add_compiled_view(LinearLayout parent, DataType[] data){ + public void add_compiled_view(LinearLayout parent, RawDataType[] data){ MultiFieldPosView mfp = new MultiFieldPosView(parent.getContext()); for(int i = 0; i < data.length; i++){ if(data[i].isNull()) continue; @@ -166,7 +164,7 @@ public class FieldposType extends FieldType { parent.addView(mfp); } - public void add_history_view(LinearLayout parent, DataType[] data){ + public void add_history_view(LinearLayout parent, RawDataType[] data){ LineChart chart = new LineChart(parent.getContext()); FrameLayout.LayoutParams layout = new FrameLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, @@ -223,11 +221,11 @@ public class FieldposType extends FieldType { parent.addView(chart); } - public void addDataToTable(TableLayout parent, Map> data){ + public void addDataToTable(TableLayout parent, Map> data){ } - public String toString(DataType data){ + public String toString(RawDataType data){ int[] intarr = (int[]) data.get(); return "[" + intarr[0] + "," + intarr[1] + "]"; } diff --git a/app/src/main/java/com/ridgebotics/ridgescout/types/input/NumberType.java b/app/src/main/java/com/ridgebotics/ridgescout/types/input/NumberType.java index 1427bcc..42b74ca 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/types/input/NumberType.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/types/input/NumberType.java @@ -2,7 +2,6 @@ package com.ridgebotics.ridgescout.types.input; import static android.text.InputType.TYPE_CLASS_NUMBER; -import static com.ridgebotics.ridgescout.utility.Colors.background_color; import static com.ridgebotics.ridgescout.utility.Colors.chart_background; import static com.ridgebotics.ridgescout.utility.Colors.chart_text; import static com.ridgebotics.ridgescout.utility.Colors.dropdown_value_text_1; @@ -10,7 +9,6 @@ import static com.ridgebotics.ridgescout.utility.Colors.dropdown_value_text_2; import static com.ridgebotics.ridgescout.utility.Colors.number_data; import android.content.Context; -import android.graphics.Color; import android.text.Editable; import android.text.TextWatcher; import android.view.Gravity; @@ -27,7 +25,7 @@ import com.github.mikephil.charting.components.Legend; import com.github.mikephil.charting.data.Entry; import com.github.mikephil.charting.data.LineData; import com.github.mikephil.charting.data.LineDataSet; -import com.ridgebotics.ridgescout.types.data.DataType; +import com.ridgebotics.ridgescout.types.data.RawDataType; import com.ridgebotics.ridgescout.types.data.IntType; import com.ridgebotics.ridgescout.utility.BuiltByteParser; import com.ridgebotics.ridgescout.utility.ByteBuilder; @@ -40,7 +38,7 @@ import java.util.function.Function; public class NumberType extends FieldType { public int get_byte_id() {return numberType;} public inputTypes getInputType(){return inputTypes.NUMBER;} - public DataType.valueTypes getValueType(){return DataType.valueTypes.NUM;} + public RawDataType.valueTypes getValueType(){return RawDataType.valueTypes.NUM;} public Object get_fallback_value(){return 0;} public NumberType(){} public String get_type_name(){return "Number";} @@ -66,7 +64,7 @@ public class NumberType extends FieldType { public EditText num = null; - public View createView(Context context, Function onUpdate){ + public View createView(Context context, Function onUpdate){ num = new EditText(context); num.setInputType(TYPE_CLASS_NUMBER); num.addTextChangedListener(new TextWatcher() { @@ -97,7 +95,7 @@ public class NumberType extends FieldType { isBlank = true; num.setVisibility(View.GONE); } - public DataType getViewValue(){ + public RawDataType getViewValue(){ if(num == null) return null; if(num.getVisibility() == View.GONE) return IntType.newNull(name); return new IntType(name, safeToInt(num.getText().toString())); @@ -118,7 +116,7 @@ public class NumberType extends FieldType { - public void add_individual_view(LinearLayout parent, DataType data){ + public void add_individual_view(LinearLayout parent, RawDataType data){ if(data.isNull()) return; TextView tv = new TextView(parent.getContext()); @@ -165,7 +163,7 @@ public class NumberType extends FieldType { return entries; } - private static int findMin(DataType[] data){ + private static int findMin(RawDataType[] data){ int min = (int)data[0].get(); for(int i = 1; i < data.length; i++) if((int)data[i].get() < min) @@ -173,7 +171,7 @@ public class NumberType extends FieldType { return min; } - private static int findMax(DataType[] data){ + private static int findMax(RawDataType[] data){ int max = (int)data[0].get(); for(int i = 1; i < data.length; i++) if((int)data[i].get() > max) @@ -181,7 +179,7 @@ public class NumberType extends FieldType { return max; } - public void add_compiled_view(LinearLayout parent, DataType[] data){ + public void add_compiled_view(LinearLayout parent, RawDataType[] data){ LineChart chart = new LineChart(parent.getContext()); FrameLayout.LayoutParams layout = new FrameLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, @@ -260,7 +258,7 @@ public class NumberType extends FieldType { - public void add_history_view(LinearLayout parent, DataType[] data){ + public void add_history_view(LinearLayout parent, RawDataType[] data){ LineChart chart = new LineChart(parent.getContext()); FrameLayout.LayoutParams layout = new FrameLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, @@ -318,11 +316,11 @@ public class NumberType extends FieldType { parent.addView(chart); } - public void addDataToTable(TableLayout parent, Map> data){ + public void addDataToTable(TableLayout parent, Map> data){ } - public String toString(DataType data){ + public String toString(RawDataType data){ return String.valueOf((int) data.get()); } } diff --git a/app/src/main/java/com/ridgebotics/ridgescout/types/input/SliderType.java b/app/src/main/java/com/ridgebotics/ridgescout/types/input/SliderType.java index a323e13..1bb065c 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/types/input/SliderType.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/types/input/SliderType.java @@ -7,7 +7,6 @@ import static com.ridgebotics.ridgescout.utility.Colors.dropdown_value_text_2; import static com.ridgebotics.ridgescout.utility.Colors.slider_data; import android.content.Context; -import android.graphics.Color; import android.view.View; import android.view.ViewGroup; import android.widget.FrameLayout; @@ -16,7 +15,7 @@ import android.widget.TableLayout; import androidx.annotation.NonNull; -import com.ridgebotics.ridgescout.types.data.DataType; +import com.ridgebotics.ridgescout.types.data.RawDataType; import com.ridgebotics.ridgescout.types.data.IntType; import com.ridgebotics.ridgescout.utility.AlertManager; import com.ridgebotics.ridgescout.utility.BuiltByteParser; @@ -39,7 +38,7 @@ public class SliderType extends FieldType { public int max; public int get_byte_id() {return slider_type_id;} public inputTypes getInputType(){return inputTypes.SLIDER;} - public DataType.valueTypes getValueType(){return DataType.valueTypes.NUM;} + public RawDataType.valueTypes getValueType(){return RawDataType.valueTypes.NUM;} public Object get_fallback_value(){return 0;} public SliderType(){}; public String get_type_name(){return "Slider";} @@ -69,7 +68,7 @@ public class SliderType extends FieldType { public Slider slider = null; - public View createView(Context context, Function onUpdate){ + public View createView(Context context, Function onUpdate){ slider = new Slider(context); setViewValue(default_value); slider.setStepSize((float) 1 / (max-min)); @@ -104,7 +103,7 @@ public class SliderType extends FieldType { slider.setVisibility(View.VISIBLE); } - public DataType getViewValue(){ + public RawDataType getViewValue(){ if(slider == null) return null; if(slider.getVisibility() == View.GONE) return IntType.newNull(name); return new IntType(name, min + (int) (slider.getValue() * (max-min))); @@ -119,7 +118,7 @@ public class SliderType extends FieldType { - public void add_individual_view(LinearLayout parent, DataType data){ + public void add_individual_view(LinearLayout parent, RawDataType data){ if(data.isNull()) return; Slider slider = new Slider(parent.getContext()); @@ -173,7 +172,7 @@ public class SliderType extends FieldType { return entries; } - public void add_compiled_view(LinearLayout parent, DataType[] data){ + public void add_compiled_view(LinearLayout parent, RawDataType[] data){ LineChart chart = new LineChart(parent.getContext()); FrameLayout.LayoutParams layout = new FrameLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, @@ -249,7 +248,7 @@ public class SliderType extends FieldType { - public void add_history_view(LinearLayout parent, DataType[] data){ + public void add_history_view(LinearLayout parent, RawDataType[] data){ LineChart chart = new LineChart(parent.getContext()); FrameLayout.LayoutParams layout = new FrameLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, @@ -304,11 +303,11 @@ public class SliderType extends FieldType { parent.addView(chart); } - public void addDataToTable(TableLayout parent, Map> data){ + public void addDataToTable(TableLayout parent, Map> data){ } - public String toString(DataType data){ + public String toString(RawDataType data){ return String.valueOf((int) data.get()); } } \ No newline at end of file diff --git a/app/src/main/java/com/ridgebotics/ridgescout/types/input/TallyType.java b/app/src/main/java/com/ridgebotics/ridgescout/types/input/TallyType.java index 7f165e5..c504e65 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/types/input/TallyType.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/types/input/TallyType.java @@ -7,7 +7,6 @@ import static com.ridgebotics.ridgescout.utility.Colors.dropdown_value_text_2; import static com.ridgebotics.ridgescout.utility.Colors.tally_data; import android.content.Context; -import android.graphics.Color; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; @@ -17,12 +16,12 @@ import android.widget.TableLayout; import android.widget.TableRow; import android.widget.TextView; -import com.ridgebotics.ridgescout.types.data.DataType; +import com.ridgebotics.ridgescout.types.data.RawDataType; import com.ridgebotics.ridgescout.types.data.IntType; -import com.ridgebotics.ridgescout.ui.CandlestickHeader; -import com.ridgebotics.ridgescout.ui.CandlestickView; +import com.ridgebotics.ridgescout.ui.views.CandlestickHeader; +import com.ridgebotics.ridgescout.ui.views.CandlestickView; import com.ridgebotics.ridgescout.ui.data.DataProcessing; -import com.ridgebotics.ridgescout.ui.scouting.TallyCounterView; +import com.ridgebotics.ridgescout.ui.views.TallyCounterView; import com.ridgebotics.ridgescout.utility.BuiltByteParser; import com.ridgebotics.ridgescout.utility.ByteBuilder; import com.github.mikephil.charting.charts.LineChart; @@ -40,7 +39,7 @@ import java.util.function.Function; public class TallyType extends FieldType { public int get_byte_id() {return tallyType;} public inputTypes getInputType(){return inputTypes.TALLY;} - public DataType.valueTypes getValueType(){return DataType.valueTypes.NUM;} + public RawDataType.valueTypes getValueType(){return RawDataType.valueTypes.NUM;} public Object get_fallback_value(){return 0;} public TallyType(){} public String get_type_name(){return "Tally";} @@ -66,7 +65,7 @@ public class TallyType extends FieldType { public TallyCounterView tally = null; - public View createView(Context context, Function onUpdate){ + public View createView(Context context, Function onUpdate){ tally = new TallyCounterView(context); tally.setOnCountChangedListener(n -> onUpdate.apply(getViewValue())); @@ -91,7 +90,7 @@ public class TallyType extends FieldType { isBlank = true; tally.setVisibility(View.GONE); } - public DataType getViewValue(){ + public RawDataType getViewValue(){ if(tally == null) return null; if(tally.getVisibility() == View.GONE) return IntType.newNull(name); return new IntType(name, tally.getValue()); @@ -102,7 +101,7 @@ public class TallyType extends FieldType { - public void add_individual_view(LinearLayout parent, DataType data){ + public void add_individual_view(LinearLayout parent, RawDataType data){ if(data.isNull()) return; TextView tv = new TextView(parent.getContext()); @@ -149,7 +148,7 @@ public class TallyType extends FieldType { return entries; } - private static int findMin(DataType[] data){ + private static int findMin(RawDataType[] data){ int min = (int)data[0].get(); for(int i = 1; i < data.length; i++) if((int)data[i].get() < min) @@ -157,7 +156,7 @@ public class TallyType extends FieldType { return min; } - private static int findMax(DataType[] data){ + private static int findMax(RawDataType[] data){ int max = (int)data[0].get(); for(int i = 1; i < data.length; i++) if((int)data[i].get() > max) @@ -165,7 +164,7 @@ public class TallyType extends FieldType { return max; } - public void add_compiled_view(LinearLayout parent, DataType[] data){ + public void add_compiled_view(LinearLayout parent, RawDataType[] data){ LineChart chart = new LineChart(parent.getContext()); FrameLayout.LayoutParams layout = new FrameLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, @@ -244,7 +243,7 @@ public class TallyType extends FieldType { - public void add_history_view(LinearLayout parent, DataType[] data){ + public void add_history_view(LinearLayout parent, RawDataType[] data){ LineChart chart = new LineChart(parent.getContext()); FrameLayout.LayoutParams layout = new FrameLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, @@ -302,7 +301,7 @@ public class TallyType extends FieldType { parent.addView(chart); } - public void addDataToTable(TableLayout parent, Map> data){ + public void addDataToTable(TableLayout parent, Map> data){ int[] tmp_abs_bounds = DataProcessing.getNumberBounds(data); int absmin = tmp_abs_bounds[0]; int absmax = tmp_abs_bounds[1]; @@ -361,7 +360,7 @@ public class TallyType extends FieldType { } } - public String toString(DataType data){ + public String toString(RawDataType data){ return String.valueOf((int) data.get()); } } diff --git a/app/src/main/java/com/ridgebotics/ridgescout/types/input/TextType.java b/app/src/main/java/com/ridgebotics/ridgescout/types/input/TextType.java index 22d75a8..36977d7 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/types/input/TextType.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/types/input/TextType.java @@ -7,7 +7,6 @@ import static com.ridgebotics.ridgescout.utility.Colors.dropdown_value_text_2; import static com.ridgebotics.ridgescout.utility.Colors.text_data; import android.content.Context; -import android.graphics.Color; import android.text.Editable; import android.text.TextWatcher; import android.view.Gravity; @@ -19,7 +18,7 @@ import android.widget.LinearLayout; import android.widget.TableLayout; import android.widget.TextView; -import com.ridgebotics.ridgescout.types.data.DataType; +import com.ridgebotics.ridgescout.types.data.RawDataType; import com.ridgebotics.ridgescout.types.data.StringType; import com.ridgebotics.ridgescout.utility.SentimentAnalysis; import com.ridgebotics.ridgescout.utility.BuiltByteParser; @@ -39,7 +38,7 @@ public class TextType extends FieldType { public int get_byte_id() {return notesType;} public inputTypes getInputType(){return inputTypes.NOTES_INPUT;} - public DataType.valueTypes getValueType(){return DataType.valueTypes.STRING;} + public RawDataType.valueTypes getValueType(){return RawDataType.valueTypes.STRING;} public Object get_fallback_value(){return "";} public TextType(){} public TextType(String UUID, String name, String description, String default_text){ @@ -76,7 +75,7 @@ public class TextType extends FieldType { public EditText text = null; - public View createView(Context context, Function onUpdate){ + public View createView(Context context, Function onUpdate){ text = new EditText(context); text.setText((String)default_value); text.addTextChangedListener(new TextWatcher() { @@ -102,7 +101,7 @@ public class TextType extends FieldType { isBlank = true; text.setVisibility(View.GONE); } - public DataType getViewValue(){ + public RawDataType getViewValue(){ if(text == null) return null; if(text.getVisibility() == View.GONE) return new StringType(name, StringType.nullval); return new StringType(name, text.getText().toString()); @@ -111,7 +110,7 @@ public class TextType extends FieldType { - public void add_individual_view(LinearLayout parent, DataType data){ + public void add_individual_view(LinearLayout parent, RawDataType data){ if(data.isNull()) return; TextView tv = new TextView(parent.getContext()); tv.setLayoutParams(new FrameLayout.LayoutParams( @@ -141,7 +140,7 @@ public class TextType extends FieldType { TextView positive_text; - public void add_compiled_view(LinearLayout parent, DataType[] data) { + public void add_compiled_view(LinearLayout parent, RawDataType[] data) { positive_mean = 0; count = 0; @@ -170,7 +169,7 @@ public class TextType extends FieldType { } - public void add_history_view(LinearLayout parent, DataType[] data){ + public void add_history_view(LinearLayout parent, RawDataType[] data){ LineChart chart = new LineChart(parent.getContext()); FrameLayout.LayoutParams layout = new FrameLayout.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, @@ -229,11 +228,11 @@ public class TextType extends FieldType { } - public void addDataToTable(TableLayout parent, Map> data){ + public void addDataToTable(TableLayout parent, Map> data){ } - public String toString(DataType data){ + public String toString(RawDataType data){ return String.valueOf(data.get()); } } diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/TeamSelectorFragment.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/TeamSelectorFragment.java deleted file mode 100644 index 4e8394e..0000000 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/TeamSelectorFragment.java +++ /dev/null @@ -1,94 +0,0 @@ -package com.ridgebotics.ridgescout.ui; - -import static com.ridgebotics.ridgescout.utility.DataManager.evcode; -import static com.ridgebotics.ridgescout.utility.DataManager.event; - -import android.os.Bundle; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TableLayout; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.fragment.app.Fragment; - -import com.ridgebotics.ridgescout.databinding.FragmentTeamSelectorBinding; -import com.ridgebotics.ridgescout.types.frcTeam; -import com.ridgebotics.ridgescout.utility.AlertManager; -import com.ridgebotics.ridgescout.utility.DataManager; - -import java.util.Arrays; - -public class TeamSelectorFragment extends Fragment { - private FragmentTeamSelectorBinding binding; - - private static boolean pits_mode; - public static void setPits_mode(boolean mode){ - pits_mode = mode; - } - - private static onTeamSelected onSelect = new onTeamSelected() {@Override public void onSelect(TeamSelectorFragment self, frcTeam team) {}}; - - public interface onTeamSelected { - void onSelect(TeamSelectorFragment self, frcTeam team); - } - public static void setOnSelect(onTeamSelected tmponSelect){ - onSelect = tmponSelect; - } - - @Override - public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, - @Nullable Bundle savedInstanceState) { - binding = FragmentTeamSelectorBinding.inflate(inflater, container, false); - -// event = fileEditor.g - DataManager.reload_event(); - - if(evcode == null || evcode.equals("unset")){ - AlertManager.addSimpleError("You somehow have not loaded an event!"); - return binding.getRoot(); - } - - load_teams(); - - - return binding.getRoot(); - } - - public void load_teams(){ - int[] teamNums = new int[event.teams.size()]; - - for(int i = 0 ; i < event.teams.size(); i++){ - teamNums[i] = event.teams.get(i).teamNumber; - } - - Arrays.sort(teamNums); - - TableLayout table = new TableLayout(getContext()); - table.setStretchAllColumns(true); - binding.teams.addView(table); - - - for(int i = 0; i < event.teams.size(); i++){ - frcTeam team = null; - for(int a = 0 ; a < event.teams.size(); a++){ - if(event.teams.get(a).teamNumber == teamNums[i]){ - team = event.teams.get(a); - break; - } - } - assert team != null; - - TeamListOption teamRow = new TeamListOption(getContext()); - table.addView(teamRow); - teamRow.fromTeam(team); - - frcTeam finalTeam = team; - teamRow.setOnClickListener(v -> { - onSelect.onSelect(this, finalTeam); - }); - } - } - -} diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/data/DataFragment.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/data/DataFragment.java index 2fd574f..a993a2c 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/data/DataFragment.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/data/DataFragment.java @@ -3,7 +3,6 @@ package com.ridgebotics.ridgescout.ui.data; import static android.view.View.GONE; import static android.view.View.VISIBLE; -import static androidx.navigation.fragment.FragmentKt.findNavController; import static com.ridgebotics.ridgescout.utility.Colors.datafragment_option_1; import static com.ridgebotics.ridgescout.utility.Colors.datafragment_option_2; @@ -20,12 +19,10 @@ import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; -import androidx.fragment.app.FragmentTransaction; -import com.ridgebotics.ridgescout.R; import com.ridgebotics.ridgescout.types.frcTeam; -import com.ridgebotics.ridgescout.ui.FieldBorderedRow; -import com.ridgebotics.ridgescout.ui.TeamListOption; +import com.ridgebotics.ridgescout.ui.views.FieldBorderedRow; +import com.ridgebotics.ridgescout.ui.views.TeamListOption; import com.ridgebotics.ridgescout.utility.DataManager; import com.ridgebotics.ridgescout.utility.SettingsManager; import com.ridgebotics.ridgescout.databinding.FragmentDataBinding; @@ -33,6 +30,9 @@ import com.ridgebotics.ridgescout.databinding.FragmentDataBinding; import java.util.Arrays; import java.util.List; +// Fragment for the menu of the data tab. +// Shows either by field type or by team. +// This is held in a sub-fragment under DataParentFragment public class DataFragment extends Fragment { private FragmentDataBinding binding; diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/data/DataParentFragment.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/data/DataParentFragment.java index ece2dca..9b2e11a 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/data/DataParentFragment.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/data/DataParentFragment.java @@ -4,17 +4,11 @@ package com.ridgebotics.ridgescout.ui.data; import static android.content.Context.CLIPBOARD_SERVICE; import static android.view.View.GONE; import static android.view.View.VISIBLE; -import static androidx.core.content.ContextCompat.getSystemService; -import static androidx.navigation.fragment.FragmentKt.findNavController; -import static com.ridgebotics.ridgescout.utility.Colors.datafragment_option_1; -import static com.ridgebotics.ridgescout.utility.Colors.datafragment_option_2; import static com.ridgebotics.ridgescout.utility.DataManager.evcode; import static com.ridgebotics.ridgescout.utility.DataManager.event; -import static com.ridgebotics.ridgescout.utility.DataManager.match_latest_values; import android.content.ClipData; import android.content.ClipboardManager; -import android.content.Context; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; @@ -31,17 +25,15 @@ import com.ridgebotics.ridgescout.R; import com.ridgebotics.ridgescout.databinding.FragmentDataParentBinding; import com.ridgebotics.ridgescout.types.frcMatch; import com.ridgebotics.ridgescout.types.frcTeam; -import com.ridgebotics.ridgescout.ui.FieldBorderedRow; -import com.ridgebotics.ridgescout.ui.TeamListOption; import com.ridgebotics.ridgescout.utility.AlertManager; import com.ridgebotics.ridgescout.utility.AutoSaveManager; import com.ridgebotics.ridgescout.utility.DataManager; import com.ridgebotics.ridgescout.utility.SettingsManager; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; +// Holds the scouting data editor aswell as the sub-fragment for the scouting data browser public class DataParentFragment extends Fragment { private FragmentDataParentBinding binding; diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/data/DataProcessing.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/data/DataProcessing.java index e2e4d6d..442cace 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/data/DataProcessing.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/data/DataProcessing.java @@ -1,20 +1,21 @@ package com.ridgebotics.ridgescout.ui.data; -import com.ridgebotics.ridgescout.types.data.DataType; +import com.ridgebotics.ridgescout.types.data.RawDataType; import java.util.Arrays; import java.util.List; import java.util.Map; +// Helper class for scouting data by fields. public class DataProcessing { - public static int[] getNumberBounds(Map> data){ + public static int[] getNumberBounds(Map> data){ int min = Integer.MAX_VALUE; int max = Integer.MIN_VALUE; for(Integer teamNum : data.keySet()){ - List teamData = data.get(teamNum); + List teamData = data.get(teamNum); int[] locBounds = getNumberBounds(teamData); @@ -26,13 +27,13 @@ public class DataProcessing { return new int[]{min, max}; } - public static int[] getNumberBounds(List data){ + public static int[] getNumberBounds(List data){ int min = Integer.MAX_VALUE; int max = Integer.MIN_VALUE; if(data == null) return new int[]{min, max}; for(int i = 0; i < data.size(); i++){ - DataType dataPoint = data.get(i); + RawDataType dataPoint = data.get(i); // if(dataPoint == null) continue; int num = (int) dataPoint.get(); if(num > max) max = num; @@ -44,7 +45,7 @@ public class DataProcessing { //https://stackoverflow.com/questions/42381759/finding-first-quartile-and-third-quartile-in-integer-array-using-java#63891545 - public static float[] getQuartiles(List data) { + public static float[] getQuartiles(List data) { float ans[] = new float[3]; float[] val = new float[data.size()]; diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/data/FieldDataFragment.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/data/FieldDataFragment.java index 7eb4d12..d241d0b 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/data/FieldDataFragment.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/data/FieldDataFragment.java @@ -20,7 +20,7 @@ import androidx.fragment.app.Fragment; import com.ridgebotics.ridgescout.databinding.FragmentDataFieldDataBinding; import com.ridgebotics.ridgescout.scoutingData.ScoutingDataWriter; -import com.ridgebotics.ridgescout.types.data.DataType; +import com.ridgebotics.ridgescout.types.data.RawDataType; import com.ridgebotics.ridgescout.utility.AlertManager; import com.ridgebotics.ridgescout.utility.FileEditor; @@ -29,6 +29,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +// Fragment for viewing the data of a specfic field. public class FieldDataFragment extends Fragment { private FragmentDataFieldDataBinding binding; @@ -52,13 +53,13 @@ public class FieldDataFragment extends Fragment { Thread t = new Thread(() -> { - Map> data = new HashMap<>(); + Map> data = new HashMap<>(); for (int teamIndex = 0; teamIndex < event.teams.size(); teamIndex++) { int teamNum = event.teams.get(teamIndex).teamNumber; List filenames = new ArrayList<>(List.of(FileEditor.getMatchesByTeamNum(evcode, event.teams.get(teamIndex).teamNumber))); filenames.removeAll(rescout_list); - ArrayList teamData = new ArrayList<>(); + ArrayList teamData = new ArrayList<>(); for (int i = 0; i < filenames.size(); i++) { try { diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/data/TeamsFragment.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/data/TeamsFragment.java index 41205c6..76a5a64 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/data/TeamsFragment.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/data/TeamsFragment.java @@ -26,7 +26,7 @@ import com.ridgebotics.ridgescout.utility.AlertManager; import com.ridgebotics.ridgescout.utility.SettingsManager; import com.ridgebotics.ridgescout.databinding.FragmentDataTeamsBinding; import com.ridgebotics.ridgescout.scoutingData.ScoutingDataWriter; -import com.ridgebotics.ridgescout.types.data.DataType; +import com.ridgebotics.ridgescout.types.data.RawDataType; import com.ridgebotics.ridgescout.types.frcTeam; import com.ridgebotics.ridgescout.utility.DataManager; import com.ridgebotics.ridgescout.utility.FileEditor; @@ -34,6 +34,7 @@ import com.ridgebotics.ridgescout.utility.FileEditor; import java.util.ArrayList; import java.util.List; +// Fragment for viewing the data of a team. public class TeamsFragment extends Fragment { FragmentDataTeamsBinding binding; @@ -279,7 +280,7 @@ public class TeamsFragment extends Fragment { public void add_compiled_views(String[] files){ - DataType[][] data = new DataType[match_latest_values.length][files.length]; + RawDataType[][] data = new RawDataType[match_latest_values.length][files.length]; for (int i = 0; i < files.length; i++) { try { ScoutingDataWriter.ParsedScoutingDataResult psda = ScoutingDataWriter.load(files[i], match_values, match_transferValues); @@ -314,7 +315,7 @@ public class TeamsFragment extends Fragment { public void add_history_views(String[] files){ - DataType[][] data = new DataType[match_latest_values.length][files.length]; + RawDataType[][] data = new RawDataType[match_latest_values.length][files.length]; for (int i = 0; i < files.length; i++) { try { ScoutingDataWriter.ParsedScoutingDataResult psda = ScoutingDataWriter.load(files[i], match_values, match_transferValues); diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/scouting/EventFragment.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/scouting/EventFragment.java index 8bc0c03..2c9390e 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/scouting/EventFragment.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/scouting/EventFragment.java @@ -23,7 +23,7 @@ import androidx.fragment.app.Fragment; import com.ridgebotics.ridgescout.databinding.FragmentScoutingEventBinding; import com.ridgebotics.ridgescout.types.frcTeam; -import com.ridgebotics.ridgescout.ui.CustomSpinnerView; +import com.ridgebotics.ridgescout.ui.views.CustomSpinnerView; import com.ridgebotics.ridgescout.utility.DataManager; import com.ridgebotics.ridgescout.utility.FileEditor; import com.ridgebotics.ridgescout.types.frcEvent; @@ -34,6 +34,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +// Fragment to show the status of scouting, aswell as adding or removing matches and teams manually. public class EventFragment extends Fragment { FragmentScoutingEventBinding binding; diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/scouting/MatchScoutingFragment.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/scouting/MatchScoutingFragment.java index dbabc5e..45cc045 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/scouting/MatchScoutingFragment.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/scouting/MatchScoutingFragment.java @@ -19,11 +19,11 @@ import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; import com.google.android.material.divider.MaterialDivider; -import com.ridgebotics.ridgescout.ui.ToggleTitleView; +import com.ridgebotics.ridgescout.ui.views.ToggleTitleView; import com.ridgebotics.ridgescout.utility.SettingsManager; import com.ridgebotics.ridgescout.databinding.FragmentScoutingMatchBinding; import com.ridgebotics.ridgescout.scoutingData.ScoutingDataWriter; -import com.ridgebotics.ridgescout.types.data.DataType; +import com.ridgebotics.ridgescout.types.data.RawDataType; import com.ridgebotics.ridgescout.types.frcMatch; import com.ridgebotics.ridgescout.types.frcTeam; import com.ridgebotics.ridgescout.types.input.FieldType; @@ -32,6 +32,7 @@ import com.ridgebotics.ridgescout.utility.AutoSaveManager; import com.ridgebotics.ridgescout.utility.DataManager; import com.ridgebotics.ridgescout.utility.FileEditor; +// Fragment for match scouting data editing. public class MatchScoutingFragment extends Fragment { private FragmentScoutingMatchBinding binding; @@ -347,7 +348,7 @@ public class MatchScoutingFragment extends Fragment { public void get_fields(){ ScoutingDataWriter.ParsedScoutingDataResult psdr = ScoutingDataWriter.load(filename, DataManager.match_values, DataManager.match_transferValues); - DataType[] types = psdr.data.array; + RawDataType[] types = psdr.data.array; fileUsernames = psdr.username; @@ -369,7 +370,7 @@ public class MatchScoutingFragment extends Fragment { public void save_fields(){ - DataType[] types = new DataType[DataManager.match_latest_values.length]; + RawDataType[] types = new RawDataType[DataManager.match_latest_values.length]; for(int i = 0; i < DataManager.match_latest_values.length; i++){ types[i] = DataManager.match_latest_values[i].getViewValue(); diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/scouting/PitScoutingFragment.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/scouting/PitScoutingFragment.java index 654045e..7f0f92e 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/scouting/PitScoutingFragment.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/scouting/PitScoutingFragment.java @@ -19,12 +19,12 @@ import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; import com.google.android.material.divider.MaterialDivider; -import com.ridgebotics.ridgescout.ui.ToggleTitleView; +import com.ridgebotics.ridgescout.ui.views.ToggleTitleView; import com.ridgebotics.ridgescout.utility.AlertManager; import com.ridgebotics.ridgescout.utility.SettingsManager; import com.ridgebotics.ridgescout.databinding.FragmentScoutingPitBinding; import com.ridgebotics.ridgescout.scoutingData.ScoutingDataWriter; -import com.ridgebotics.ridgescout.types.data.DataType; +import com.ridgebotics.ridgescout.types.data.RawDataType; import com.ridgebotics.ridgescout.types.frcTeam; import com.ridgebotics.ridgescout.types.input.FieldType; import com.ridgebotics.ridgescout.utility.AutoSaveManager; @@ -34,6 +34,7 @@ import com.ridgebotics.ridgescout.utility.FileEditor; import java.util.ArrayList; import java.util.function.Function; +// Fragment for pit scouting data editing public class PitScoutingFragment extends Fragment { FragmentScoutingPitBinding binding; @@ -77,13 +78,13 @@ public class PitScoutingFragment extends Fragment { AutoSaveManager asm = new AutoSaveManager(this::save, AUTO_SAVE_DELAY); - ArrayList dataTypes; + ArrayList rawDataTypes; public void save(){ edited = false; enableRescoutButton(); - DataType[] types = new DataType[pit_latest_values.length]; + RawDataType[] types = new RawDataType[pit_latest_values.length]; for(int i = 0; i < pit_latest_values.length; i++){ types[i] = pit_latest_values[i].getViewValue(); @@ -201,9 +202,9 @@ public class PitScoutingFragment extends Fragment { } }); - View v = pit_latest_values[i].createView(getContext(), new Function() { + View v = pit_latest_values[i].createView(getContext(), new Function() { @Override - public Integer apply(DataType dataType) { + public Integer apply(RawDataType dataType) { // edited = true; if(asm.isRunning) update_asm(); @@ -226,7 +227,7 @@ public class PitScoutingFragment extends Fragment { public void get_fields(){ ScoutingDataWriter.ParsedScoutingDataResult psdr = ScoutingDataWriter.load(filename, pit_values, pit_transferValues); - DataType[] types = psdr.data.array; + RawDataType[] types = psdr.data.array; fileUsernames = psdr.username; diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/scouting/PitSelectorFragment.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/scouting/PitSelectorFragment.java index 497049a..555c7dc 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/scouting/PitSelectorFragment.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/scouting/PitSelectorFragment.java @@ -3,7 +3,6 @@ package com.ridgebotics.ridgescout.ui.scouting; import static com.ridgebotics.ridgescout.utility.Colors.color_found; import static com.ridgebotics.ridgescout.utility.Colors.color_not_found; import static com.ridgebotics.ridgescout.utility.Colors.color_rescout; -import static com.ridgebotics.ridgescout.utility.Colors.rescout_color; import static com.ridgebotics.ridgescout.utility.DataManager.evcode; import static com.ridgebotics.ridgescout.utility.DataManager.event; @@ -19,21 +18,17 @@ import androidx.fragment.app.Fragment; import com.ridgebotics.ridgescout.databinding.FragmentTeamSelectorBinding; import com.ridgebotics.ridgescout.types.frcTeam; -import com.ridgebotics.ridgescout.ui.TeamListOption; +import com.ridgebotics.ridgescout.ui.views.TeamListOption; import com.ridgebotics.ridgescout.utility.AlertManager; import com.ridgebotics.ridgescout.utility.DataManager; import com.ridgebotics.ridgescout.utility.FileEditor; import java.util.Arrays; +// Fragment for choosing which team to pit scout public class PitSelectorFragment extends Fragment { private FragmentTeamSelectorBinding binding; - private static boolean pits_mode; - public static void setPits_mode(boolean mode){ - pits_mode = mode; - } - private static onTeamSelected onSelect = new onTeamSelected() {@Override public void onSelect(PitSelectorFragment self, frcTeam team) {}}; public interface onTeamSelected { diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/scouting/ScoutingFragment.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/scouting/ScoutingFragment.java index 9174ee7..fac89a6 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/scouting/ScoutingFragment.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/scouting/ScoutingFragment.java @@ -30,6 +30,7 @@ import com.ridgebotics.ridgescout.utility.DataManager; import java.util.ArrayList; import java.util.Set; +// Main dashbord page public class ScoutingFragment extends Fragment { private FragmentScoutingBinding binding; diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/settings/FieldEditorHelper.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/settings/FieldEditorHelper.java index 69b61a9..c04da59 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/settings/FieldEditorHelper.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/settings/FieldEditorHelper.java @@ -23,6 +23,7 @@ import com.ridgebotics.ridgescout.utility.AlertManager; import java.lang.reflect.Field; import java.util.UUID; +// Class to help with fields editor fragment, containing the defaults for each field. public class FieldEditorHelper { private enum parameterTypeEnum { paramNumber, diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/settings/FieldsFragment.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/settings/FieldsFragment.java index 693c9cd..e1c091e 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/settings/FieldsFragment.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/settings/FieldsFragment.java @@ -8,7 +8,6 @@ import android.app.Activity; import android.app.AlertDialog; import android.os.Bundle; import android.view.LayoutInflater; -import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.widget.Button; @@ -26,14 +25,15 @@ import com.ridgebotics.ridgescout.R; import com.ridgebotics.ridgescout.databinding.FragmentSettingsFieldsBinding; import com.ridgebotics.ridgescout.scoutingData.Fields; import com.ridgebotics.ridgescout.types.input.FieldType; -import com.ridgebotics.ridgescout.ui.CustomSpinnerView; -import com.ridgebotics.ridgescout.ui.FieldDisplay; +import com.ridgebotics.ridgescout.ui.views.CustomSpinnerView; +import com.ridgebotics.ridgescout.ui.views.FieldDisplay; import com.ridgebotics.ridgescout.utility.AlertManager; import java.util.ArrayList; import java.util.Collections; import java.util.List; +// Fragment that shows the field editor. public class FieldsFragment extends Fragment { FragmentSettingsFieldsBinding binding; diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/settings/SettingsFragment.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/settings/SettingsFragment.java index 39317b0..2695244 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/settings/SettingsFragment.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/settings/SettingsFragment.java @@ -18,7 +18,6 @@ import static com.ridgebotics.ridgescout.utility.SettingsManager.prefs; import android.app.AlertDialog; import android.content.Context; -import android.content.DialogInterface; import android.os.Bundle; import android.text.Editable; import android.text.InputType; @@ -43,8 +42,8 @@ import com.google.android.material.textfield.TextInputLayout; import com.ridgebotics.ridgescout.R; import com.ridgebotics.ridgescout.databinding.FragmentSettingsBinding; import com.ridgebotics.ridgescout.scoutingData.Fields; -import com.ridgebotics.ridgescout.ui.CustomSpinnerView; -import com.ridgebotics.ridgescout.ui.scouting.TallyCounterView; +import com.ridgebotics.ridgescout.ui.views.CustomSpinnerView; +import com.ridgebotics.ridgescout.ui.views.TallyCounterView; import com.ridgebotics.ridgescout.utility.DataManager; import com.ridgebotics.ridgescout.utility.FileEditor; @@ -53,7 +52,7 @@ import java.util.Arrays; import java.util.HashMap; import java.util.List; - +// Fragment to edit settings, aswell as redirect to the fields editor. public class SettingsFragment extends Fragment { private FragmentSettingsBinding binding; diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/CSVExport.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/CSVExport.java index 1b66f08..5e1fd3c 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/CSVExport.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/CSVExport.java @@ -9,13 +9,14 @@ import static com.ridgebotics.ridgescout.utility.SharePrompt.shareContent; import android.content.Context; import com.ridgebotics.ridgescout.scoutingData.ScoutingDataWriter; -import com.ridgebotics.ridgescout.types.data.DataType; +import com.ridgebotics.ridgescout.types.data.RawDataType; import com.ridgebotics.ridgescout.types.frcMatch; import com.ridgebotics.ridgescout.types.frcTeam; import com.ridgebotics.ridgescout.types.input.FieldType; import com.ridgebotics.ridgescout.utility.DataManager; import com.ridgebotics.ridgescout.utility.FileEditor; +// Static class to export matches to a string. public class CSVExport { private static String[] alliances = {"red", "blue"}; @@ -62,7 +63,7 @@ public class CSVExport { try { String tempData = ""; ScoutingDataWriter.ParsedScoutingDataResult psdr = ScoutingDataWriter.load(filename, DataManager.match_values, DataManager.match_transferValues); - DataType[] matchData = psdr.data.array; + RawDataType[] matchData = psdr.data.array; FieldType[] types = psdr.data.values[psdr.data.values.length-1]; for (int i = 0; i < types.length; i++) { tempData += (safeCSV(types[i].toString(matchData[i])) + ","); @@ -114,7 +115,7 @@ public class CSVExport { try { String tempData = ""; ScoutingDataWriter.ParsedScoutingDataResult psdr = ScoutingDataWriter.load(filename, DataManager.pit_values, DataManager.pit_transferValues); - DataType[] teamData = psdr.data.array; + RawDataType[] teamData = psdr.data.array; FieldType[] types = psdr.data.values[psdr.data.values.length-1]; for (int i = 0; i < types.length; i++) { tempData += (safeCSV(types[i].toString(teamData[i])) + ","); diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/FTPSync.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/FTPSync.java index 00ad3d9..10d2aae 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/FTPSync.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/FTPSync.java @@ -1,6 +1,5 @@ package com.ridgebotics.ridgescout.ui.transfer; -//import static com.ridgebotics.ridgescout.utility.DataManager.evcode; import static com.ridgebotics.ridgescout.utility.DataManager.evcode; import static com.ridgebotics.ridgescout.utility.FileEditor.baseDir; @@ -27,6 +26,7 @@ import java.util.List; import java.util.Map; import java.util.Set; +// Class to synchronise data over FTP. public class FTPSync extends Thread { public static final String remoteBasePath = "/RidgeScout/"; public static final String timestampsFilename = "timestamps"; diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/FileBundle.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/FileBundle.java index cfd4196..7a03c73 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/FileBundle.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/FileBundle.java @@ -20,28 +20,8 @@ import java.io.InputStream; import java.util.ArrayList; import java.util.List; +// Class to create the share and receive popups to transfer scouting data. public class FileBundle { - private static final Intent FILE_SELECT_CODE = new Intent(); - - public static void send(String[] files, Context c){ - try { - ByteBuilder b = new ByteBuilder(); - - for(int i = 0; i < files.length; i++){ - if(!FileEditor.fileExist(files[i])) continue; - // byte[] data = fileEditor.readFile(files[i]); - ScoutingFile f = new ScoutingFile(files[i]); - b.addRaw(ScoutingFile.typecode, f.encode()); - } - - byte[] data = b.build(); - send(data, c); - - } catch (ByteBuilder.buildingException e) { - AlertManager.error(e); - } - } - public static void send(byte[] data, Context c){ String filename = DataManager.getevcode() + "-" + System.currentTimeMillis() + ".scoutbundle"; SharePrompt.shareContent(c, filename, data, "application/ridgescout"); diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/FileSelectorFragment.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/FileSelectorFragment.java index 3681cbb..64b77ea 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/FileSelectorFragment.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/FileSelectorFragment.java @@ -29,6 +29,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +// Class to show a file browseer public class FileSelectorFragment extends Fragment { private static on_file_select onSelect = files -> {}; diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/TBAEventFragment.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/TBAEventFragment.java index fca0749..3ab7c66 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/TBAEventFragment.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/TBAEventFragment.java @@ -41,6 +41,7 @@ import org.json.JSONObject; import java.util.ArrayList; import java.util.Arrays; +// Class to download data from a specific event and encode it. public class TBAEventFragment extends Fragment { private TableLayout Table; diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/TBASelectorFragment.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/TBASelectorFragment.java index 4c79c92..6bed0ba 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/TBASelectorFragment.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/TBASelectorFragment.java @@ -21,7 +21,7 @@ import androidx.fragment.app.Fragment; import com.ridgebotics.ridgescout.R; import com.ridgebotics.ridgescout.databinding.FragmentTransferTbaBinding; -import com.ridgebotics.ridgescout.ui.TBAEventOption; +import com.ridgebotics.ridgescout.ui.views.TBAEventOption; import com.ridgebotics.ridgescout.utility.AlertManager; import com.ridgebotics.ridgescout.utility.RequestTask; import com.ridgebotics.ridgescout.utility.SettingsManager; @@ -37,6 +37,7 @@ import java.util.Calendar; import java.util.Date; import java.util.List; +// Class to select an event from TBA and redirect to TBAEventFragment.java. public class TBASelectorFragment extends Fragment { private android.widget.TableLayout Table; diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/TransferFragment.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/TransferFragment.java index 963e4d0..d44413c 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/TransferFragment.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/TransferFragment.java @@ -19,6 +19,7 @@ import com.ridgebotics.ridgescout.databinding.FragmentTransferBinding; import com.ridgebotics.ridgescout.ui.transfer.bluetooth.BluetoothSenderFragment; import com.ridgebotics.ridgescout.ui.transfer.codes.CodeGeneratorView; +// Class to do transference. public class TransferFragment extends Fragment { private FragmentTransferBinding binding; diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/TransferSelectorFragment.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/TransferSelectorFragment.java index 0b72e6b..39102d5 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/TransferSelectorFragment.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/TransferSelectorFragment.java @@ -11,6 +11,7 @@ import androidx.fragment.app.Fragment; import com.ridgebotics.ridgescout.databinding.FragmentTransferSelectorBinding; +// The transfer method selector public class TransferSelectorFragment extends Fragment { // Declaring three blank funcs in one line lol diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/bluetooth/BluetoothReceiver.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/bluetooth/BluetoothReceiver.java index c958849..df8ec51 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/bluetooth/BluetoothReceiver.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/bluetooth/BluetoothReceiver.java @@ -20,11 +20,10 @@ import java.util.ArrayList; import java.util.List; import java.util.UUID; +// Helper class for bluetooth reciever. public class BluetoothReceiver { private static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"); private static final String NAME = "BluetoothReceiverApp"; - private static final int REQUEST_ENABLE_BT = 1; - private static final int REQUEST_PERMISSIONS = 2; private Context context; private BluetoothAdapter bluetoothAdapter; diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/bluetooth/BluetoothReceiverFragment.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/bluetooth/BluetoothReceiverFragment.java index 9351230..84ca7bb 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/bluetooth/BluetoothReceiverFragment.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/bluetooth/BluetoothReceiverFragment.java @@ -22,6 +22,7 @@ import java.util.ArrayList; import java.util.List; import java.util.zip.DataFormatException; +// Class to receive bluetooth transmissions from other devices public class BluetoothReceiverFragment extends Fragment { private BluetoothReceiver bluetoothReceiver; private Button startListeningButton; diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/bluetooth/BluetoothSender.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/bluetooth/BluetoothSender.java index eafc18d..3144d6f 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/bluetooth/BluetoothSender.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/bluetooth/BluetoothSender.java @@ -21,10 +21,9 @@ import java.util.List; import java.util.Set; import java.util.UUID; +// Helper class with sending bluetooth scouting data public class BluetoothSender { private static final UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"); - private static final int REQUEST_ENABLE_BT = 1; - private static final int REQUEST_PERMISSIONS = 2; private Context context; private BluetoothAdapter bluetoothAdapter; diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/bluetooth/BluetoothSenderFragment.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/bluetooth/BluetoothSenderFragment.java index 0c8694f..a570317 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/bluetooth/BluetoothSenderFragment.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/bluetooth/BluetoothSenderFragment.java @@ -23,6 +23,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Set; +// Class to send scouting data over bluetooth. public class BluetoothSenderFragment extends Fragment { private BluetoothSender bluetoothSender; private ListView deviceListView; diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/codes/CodeGeneratorView.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/codes/CodeGeneratorView.java index 3c43a8b..35d9302 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/codes/CodeGeneratorView.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/codes/CodeGeneratorView.java @@ -30,6 +30,7 @@ import java.util.EnumMap; import java.util.Map; import java.util.Random; +// Class to show the code transfer thing. public class CodeGeneratorView extends Fragment { private ImageView qrImage; private SeekBar qrSpeedSlider; diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/codes/CodeOverlayView.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/codes/CodeOverlayView.java index 8a24196..ee3c2ea 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/codes/CodeOverlayView.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/codes/CodeOverlayView.java @@ -17,6 +17,7 @@ import android.view.View; import androidx.annotation.NonNull; +// Shows the progress of receiving data over codes. public class CodeOverlayView extends View { PointF[] points; diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/codes/CodeScanTask.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/codes/CodeScanTask.java index e9924a5..b48d6ef 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/codes/CodeScanTask.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/codes/CodeScanTask.java @@ -20,6 +20,7 @@ import java.util.HashMap; import java.util.Map; import java.util.function.Function; +// Background task for code scanning, to not slow down the scanner. public class CodeScanTask extends AsyncTask{ private Function resultFunction = null; private Bitmap image; diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/codes/CodeScannerView.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/codes/CodeScannerView.java index 519c45c..5be67a3 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/codes/CodeScannerView.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/transfer/codes/CodeScannerView.java @@ -47,7 +47,7 @@ import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; -//public class scannerView extends androidx.appcompat.widget.AppCompatImageView { +// Recieves data from the camera, scanning codes. public class CodeScannerView extends Fragment { private CodeOverlayView CodeOverlayView; private Handler uiHandler; diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/BackgroundView.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/views/BackgroundView.java similarity index 96% rename from app/src/main/java/com/ridgebotics/ridgescout/ui/BackgroundView.java rename to app/src/main/java/com/ridgebotics/ridgescout/ui/views/BackgroundView.java index 75ba8e0..9d34ed4 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/BackgroundView.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/views/BackgroundView.java @@ -1,14 +1,9 @@ -package com.ridgebotics.ridgescout.ui; +package com.ridgebotics.ridgescout.ui.views; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; -import android.graphics.ColorMatrixColorFilter; -import android.graphics.LinearGradient; -import android.graphics.Matrix; import android.graphics.Paint; -import android.graphics.RectF; -import android.graphics.Shader; import android.util.AttributeSet; import android.view.View; import android.view.ViewTreeObserver; @@ -18,6 +13,7 @@ import java.util.Iterator; import java.util.List; import java.util.Random; +// Unused. AI-generated dynamic wallpaper for 2025 season. public class BackgroundView extends View { private List circles; private Paint whitePaint; diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/CandlestickHeader.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/views/CandlestickHeader.java similarity index 97% rename from app/src/main/java/com/ridgebotics/ridgescout/ui/CandlestickHeader.java rename to app/src/main/java/com/ridgebotics/ridgescout/ui/views/CandlestickHeader.java index 3d2883b..cc48070 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/CandlestickHeader.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/views/CandlestickHeader.java @@ -1,14 +1,14 @@ -package com.ridgebotics.ridgescout.ui; +package com.ridgebotics.ridgescout.ui.views; import static com.ridgebotics.ridgescout.utility.Colors.candlestick_color; import android.content.Context; import android.graphics.Canvas; -import android.graphics.Color; import android.graphics.Paint; import android.util.AttributeSet; import android.view.View; +// Shows the scale for a candlestick chart. public class CandlestickHeader extends View { private float absoluteMin = 0; diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/CandlestickView.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/views/CandlestickView.java similarity index 96% rename from app/src/main/java/com/ridgebotics/ridgescout/ui/CandlestickView.java rename to app/src/main/java/com/ridgebotics/ridgescout/ui/views/CandlestickView.java index 167f697..b19befd 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/CandlestickView.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/views/CandlestickView.java @@ -1,20 +1,20 @@ -package com.ridgebotics.ridgescout.ui; +package com.ridgebotics.ridgescout.ui.views; import static com.ridgebotics.ridgescout.utility.Colors.candlestick_color; import android.content.Context; import android.graphics.Canvas; -import android.graphics.Color; import android.graphics.Paint; import android.graphics.RectF; import android.util.AttributeSet; import android.view.View; -import com.ridgebotics.ridgescout.types.data.DataType; +import com.ridgebotics.ridgescout.types.data.RawDataType; import com.ridgebotics.ridgescout.ui.data.DataProcessing; import java.util.List; +// A single candlestick chart row. public class CandlestickView extends View { // Data points @@ -181,7 +181,7 @@ public class CandlestickView extends View { public int teamNum; - public void fromTeamData(List teamData, Integer teamNum, float absmin, float absmax){ + public void fromTeamData(List teamData, Integer teamNum, float absmin, float absmax){ this.teamNum = teamNum; int[] tmp_loc_bounds = DataProcessing.getNumberBounds(teamData); int locmin = tmp_loc_bounds[0]; diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/CustomSpinnerPopup.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/views/CustomSpinnerPopup.java similarity index 85% rename from app/src/main/java/com/ridgebotics/ridgescout/ui/CustomSpinnerPopup.java rename to app/src/main/java/com/ridgebotics/ridgescout/ui/views/CustomSpinnerPopup.java index 62d7aaf..ff10882 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/CustomSpinnerPopup.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/views/CustomSpinnerPopup.java @@ -1,29 +1,17 @@ -package com.ridgebotics.ridgescout.ui; +package com.ridgebotics.ridgescout.ui.views; import android.content.Context; -import android.os.Bundle; import android.util.AttributeSet; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.Button; import android.widget.CheckBox; -import android.widget.LinearLayout; import android.widget.TableLayout; -import androidx.annotation.NonNull; import androidx.annotation.Nullable; -import androidx.fragment.app.DialogFragment; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; -import com.google.android.material.appbar.MaterialToolbar; import com.google.android.material.divider.MaterialDivider; -import com.ridgebotics.ridgescout.R; -import java.util.ArrayList; import java.util.List; +// The notification view of a Custom dropdown notification public class CustomSpinnerPopup extends TableLayout { public CustomSpinnerPopup(Context context) { diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/CustomSpinnerView.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/views/CustomSpinnerView.java similarity index 97% rename from app/src/main/java/com/ridgebotics/ridgescout/ui/CustomSpinnerView.java rename to app/src/main/java/com/ridgebotics/ridgescout/ui/views/CustomSpinnerView.java index f3b5522..e6297d9 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/CustomSpinnerView.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/views/CustomSpinnerView.java @@ -1,4 +1,4 @@ -package com.ridgebotics.ridgescout.ui; +package com.ridgebotics.ridgescout.ui.views; import static android.app.PendingIntent.getActivity; @@ -16,6 +16,7 @@ import com.ridgebotics.ridgescout.R; import java.util.List; +// The dropdown element of a custom spinner view. public class CustomSpinnerView extends LinearLayout { public interface onClickListener { diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/FieldBorderedRow.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/views/FieldBorderedRow.java similarity index 97% rename from app/src/main/java/com/ridgebotics/ridgescout/ui/FieldBorderedRow.java rename to app/src/main/java/com/ridgebotics/ridgescout/ui/views/FieldBorderedRow.java index 4575af5..f486fd1 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/FieldBorderedRow.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/views/FieldBorderedRow.java @@ -1,4 +1,4 @@ -package com.ridgebotics.ridgescout.ui; +package com.ridgebotics.ridgescout.ui.views; import android.content.Context; import android.graphics.Color; diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/FieldDisplay.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/views/FieldDisplay.java similarity index 92% rename from app/src/main/java/com/ridgebotics/ridgescout/ui/FieldDisplay.java rename to app/src/main/java/com/ridgebotics/ridgescout/ui/views/FieldDisplay.java index 436897a..6df438f 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/FieldDisplay.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/views/FieldDisplay.java @@ -1,4 +1,4 @@ -package com.ridgebotics.ridgescout.ui; +package com.ridgebotics.ridgescout.ui.views; import android.content.Context; import android.graphics.Color; @@ -9,17 +9,14 @@ import android.view.LayoutInflater; import android.view.View; import android.widget.Button; import android.widget.LinearLayout; -import android.widget.TextView; import androidx.annotation.Nullable; import androidx.constraintlayout.widget.ConstraintLayout; import com.ridgebotics.ridgescout.R; -import com.ridgebotics.ridgescout.types.data.DataType; import com.ridgebotics.ridgescout.types.input.FieldType; -import java.util.function.Function; - +// Shows a display of the view in the view editor. public class FieldDisplay extends ConstraintLayout { public FieldDisplay(Context context, @Nullable AttributeSet attrs) { super(context, attrs); @@ -36,7 +33,6 @@ public class FieldDisplay extends ConstraintLayout { public Button editButton; // private View fieldView; - private LinearLayout buttonBox; private ConstraintLayout box; public View coloredBackground; private LinearLayout fieldDisplayBox; @@ -50,7 +46,6 @@ public class FieldDisplay extends ConstraintLayout { editButton = findViewById(R.id.button_edit); - buttonBox = findViewById(R.id.buttons); } private ToggleTitleView toggleTitleView; diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/scouting/FieldPosView.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/views/FieldPosView.java similarity index 97% rename from app/src/main/java/com/ridgebotics/ridgescout/ui/scouting/FieldPosView.java rename to app/src/main/java/com/ridgebotics/ridgescout/ui/views/FieldPosView.java index f47e132..b1b3cd5 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/scouting/FieldPosView.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/views/FieldPosView.java @@ -1,4 +1,4 @@ -package com.ridgebotics.ridgescout.ui.scouting; +package com.ridgebotics.ridgescout.ui.views; import android.annotation.SuppressLint; import android.content.Context; @@ -15,6 +15,7 @@ import android.widget.ImageView; import com.ridgebotics.ridgescout.R; import com.ridgebotics.ridgescout.utility.SettingsManager; +// Custom view to display a field position. public class FieldPosView extends FrameLayout { private int x = -1; private int y = -1; diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/scouting/MultiFieldPosView.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/views/MultiFieldPosView.java similarity index 93% rename from app/src/main/java/com/ridgebotics/ridgescout/ui/scouting/MultiFieldPosView.java rename to app/src/main/java/com/ridgebotics/ridgescout/ui/views/MultiFieldPosView.java index b0e5119..4139f0c 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/scouting/MultiFieldPosView.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/views/MultiFieldPosView.java @@ -1,14 +1,11 @@ -package com.ridgebotics.ridgescout.ui.scouting; +package com.ridgebotics.ridgescout.ui.views; import android.annotation.SuppressLint; import android.content.Context; -import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; -import android.graphics.drawable.Drawable; import android.util.AttributeSet; -import android.view.MotionEvent; import android.widget.FrameLayout; import android.widget.ImageView; diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/TBAEventOption.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/views/TBAEventOption.java similarity index 93% rename from app/src/main/java/com/ridgebotics/ridgescout/ui/TBAEventOption.java rename to app/src/main/java/com/ridgebotics/ridgescout/ui/views/TBAEventOption.java index 644e7c5..7a86006 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/TBAEventOption.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/views/TBAEventOption.java @@ -1,14 +1,12 @@ -package com.ridgebotics.ridgescout.ui; +package com.ridgebotics.ridgescout.ui.views; import android.content.Context; -import android.graphics.Bitmap; import android.graphics.Color; import android.graphics.PorterDuff; import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; -import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; @@ -16,8 +14,8 @@ import androidx.annotation.Nullable; import androidx.constraintlayout.widget.ConstraintLayout; import com.ridgebotics.ridgescout.R; -import com.ridgebotics.ridgescout.types.frcTeam; +// Class for custom view displaying an event in the TBASelector.java public class TBAEventOption extends LinearLayout { public TBAEventOption(Context context, @Nullable AttributeSet attrs) { super(context, attrs); diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/scouting/TallyCounterView.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/views/TallyCounterView.java similarity index 93% rename from app/src/main/java/com/ridgebotics/ridgescout/ui/scouting/TallyCounterView.java rename to app/src/main/java/com/ridgebotics/ridgescout/ui/views/TallyCounterView.java index 4a7a49b..a0aa7e4 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/scouting/TallyCounterView.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/views/TallyCounterView.java @@ -1,4 +1,4 @@ -package com.ridgebotics.ridgescout.ui.scouting; +package com.ridgebotics.ridgescout.ui.views; import android.content.Context; import android.util.AttributeSet; @@ -9,6 +9,7 @@ import android.widget.TextView; import com.ridgebotics.ridgescout.R; +// Unused. This would be almost the same as the Fieldpos field, except it would support multiple positions. public class TallyCounterView extends LinearLayout { private int count = 0; private TextView countDisplay; diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/TeamCard.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/views/TeamCard.java similarity index 96% rename from app/src/main/java/com/ridgebotics/ridgescout/ui/TeamCard.java rename to app/src/main/java/com/ridgebotics/ridgescout/ui/views/TeamCard.java index 088b57f..af623d4 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/TeamCard.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/views/TeamCard.java @@ -1,4 +1,4 @@ -package com.ridgebotics.ridgescout.ui; +package com.ridgebotics.ridgescout.ui.views; import android.content.Context; import android.graphics.Bitmap; @@ -18,6 +18,7 @@ import androidx.constraintlayout.widget.ConstraintLayout; import com.ridgebotics.ridgescout.R; import com.ridgebotics.ridgescout.types.frcTeam; +// A view for displaying information about a team. public class TeamCard extends LinearLayout { public TeamCard(Context context, @Nullable AttributeSet attrs) { super(context, attrs); diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/TeamListOption.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/views/TeamListOption.java similarity index 95% rename from app/src/main/java/com/ridgebotics/ridgescout/ui/TeamListOption.java rename to app/src/main/java/com/ridgebotics/ridgescout/ui/views/TeamListOption.java index c34bb0a..0d612c8 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/TeamListOption.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/views/TeamListOption.java @@ -1,4 +1,4 @@ -package com.ridgebotics.ridgescout.ui; +package com.ridgebotics.ridgescout.ui.views; import android.content.Context; import android.graphics.Bitmap; @@ -18,6 +18,7 @@ import androidx.constraintlayout.widget.ConstraintLayout; import com.ridgebotics.ridgescout.R; import com.ridgebotics.ridgescout.types.frcTeam; +// A view that acts as a row specifically to display a team and their icon in a list formmt. public class TeamListOption extends LinearLayout { public TeamListOption(Context context, @Nullable AttributeSet attrs) { super(context, attrs); diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/ToggleTitleView.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/views/ToggleTitleView.java similarity index 96% rename from app/src/main/java/com/ridgebotics/ridgescout/ui/ToggleTitleView.java rename to app/src/main/java/com/ridgebotics/ridgescout/ui/views/ToggleTitleView.java index fb2e10c..45edb0d 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/ToggleTitleView.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/views/ToggleTitleView.java @@ -1,4 +1,4 @@ -package com.ridgebotics.ridgescout.ui; +package com.ridgebotics.ridgescout.ui.views; import static com.ridgebotics.ridgescout.utility.Colors.toggletitle_black_background; import static com.ridgebotics.ridgescout.utility.Colors.toggletitle_no_background; @@ -9,7 +9,6 @@ import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.widget.CheckBox; -import android.widget.CompoundButton; import android.widget.TextView; import androidx.annotation.NonNull; @@ -18,6 +17,7 @@ import androidx.constraintlayout.widget.ConstraintLayout; import com.ridgebotics.ridgescout.R; +// The enable and disable button for match and pit scouting public class ToggleTitleView extends ConstraintLayout { public ToggleTitleView(@NonNull Context context, @Nullable AttributeSet attrs) { super(context, attrs); diff --git a/app/src/main/java/com/ridgebotics/ridgescout/utility/AlertManager.java b/app/src/main/java/com/ridgebotics/ridgescout/utility/AlertManager.java index 2956dd5..463a295 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/utility/AlertManager.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/utility/AlertManager.java @@ -1,5 +1,6 @@ package com.ridgebotics.ridgescout.utility; +import android.annotation.SuppressLint; import android.app.Activity; import android.app.AlertDialog; import android.content.Context; @@ -11,7 +12,9 @@ import java.io.StringWriter; import java.util.ArrayList; import java.util.List; +// Class to cause alerts and popups public class AlertManager { + @SuppressLint("StaticFieldLeak") public static Context context; public static void init(Context c){ diff --git a/app/src/main/java/com/ridgebotics/ridgescout/utility/AutoSaveManager.java b/app/src/main/java/com/ridgebotics/ridgescout/utility/AutoSaveManager.java index bf2e0e3..7393f1e 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/utility/AutoSaveManager.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/utility/AutoSaveManager.java @@ -3,6 +3,8 @@ package com.ridgebotics.ridgescout.utility; import android.os.Handler; import android.os.Looper; +// Class to run a save function after a timeout of not calling the update function has been reached. +// Used for auto-saving in pit and match scouting. public class AutoSaveManager { public static final long AUTO_SAVE_DELAY = 2000; // 2 seconds diff --git a/app/src/main/java/com/ridgebotics/ridgescout/utility/BuiltByteParser.java b/app/src/main/java/com/ridgebotics/ridgescout/utility/BuiltByteParser.java index b23ecde..fe1bdf0 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/utility/BuiltByteParser.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/utility/BuiltByteParser.java @@ -5,6 +5,7 @@ import static com.ridgebotics.ridgescout.utility.FileEditor.lengthHeaderBytes; import java.nio.charset.StandardCharsets; import java.util.ArrayList; +// Class to decode the raw types from any of the scouting files public class BuiltByteParser { public static final Integer boolType = 0; public static final Integer intType = 1; diff --git a/app/src/main/java/com/ridgebotics/ridgescout/utility/ByteBuilder.java b/app/src/main/java/com/ridgebotics/ridgescout/utility/ByteBuilder.java index 643444c..abd85e4 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/utility/ByteBuilder.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/utility/ByteBuilder.java @@ -5,6 +5,7 @@ import static com.ridgebotics.ridgescout.utility.FileEditor.lengthHeaderBytes; import java.nio.charset.StandardCharsets; import java.util.ArrayList; +// Class to encode the raw types from any of the scouting files public class ByteBuilder { public static final int bool_id = 0; public static final int int_id = 1; diff --git a/app/src/main/java/com/ridgebotics/ridgescout/utility/Colors.java b/app/src/main/java/com/ridgebotics/ridgescout/utility/Colors.java index 9e0d2f8..a75682c 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/utility/Colors.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/utility/Colors.java @@ -2,6 +2,7 @@ package com.ridgebotics.ridgescout.utility; import android.graphics.Color; +// Constants for most of the colors in the entire app. public class Colors { // Lists and stuff public static final int color_found = 0x7f00ff00; @@ -63,7 +64,7 @@ public class Colors { // fileselector public static final int fileselector_selected_color = 0x5000ff00; - public static final int fileselector_unselected_color = 0x5000ff00; + public static final int fileselector_unselected_color = 0x50006600; // TBA public static final int tba_previous = 0x30FF0000; diff --git a/app/src/main/java/com/ridgebotics/ridgescout/utility/DataManager.java b/app/src/main/java/com/ridgebotics/ridgescout/utility/DataManager.java index cd1aa52..d4e353f 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/utility/DataManager.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/utility/DataManager.java @@ -9,6 +9,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +// Static class to hold loaded data, for ease of access. public class DataManager { public static String evcode; public static frcEvent event; diff --git a/app/src/main/java/com/ridgebotics/ridgescout/utility/FileEditor.java b/app/src/main/java/com/ridgebotics/ridgescout/utility/FileEditor.java index 66e6497..b57d3bb 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/utility/FileEditor.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/utility/FileEditor.java @@ -25,6 +25,7 @@ import java.util.zip.DataFormatException; import java.util.zip.Deflater; import java.util.zip.Inflater; +// Helper class for binary editing public final class FileEditor { public final static String baseDir = "/data/data/com.ridgebotics.ridgescout/"; public static final byte internalDataVersion = 0x01; diff --git a/app/src/main/java/com/ridgebotics/ridgescout/utility/ImageRequestTask.java b/app/src/main/java/com/ridgebotics/ridgescout/utility/ImageRequestTask.java index ca00868..485debb 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/utility/ImageRequestTask.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/utility/ImageRequestTask.java @@ -15,6 +15,8 @@ import java.util.function.Function; import javax.net.ssl.HttpsURLConnection; +// Class to retrieve team icon from TBA + // https://stackoverflow.com/questions/37510411/download-an-image-into-bitmap-file-in-android public class ImageRequestTask extends AsyncTask { diff --git a/app/src/main/java/com/ridgebotics/ridgescout/utility/JSONUtil.java b/app/src/main/java/com/ridgebotics/ridgescout/utility/JSONUtil.java index d8d2b0e..170d7cf 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/utility/JSONUtil.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/utility/JSONUtil.java @@ -6,6 +6,7 @@ import java.util.ArrayList; import java.util.Comparator; import java.util.List; +// Literally just sorting json public class JSONUtil { public static JSONArray sort(JSONArray array, Comparator c){ List asList = new ArrayList(array.length()); diff --git a/app/src/main/java/com/ridgebotics/ridgescout/utility/RequestTask.java b/app/src/main/java/com/ridgebotics/ridgescout/utility/RequestTask.java index 94fedb8..88837b5 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/utility/RequestTask.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/utility/RequestTask.java @@ -12,6 +12,8 @@ import java.util.function.Function; import javax.net.ssl.HttpsURLConnection; +// Class to send an http request +// Used for TBA public class RequestTask extends AsyncTask { private Function resultFunction = null; diff --git a/app/src/main/java/com/ridgebotics/ridgescout/utility/SentimentAnalysis.java b/app/src/main/java/com/ridgebotics/ridgescout/utility/SentimentAnalysis.java index da29826..b188f16 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/utility/SentimentAnalysis.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/utility/SentimentAnalysis.java @@ -7,6 +7,8 @@ import org.tensorflow.lite.task.text.nlclassifier.NLClassifier; import java.util.List; +// Class that runs a sentiment analysis model of a string +// This would be very cool if it was useful at all. public class SentimentAnalysis { private static NLClassifier textClassifier; diff --git a/app/src/main/java/com/ridgebotics/ridgescout/utility/SettingsManager.java b/app/src/main/java/com/ridgebotics/ridgescout/utility/SettingsManager.java index 42a4c39..dd13829 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/utility/SettingsManager.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/utility/SettingsManager.java @@ -7,6 +7,7 @@ import java.util.HashMap; import java.util.Map; import java.util.UUID; +// Helper class for loading settings from android SharedPreferences public class SettingsManager { public static SharedPreferences prefs; public static SharedPreferences.Editor editor; diff --git a/app/src/main/java/com/ridgebotics/ridgescout/utility/SharePrompt.java b/app/src/main/java/com/ridgebotics/ridgescout/utility/SharePrompt.java index 24492e4..bb8e995 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/utility/SharePrompt.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/utility/SharePrompt.java @@ -10,6 +10,7 @@ import java.io.File; import java.io.FileOutputStream; import java.io.IOException; +// Class to cause the share popup. public class SharePrompt { public static void shareContent(Context context, String fileName, String content, String mimeType) { shareContent(context, fileName, content.getBytes(), mimeType); diff --git a/app/src/main/res/layout/fragment_data.xml b/app/src/main/res/layout/fragment_data.xml index 093e1e4..9a2793b 100644 --- a/app/src/main/res/layout/fragment_data.xml +++ b/app/src/main/res/layout/fragment_data.xml @@ -36,7 +36,7 @@ android:layout_width="match_parent" android:layout_height="match_parent"> - - - - diff --git a/app/src/main/res/layout/fragment_scouting_pit.xml b/app/src/main/res/layout/fragment_scouting_pit.xml index 046a84e..05a3038 100644 --- a/app/src/main/res/layout/fragment_scouting_pit.xml +++ b/app/src/main/res/layout/fragment_scouting_pit.xml @@ -73,7 +73,7 @@ -