mirror of
https://github.com/Team4388/RidgeScout.git
synced 2026-06-09 08:38:03 -06:00
Start work on match scouting ui
This commit is contained in:
@@ -7,7 +7,7 @@ import com.astatin3.scoutingapp2025.fileEditor;
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class fields {
|
||||
private static ScoutingVersion sv = new ScoutingVersion();
|
||||
public static ScoutingVersion sv = new ScoutingVersion();
|
||||
public static final String fieldsFilename = "data.fields";
|
||||
|
||||
public static ScoutingVersion.inputType[][] values = new ScoutingVersion.inputType[][]{};
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
package com.astatin3.scoutingapp2025.SettingsVersionStack;
|
||||
|
||||
public class latestSettings {
|
||||
public static sv0 settings = new sv0();
|
||||
public static sv1 settings = new sv1();
|
||||
public static void update(){
|
||||
settings.init_settings();
|
||||
settings.update();
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
package com.astatin3.scoutingapp2025.SettingsVersionStack;
|
||||
|
||||
public class sv1 extends sv0 {
|
||||
@Override
|
||||
public int getVersion() {
|
||||
return 0;
|
||||
}
|
||||
@Override
|
||||
public void update(){
|
||||
int file_version = get_file_version();
|
||||
if(file_version == getVersion()) {
|
||||
return;
|
||||
}else if(file_version < getVersion()){
|
||||
super.update();
|
||||
}
|
||||
set_file_version(getVersion());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void defaultSettings() {
|
||||
writeTag("username", "Username");
|
||||
writeTag("selected_event_code", "unset");
|
||||
// writeTag("practice_mode", "false");
|
||||
writeTag("wifi_mode", "false");
|
||||
|
||||
writeTag("match_num", "0");
|
||||
writeTag("alliance_pos", "red-1");
|
||||
}
|
||||
|
||||
public int get_match_num(){
|
||||
return Integer.parseInt(readTag("match_num"));
|
||||
}
|
||||
|
||||
public void set_match_num(int num){
|
||||
writeTag("match_num", String.valueOf(num));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void set_evcode(String evcode){
|
||||
set_match_num(0);
|
||||
writeTag("selected_event_code", evcode);
|
||||
}
|
||||
|
||||
public String get_alliance_pos(){
|
||||
return readTag("alliance_pos");
|
||||
}
|
||||
|
||||
public void set_alliance_pos(String pos){
|
||||
writeTag("alliance_pos", pos);
|
||||
}
|
||||
}
|
||||
@@ -1,12 +1,148 @@
|
||||
package com.astatin3.scoutingapp2025.ui.scouting;
|
||||
|
||||
import static com.astatin3.scoutingapp2025.ScoutingDataVersion.fields.sv;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.AttributeSet;
|
||||
import android.view.View;
|
||||
import android.widget.RelativeLayout;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.constraintlayout.widget.ConstraintLayout;
|
||||
|
||||
import com.astatin3.scoutingapp2025.ScoutingDataVersion.ScoutingVersion;
|
||||
import com.astatin3.scoutingapp2025.ScoutingDataVersion.fields;
|
||||
import com.astatin3.scoutingapp2025.SettingsVersionStack.latestSettings;
|
||||
import com.astatin3.scoutingapp2025.databinding.FragmentScoutingBinding;
|
||||
import com.astatin3.scoutingapp2025.fileEditor;
|
||||
import com.astatin3.scoutingapp2025.types.frcEvent;
|
||||
import com.astatin3.scoutingapp2025.types.frcMatch;
|
||||
import com.astatin3.scoutingapp2025.types.frcTeam;
|
||||
|
||||
public class matchScoutingView extends ConstraintLayout {
|
||||
public matchScoutingView(@NonNull Context context) {
|
||||
public matchScoutingView(Context context) {
|
||||
super(context);
|
||||
}
|
||||
public matchScoutingView(Context context, AttributeSet attributeSet){
|
||||
super(context, attributeSet);
|
||||
}
|
||||
|
||||
FragmentScoutingBinding binding;
|
||||
String alliance_position;
|
||||
String evcode;
|
||||
int cur_match_num;
|
||||
frcEvent event;
|
||||
|
||||
public void init(FragmentScoutingBinding tmp_binding){
|
||||
binding = tmp_binding;
|
||||
|
||||
alliance_position = latestSettings.settings.get_alliance_pos();
|
||||
evcode = latestSettings.settings.get_evcode();
|
||||
event = frcEvent.decode(fileEditor.readFile(evcode + ".eventdata"));
|
||||
|
||||
binding.eventcode.setText(evcode);
|
||||
binding.alliancePosText.setText(alliance_position);
|
||||
|
||||
cur_match_num = latestSettings.settings.get_match_num();
|
||||
update_match_num();
|
||||
|
||||
binding.nextButton.setOnClickListener(v -> {
|
||||
latestSettings.settings.set_match_num(cur_match_num+1);
|
||||
cur_match_num += 1;
|
||||
update_match_num();
|
||||
});
|
||||
|
||||
binding.backButton.setOnClickListener(v -> {
|
||||
latestSettings.settings.set_match_num(cur_match_num-1);
|
||||
cur_match_num -= 1;
|
||||
update_match_num();
|
||||
});
|
||||
}
|
||||
|
||||
private void update_match_num(){
|
||||
// cur_match_num = latestSettings.settings.get_match_num();
|
||||
|
||||
binding.matchnum.setText(String.valueOf(cur_match_num+1));
|
||||
|
||||
System.out.println(cur_match_num);
|
||||
|
||||
if(cur_match_num <= 0){
|
||||
binding.backButton.setVisibility(View.GONE);
|
||||
}else{
|
||||
binding.backButton.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
if(cur_match_num >= event.matches.size()-1){
|
||||
binding.nextButton.setVisibility(View.GONE);
|
||||
}else{
|
||||
binding.nextButton.setVisibility(View.VISIBLE);
|
||||
}
|
||||
|
||||
update_scouting_data();
|
||||
}
|
||||
|
||||
public void update_scouting_data(){
|
||||
frcMatch match = event.matches.get(cur_match_num);
|
||||
|
||||
// Get team number
|
||||
String[] split = alliance_position.split("-");
|
||||
Integer team_num = null;
|
||||
|
||||
switch (split[0]){
|
||||
case "red":
|
||||
team_num = match.redAlliance[Integer.parseInt(split[1])-1];
|
||||
break;
|
||||
case "blue":
|
||||
team_num = match.blueAlliance[Integer.parseInt(split[1])-1];
|
||||
break;
|
||||
}
|
||||
|
||||
binding.barTeamNum.setText(String.valueOf(team_num));
|
||||
|
||||
frcTeam team = null;
|
||||
for(int i=0; i < event.teams.size(); i++){
|
||||
frcTeam tmpteam = event.teams.get(i);
|
||||
if(tmpteam.teamNumber == team_num){
|
||||
team = tmpteam;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
binding.teamName.setText(team.teamName);
|
||||
binding.teamDescription.setText(team.getDescription());
|
||||
|
||||
fields.load();
|
||||
ScoutingVersion.inputType[] values = fields.values[fields.values.length-1];
|
||||
|
||||
int prev_text = binding.teamDescription.getId();
|
||||
|
||||
for(int i = 0 ; i < values.length; i++){
|
||||
TextView tv = new TextView(getContext());
|
||||
|
||||
// RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
|
||||
//// params.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE);
|
||||
// params.addRule(RelativeLayout.ALIGN_LEFT, prev_text);
|
||||
// tv.setLayoutParams(params);
|
||||
|
||||
|
||||
String text = "Fallback";
|
||||
switch (values[i].getInputType()){
|
||||
case SLIDER:
|
||||
text = "Slider";
|
||||
break;
|
||||
case DROPDOWN:
|
||||
text = "Dropdown";
|
||||
break;
|
||||
case NOTES_INPUT:
|
||||
text = "Notes";
|
||||
break;
|
||||
}
|
||||
System.out.println(text);
|
||||
tv.setText(text);
|
||||
|
||||
binding.MatchScoutArea.addView(tv);
|
||||
prev_text = tv.getId();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.astatin3.scoutingapp2025.ui.scouting;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.constraintlayout.widget.ConstraintLayout;
|
||||
|
||||
public class pitScoutingView extends ConstraintLayout {
|
||||
public pitScoutingView(@NonNull Context context) {
|
||||
super(context);
|
||||
}
|
||||
}
|
||||
@@ -28,20 +28,23 @@ public class scoutingFragment extends Fragment {
|
||||
binding = FragmentScoutingBinding.inflate(inflater, container, false);
|
||||
View root = binding.getRoot();
|
||||
|
||||
binding.buttons.setVisibility(View.VISIBLE);
|
||||
binding.matchScoutingView.setVisibility(View.GONE);
|
||||
|
||||
if(latestSettings.settings.get_evcode().equals("unset")){
|
||||
binding.noEventError.setVisibility(View.VISIBLE);
|
||||
binding.buttons.setVisibility(View.GONE);
|
||||
}
|
||||
|
||||
binding.matchScoutingButton.setOnClickListener(v -> {
|
||||
binding.buttons.setVisibility(View.GONE);
|
||||
binding.matchScoutingView.setVisibility(View.VISIBLE);
|
||||
binding.matchScoutingView.init(binding);
|
||||
|
||||
// byte[] bytes = fields.save();
|
||||
// System.out.println(bytes.length);
|
||||
// System.out.println(fields.load(bytes)[0].length);
|
||||
|
||||
System.out.println(fields.load());
|
||||
|
||||
fields.test();
|
||||
|
||||
// fields.test();
|
||||
|
||||
// ByteBuilder bb = new ByteBuilder();
|
||||
|
||||
@@ -108,6 +108,53 @@ public class settingsFragment extends Fragment {
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
PowerSpinnerView alliance_pos_spinnerView = binding.alliancePosDropdown;
|
||||
|
||||
List<IconSpinnerItem> alliance_pos_iconSpinnerItems = new ArrayList<>();
|
||||
|
||||
String target_alliance_pos = latestSettings.settings.get_alliance_pos();
|
||||
int alliance_pos_target_index = -1;
|
||||
|
||||
String[] alliance_pos_list = new String[]{"red-1", "red-2", "red-3",
|
||||
"blue-1", "blue-2", "blue-3"};
|
||||
|
||||
for(int i = 0; i < alliance_pos_list.length; i++){
|
||||
if(alliance_pos_list[i].equals(target_alliance_pos)){
|
||||
alliance_pos_target_index = i;
|
||||
}
|
||||
alliance_pos_iconSpinnerItems.add(new IconSpinnerItem(alliance_pos_list[i]));
|
||||
}
|
||||
|
||||
IconSpinnerAdapter alliance_pos_iconSpinnerAdapter = new IconSpinnerAdapter(alliance_pos_spinnerView);
|
||||
alliance_pos_spinnerView.setSpinnerAdapter(alliance_pos_iconSpinnerAdapter);
|
||||
alliance_pos_spinnerView.setItems(alliance_pos_iconSpinnerItems);
|
||||
alliance_pos_spinnerView.setLifecycleOwner(this);
|
||||
|
||||
if(alliance_pos_target_index != -1){
|
||||
alliance_pos_spinnerView.selectItemByIndex(alliance_pos_target_index);
|
||||
}
|
||||
|
||||
alliance_pos_spinnerView.setOnSpinnerItemSelectedListener(new OnSpinnerItemSelectedListener<IconSpinnerItem>() {
|
||||
@Override
|
||||
public void onItemSelected(int oldIndex, @Nullable IconSpinnerItem oldItem, int newIndex,
|
||||
IconSpinnerItem newItem) {
|
||||
latestSettings.settings.set_alliance_pos(newItem.getText().toString());
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//
|
||||
// CheckBox practice_mode = binding.practiceMode;
|
||||
// practice_mode.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
|
||||
@@ -155,6 +202,7 @@ public class settingsFragment extends Fragment {
|
||||
spinnerView.clearSelectedItem();
|
||||
// practice_mode.setChecked(latestSettings.settings.get_practice_mode());
|
||||
wifi_mode.setChecked(latestSettings.settings.get_wifi_mode());
|
||||
alliance_pos_spinnerView.selectItemByIndex(0);
|
||||
});
|
||||
|
||||
alert.setNegativeButton("Cancel", null);
|
||||
|
||||
Reference in New Issue
Block a user