Make use sharedprefrences

This commit is contained in:
Astatin3
2024-09-20 15:59:35 -06:00
parent 9f5ebd4215
commit 07c6e9a2aa
26 changed files with 315 additions and 580 deletions
@@ -1,8 +1,5 @@
package com.ridgebotics.ridgescout.ui.data;
import static com.ridgebotics.ridgescout.SettingsVersionStack.latestSettings.settings;
import static com.ridgebotics.ridgescout.utility.DataManager.event;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
@@ -13,14 +10,6 @@ import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.ridgebotics.ridgescout.databinding.FragmentDataCompareBinding;
import com.ridgebotics.ridgescout.databinding.FragmentDataReportBinding;
import com.ridgebotics.ridgescout.types.frcMatch;
import com.ridgebotics.ridgescout.utility.AlertManager;
import com.ridgebotics.ridgescout.utility.DataManager;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.IntStream;
public class CompareFragment extends Fragment {
FragmentDataCompareBinding binding;
@@ -14,7 +14,7 @@ import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.ridgebotics.ridgescout.R;
import com.ridgebotics.ridgescout.SettingsVersionStack.latestSettings;
import com.ridgebotics.ridgescout.utility.settingsManager;
import com.ridgebotics.ridgescout.databinding.FragmentDataBinding;
import com.ridgebotics.ridgescout.types.frcTeam;
import com.ridgebotics.ridgescout.ui.TeamSelectorFragment;
@@ -33,7 +33,7 @@ public class DataFragment extends Fragment {
binding = FragmentDataBinding.inflate(inflater, container, false);
View root = binding.getRoot();
String evcode = latestSettings.settings.get_evcode();
String evcode = settingsManager.getEVCode();
binding.fieldsButton.setOnClickListener(v -> {
findNavController(this).navigate(R.id.action_navigation_data_to_navigation_data_fields_chooser);
@@ -1,13 +1,10 @@
package com.ridgebotics.ridgescout.ui.data;
import static com.ridgebotics.ridgescout.SettingsVersionStack.latestSettings.settings;
import static com.ridgebotics.ridgescout.types.input.inputType.dropdownType;
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 static com.ridgebotics.ridgescout.utility.DataManager.pit_latest_values;
import android.app.Activity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
@@ -28,7 +25,9 @@ import com.ridgebotics.ridgescout.types.input.inputType;
import com.ridgebotics.ridgescout.types.input.sliderType;
import com.ridgebotics.ridgescout.utility.DataManager;
import com.ridgebotics.ridgescout.utility.fileEditor;
import com.ridgebotics.ridgescout.utility.ollama.OllamaTest;
import com.ridgebotics.ridgescout.utility.ollama.OllamaClient;
import com.ridgebotics.ridgescout.utility.ollama.PromptCreator;
import com.ridgebotics.ridgescout.utility.settingsManager;
import java.util.ArrayList;
import java.util.List;
@@ -51,42 +50,25 @@ public class ReportFragment extends Fragment {
return binding.getRoot();
}
//
// public frcMatch[] getTeamMatches(int teamNum){
// List<frcMatch> teamMatches = new ArrayList<>();
// for(int i = 0; i < event.matches.size(); i++){
// frcMatch match = event.matches.get(i);
// boolean isTeamMatch = false;
// isTeamMatch = IntStream.of(match.redAlliance).anyMatch(x -> x == teamNum);
// isTeamMatch = isTeamMatch || IntStream.of(match.blueAlliance).anyMatch(x -> x == teamNum);
// if(isTeamMatch)
// teamMatches.add(match);
// }
// return teamMatches.toArray(new frcMatch[0]);
// }
public frcMatch[] getTeamMatches(int teamNum){
List<frcMatch> teamMatches = new ArrayList<>();
for(int i = 0; i < event.matches.size(); i++){
frcMatch match = event.matches.get(i);
boolean isTeamMatch = false;
isTeamMatch = IntStream.of(match.redAlliance).anyMatch(x -> x == teamNum);
isTeamMatch = isTeamMatch || IntStream.of(match.blueAlliance).anyMatch(x -> x == teamNum);
if(isTeamMatch)
teamMatches.add(match);
}
return teamMatches.toArray(new frcMatch[0]);
}
private int getMostRecentTeamMatch(int teamNum, int curMatch){
frcMatch[] teamMatches = getTeamMatches(teamNum);
int maxMatch = - 1;
for(int i = 0; i < teamMatches.length; i++) {
if (teamMatches[i].matchIndex < curMatch &&
teamMatches[i].matchIndex > maxMatch) {
maxMatch = teamMatches[i].matchIndex;
}
}
if(maxMatch == -1)
return curMatch;
else
return maxMatch;
}
public void getReportMatches(){
// String out = "";
int ourTeamNum = settings.get_team_num();
frcMatch[] teamMatches = getTeamMatches(ourTeamNum);
int ourTeamNum = settingsManager.getTeamNum();
frcMatch[] teamMatches = event.getTeamMatches(ourTeamNum);
TableRow tr = new TableRow(getContext());
@@ -119,7 +101,7 @@ public class ReportFragment extends Fragment {
if(teamNum == ourTeamNum)
continue;
int matchNum = getMostRecentTeamMatch(teamNum, teamMatches[i].matchIndex);
int matchNum = event.getMostRecentTeamMatch(teamNum, teamMatches[i].matchIndex);
if(maxMatch < matchNum)
maxMatch = matchNum;
}
@@ -134,127 +116,12 @@ public class ReportFragment extends Fragment {
// AlertManager.error(out);
}
private String fieldSummary(inputType field){
String summary = field.name + ": ";
switch (field.getInputType()){
case DROPDOWN:
summary += "A the index of a dropdown with the possible options: [" +String.join(", ", ((dropdownType) field).text_options) + "]";
break;
case SLIDER:
sliderType slider = (sliderType) field;
summary += "A slider with the range ["+slider.min+","+slider.max+"]";
break;
case TALLY:
summary += "A tally counter";
break;
case NOTES_INPUT:
summary += "Raw text input";
break;
}
return summary;
}
private void AIDataOverview(){
String prompt = "Below is a list of data collected from an FRC match. Generate a qualitative and concise summary of the teams listed in the data collected.\n\n";
String prompt = PromptCreator.genMatchPrompt(0);
frcMatch curmatch = event.matches.get(0);
prompt += "## Pit scouting\n";
prompt += "This is a list of the different fields that are present in the pit scouting data:\n";
prompt += "1) Team number\n";
for(int i = 0; i < pit_latest_values.length; i++){
prompt += (i+2) + ") " + fieldSummary(pit_latest_values[i]) + "\n";
}
prompt += ("\nData:\n");
for(int a = 0; a < 6; a++){
int teamNum = 0;
if(a < 3)
teamNum = curmatch.redAlliance[a];
else
teamNum = curmatch.blueAlliance[a-3];
prompt += teamNum + ",";
String filename = evcode+"-"+teamNum+".pitscoutdata";
if(!fileEditor.fileExist(filename)){
prompt += ("null,".repeat(pit_latest_values.length));
}else{
ScoutingDataWriter.ParsedScoutingDataResult psdr = ScoutingDataWriter.load(filename, DataManager.pit_values, DataManager.pit_transferValues);
dataType[] types = psdr.data.array;
for(int i = 0; i < types.length; i++) {
prompt += (types[i].get() + ",");
}
}
prompt += "\n";
}
prompt += "\n## Match scouting\n";
prompt += "This is a list of the different fields that are present in the match scouting data:\n";
prompt += "1) Match number\n";
for(int i = 0; i < match_latest_values.length; i++){
prompt += (i+2) + ") " + fieldSummary(match_latest_values[i]) + "\n";
}
prompt += ("\nData:\n");
for(int a = 0; a < 6; a++){
int teamNum = 0;
if(a < 3)
teamNum = curmatch.redAlliance[a];
else
teamNum = curmatch.blueAlliance[a-3];
prompt += "Team " + teamNum + " Match scout data:\n";
frcMatch[] matchNums = getTeamMatches(teamNum);
for(int b = 0; b < matchNums.length; b++) {
frcMatch match = matchNums[b];
String alliance = "";
int alliancePos = 0;
for(int c = 0; c < 6; c++) {
if(c<3){
if(match.redAlliance[c] != teamNum) continue;
alliance = "red";
alliancePos = c+1;
break;
}else{
if(match.blueAlliance[c-3] != teamNum) continue;
alliance = "blue";
alliancePos = c-2;
break;
}
}
String filename = evcode + "-" + match.matchIndex + "-" + alliance + "-" + alliancePos + "-" + teamNum + ".matchscoutdata";
if (!fileEditor.fileExist(filename)) continue;
ScoutingDataWriter.ParsedScoutingDataResult psdr = ScoutingDataWriter.load(filename, DataManager.match_values, DataManager.match_transferValues);
dataType[] types = psdr.data.array;
prompt += match.matchIndex + ",";
for (int i = 0; i < types.length; i++) {
prompt += (types[i].get() + ",");
}
prompt += "\n";
}
}
System.out.println(prompt);
// binding.AyEyeBox.setText(prompt);
OllamaTest.run(prompt, new OllamaTest.ollamaListener() {
// System.out.println(prompt);
OllamaClient.run(prompt, new OllamaClient.ollamaListener() {
@Override
public void onResponse(String response) {
// System.out.println(response);
@@ -22,7 +22,7 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.ridgebotics.ridgescout.SettingsVersionStack.latestSettings;
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;
@@ -64,7 +64,7 @@ public class TeamsFragment extends Fragment {
table.setStretchAllColumns(true);
binding.teamsArea.addView(table);
loadTeam(latestSettings.settings.get_data_view_mode());
loadTeam(settingsManager.getDataMode());
return binding.getRoot();
}
@@ -114,7 +114,7 @@ public class TeamsFragment extends Fragment {
public void onItemSelected(int oldIndex, @Nullable IconSpinnerItem oldItem, int newIndex,
IconSpinnerItem newItem) {
latestSettings.settings.set_data_view_mode(newIndex);
settingsManager.setDataMode(newIndex);
loadTeam(newIndex);
}
});
@@ -14,7 +14,7 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.ridgebotics.ridgescout.SettingsVersionStack.latestSettings;
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;
@@ -41,8 +41,8 @@ public class MatchScoutingFragment extends Fragment {
DataManager.reload_match_fields();
alliance_position = latestSettings.settings.get_alliance_pos();
username = latestSettings.settings.get_username();
alliance_position = settingsManager.getAllyPos();
username = settingsManager.getUsername();
binding.username.setText(username);
binding.alliancePosText.setText(alliance_position);
@@ -64,12 +64,12 @@ public class MatchScoutingFragment extends Fragment {
cur_match_num = latestSettings.settings.get_match_num();
cur_match_num = settingsManager.getMatchNum();
update_match_num();
binding.nextButton.setOnClickListener(v -> {
if(edited) save();
latestSettings.settings.set_match_num(cur_match_num+1);
settingsManager.setMatchNum(cur_match_num+1);
cur_match_num += 1;
update_match_num();
update_scouting_data();
@@ -83,7 +83,7 @@ public class MatchScoutingFragment extends Fragment {
if(edited) save();
alliance_position = incrementMatchPos(alliance_position);
latestSettings.settings.set_alliance_pos(alliance_position);
settingsManager.setAllyPos(alliance_position);
binding.alliancePosText.setText(alliance_position);
update_match_num();
@@ -93,7 +93,7 @@ public class MatchScoutingFragment extends Fragment {
binding.backButton.setOnClickListener(v -> {
if(edited) save();
latestSettings.settings.set_match_num(cur_match_num-1);
settingsManager.setMatchNum(cur_match_num-1);
cur_match_num -= 1;
update_match_num();
update_scouting_data();
@@ -15,7 +15,7 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.ridgebotics.ridgescout.SettingsVersionStack.latestSettings;
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;
@@ -43,7 +43,7 @@ public class PitScoutingFragment extends Fragment {
binding = FragmentScoutingPitBinding.inflate(inflater, container, false);
username = latestSettings.settings.get_username();
username = settingsManager.getUsername();
DataManager.reload_pit_fields();
loadTeam();
@@ -16,7 +16,7 @@ import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.ridgebotics.ridgescout.R;
import com.ridgebotics.ridgescout.SettingsVersionStack.latestSettings;
import com.ridgebotics.ridgescout.utility.settingsManager;
import com.ridgebotics.ridgescout.databinding.FragmentScoutingBinding;
import com.ridgebotics.ridgescout.types.frcTeam;
import com.ridgebotics.ridgescout.ui.TeamSelectorFragment;
@@ -34,7 +34,7 @@ public class ScoutingFragment extends Fragment {
binding.buttons.setVisibility(View.VISIBLE);
String evcode = latestSettings.settings.get_evcode();
String evcode = settingsManager.getEVCode();
if(evcode.equals("unset")){
binding.noEventError.setVisibility(View.VISIBLE);
@@ -20,7 +20,7 @@ import androidx.fragment.app.Fragment;
import com.ridgebotics.ridgescout.databinding.FragmentSettingsBinding;
import com.ridgebotics.ridgescout.utility.fileEditor;
import com.ridgebotics.ridgescout.SettingsVersionStack.latestSettings;
import com.ridgebotics.ridgescout.utility.settingsManager;
import com.skydoves.powerspinner.IconSpinnerAdapter;
import com.skydoves.powerspinner.IconSpinnerItem;
@@ -48,11 +48,11 @@ public class settingsFragment extends Fragment {
View root = binding.getRoot();
EditText username = binding.username;
username.setText(latestSettings.settings.get_username());
username.setText(settingsManager.getUsername());
username.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
latestSettings.settings.set_username(username.getText().toString());
settingsManager.setUsername(username.getText().toString());
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
public void onTextChanged(CharSequence s, int start, int before, int count) {}
@@ -65,7 +65,7 @@ public class settingsFragment extends Fragment {
List<IconSpinnerItem> iconSpinnerItems = new ArrayList<>();
String target_event_name = latestSettings.settings.get_evcode();
String target_event_name = settingsManager.getEVCode();
int target_index = -1;
ArrayList<String> evlist = fileEditor.getEventList();
@@ -89,7 +89,7 @@ public class settingsFragment extends Fragment {
@Override
public void onItemSelected(int oldIndex, @Nullable IconSpinnerItem oldItem, int newIndex,
IconSpinnerItem newItem) {
latestSettings.settings.set_evcode(newItem.getText().toString());
settingsManager.setEVCode(newItem.getText().toString());
}
});
@@ -106,7 +106,7 @@ public class settingsFragment extends Fragment {
List<IconSpinnerItem> alliance_pos_iconSpinnerItems = new ArrayList<>();
String target_alliance_pos = latestSettings.settings.get_alliance_pos();
String target_alliance_pos = settingsManager.getAllyPos();
int alliance_pos_target_index = -1;
String[] alliance_pos_list = new String[]{"red-1", "red-2", "red-3",
@@ -132,7 +132,7 @@ public class settingsFragment extends Fragment {
@Override
public void onItemSelected(int oldIndex, @Nullable IconSpinnerItem oldItem, int newIndex,
IconSpinnerItem newItem) {
latestSettings.settings.set_alliance_pos(newItem.getText().toString());
settingsManager.setAllyPos(newItem.getText().toString());
}
});
@@ -159,11 +159,11 @@ public class settingsFragment extends Fragment {
EditText team_num = binding.teamNumber;
team_num.setText(String.valueOf(latestSettings.settings.get_team_num()));
team_num.setText(String.valueOf(settingsManager.getTeamNum()));
team_num.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
latestSettings.settings.set_team_num(team_num.getText().toString());
settingsManager.setTeamNum(Integer.parseInt(team_num.getText().toString()));
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {}
public void onTextChanged(CharSequence s, int start, int before, int count) {}
@@ -178,12 +178,12 @@ public class settingsFragment extends Fragment {
wifi_mode.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean isChecked) {
latestSettings.settings.set_wifi_mode(isChecked);
settingsManager.setWifiMode(isChecked);
}
});
wifi_mode.setChecked(latestSettings.settings.get_wifi_mode());
wifi_mode.setChecked(settingsManager.getWifiMode());
@@ -200,13 +200,13 @@ public class settingsFragment extends Fragment {
alert.setCancelable(true);
alert.setPositiveButton("Ok", (dialog, which) -> {
latestSettings.settings.defaultSettings();
username.setText(latestSettings.settings.get_username());
// settingsManager.settings.defaultSettings();
username.setText(settingsManager.getUsername());
spinnerView.clearSelectedItem();
// practice_mode.setChecked(latestSettings.settings.get_practice_mode());
wifi_mode.setChecked(latestSettings.settings.get_wifi_mode());
wifi_mode.setChecked(settingsManager.getWifiMode());
alliance_pos_spinnerView.selectItemByIndex(0);
team_num.setText(String.valueOf(latestSettings.settings.get_team_num()));
team_num.setText(String.valueOf(settingsManager.getTeamNum()));
});
alert.setNegativeButton("Cancel", null);
@@ -14,7 +14,7 @@ import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.ridgebotics.ridgescout.R;
import com.ridgebotics.ridgescout.SettingsVersionStack.latestSettings;
import com.ridgebotics.ridgescout.utility.settingsManager;
import com.ridgebotics.ridgescout.databinding.FragmentTransferBinding;
import com.ridgebotics.ridgescout.ui.transfer.bluetooth.BluetoothSenderFragment;
import com.ridgebotics.ridgescout.ui.transfer.codes.CodeGeneratorView;
@@ -45,7 +45,7 @@ public class TransferFragment extends Fragment {
binding = FragmentTransferBinding.inflate(inflater, container, false);
evcode = latestSettings.settings.get_evcode();
evcode = settingsManager.getEVCode();
binding.downloadButton.setOnClickListener(v -> {
start_download();
@@ -106,7 +106,7 @@ public class TransferFragment extends Fragment {
builder.show();
});
if(!latestSettings.settings.get_wifi_mode())
if(!settingsManager.getWifiMode())
binding.TBAButton.setEnabled(false);
return binding.getRoot();