9 Commits

Author SHA1 Message Date
Michael Mikovsky 3e045bfcb7 Field selector, Field back button, TBA popup 2025-03-07 12:24:16 -07:00
Michael Mikovsky c78fa58754 Colors and adaptable icon 2025-03-07 11:17:02 -07:00
Michael Mikovsky 18748301cd Merge pull request #3 from Team4388/Fix-CSV-Export
Fix CSV Export
2025-03-06 18:48:05 +00:00
Michael Mikovsky a15deda539 Fix CSV Export 2025-03-06 11:46:12 -07:00
Michael Mikovsky 0846f5a3b3 Increment version number again 2025-03-01 00:06:53 -07:00
Michael Mikovsky 554cad2abd Fix Lint error 2 2025-03-01 00:00:44 -07:00
Michael Mikovsky 7d41a5e5a9 Fix Lint error 1 2025-02-28 23:55:02 -07:00
Michael Mikovsky 4cb20f4769 Forgot to change the build number 2025-02-28 22:55:20 -07:00
Michael Mikovsky 6b4b919e5f Change Fields 2025-02-28 22:54:02 -07:00
27 changed files with 221 additions and 135 deletions
-1
View File
@@ -25,7 +25,6 @@
- A page that lets scouters more easily make reports to the drive team before a match starts (Report)
#### Things that may or may not be implemented:
- Practice mode
- Statbotics intgration
- Scout error estimation using OPR-like calculation
- - Would most likely require Statbotics
+2 -2
View File
@@ -25,8 +25,8 @@ android {
applicationId = "com.ridgebotics.ridgescout"
minSdk = 24
targetSdk = 34
versionCode = 7 // **IMPORTANT** Increment this before releasing on github
versionName = "1.0"// **IMPORTANT** Change this before releasing on github (<Year num since 2024>.<Update Version>)
versionCode = 9 // **IMPORTANT** Increment this before releasing on github
versionName = "1.2"// **IMPORTANT** Change this before releasing on github (<Year num since 2024>.<Update Version>)
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
@@ -89,18 +89,16 @@ public class MainActivity extends AppCompatActivity {
NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
NavigationUI.setupWithNavController(navView, navController);
navView.setOnItemSelectedListener(new NavigationBarView.OnItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
clearBackStack();
navController.navigate(item.getItemId(), savedInstanceState, new NavOptions.Builder()
.setEnterAnim(R.anim.enter_anim)
.setExitAnim(R.anim.exit_anim)
.setPopEnterAnim(R.anim.pop_enter_anim)
.setPopExitAnim(R.anim.pop_exit_anim).build()
);
return true;
}
navView.setOnItemSelectedListener(item -> {
backPressed = null;
clearBackStack();
navController.navigate(item.getItemId(), savedInstanceState, new NavOptions.Builder()
.setEnterAnim(R.anim.enter_anim)
.setExitAnim(R.anim.exit_anim)
.setPopEnterAnim(R.anim.pop_enter_anim)
.setPopExitAnim(R.anim.pop_exit_anim).build()
);
return true;
});
}
@@ -116,11 +114,9 @@ public class MainActivity extends AppCompatActivity {
public interface activityResultRelay {
void onActivityResult(int requestCode, int resultCode, Intent data);
}
public static activityResultRelay resultRelay = null;
public static void setResultRelay(activityResultRelay tmpresultRelay){
resultRelay = tmpresultRelay;
@@ -135,4 +131,25 @@ public class MainActivity extends AppCompatActivity {
}
}
public interface onBackPressed {
boolean onBackPressed();
}
public onBackPressed backPressed = null;
public void setOnBackPressed(onBackPressed onBackPressed){
this.backPressed = onBackPressed;
}
@Override
public void onBackPressed() {
if(backPressed != null) {
if (backPressed.onBackPressed()) {
super.onBackPressed();
}
} else {super.onBackPressed();}
}
}
@@ -24,23 +24,34 @@ public class fields {
public static final inputType[][] default_match_fields = new inputType[][] {
{
new fieldposType("Auto start pos", "Where does the robot start its auto?", new int[]{0,0}),
new tallyType("Auto Coral", "How many coral did this robot score in auto?", 0),
new tallyType("Auto Algae", "How many algae did this robot score in auto?", 0),
new sliderType("Auto Performance", "How well did you think this robot did in auto?", 5, 0, 10),
new tallyType("Auto L4 Coral", "How many coral did this robot score in L4 during auto?", 0),
new tallyType("Auto L3 Coral", "How many coral did this robot score in L3 during auto?", 0),
new tallyType("Auto L2 Coral", "How many coral did this robot score in L2 during auto?", 0),
new tallyType("Auto L1/Trough Coral", "How many coral did this robot score in L1 during auto?", 0),
new tallyType("Auto Processor Algae", "How many algae did this robot score in the Barge during auto?", 0),
new tallyType("Auto Barge Algae", "How many algae did this robot score in the Barge during auto?", 0),
new dropdownType("Auto Quality", "How did the robot drive during auto?", new String[]{"Smooth", "Jittery"}, 0),
new textType("Auto Comments", "Anything interesting about auto", ""),
new tallyType("Teleop Coral", "How many coral did this robot score in teleop?", 0),
new tallyType("Teleop Algae", "How many algae did this robot score in teleop?", 0),
new checkboxType("Coral Removal", "Did the robot remove coral?", 0),
new checkboxType("L4 Scoring", "Did the robot score in Layer 4?", 0),
new checkboxType("L3 Scoring", "Did the robot score in Layer 3?", 0),
new checkboxType("L2 Scoring", "Did the robot score in Layer 3?", 0),
new checkboxType("L1 Scoring", "Did the robot score in Layer 1?", 0),
new checkboxType("Processor Scoring", "Did the robot score in the processor?", 0),
new checkboxType("Net Scoring", "Did the robot score in the net?", 0),
new sliderType("Teleop Performance", "How well did the robot drive around?", 5, 0, 10),
new textType("Teleop Notes", "Anything intresting about Teleop", ""),
new dropdownType("End Condition", "What was the final condition of the robot?", new String[]{"Nothing", "Park", "Attempted Shallow", "Shallow", "Attempted Deep", "Deep"}, 0),
new dropdownType("Robot Condition", "Was anything broken?", new String[]{"Everything was working", "Something was maybe broken", "Something was broken", "Robot was disabled for part of the match", "Missing robot (Joe Johnson)"}, 0),
new tallyType("Teleop L4 Coral", "How many coral did this robot score in L4 during auto?", 0),
new tallyType("Teleop L3 Coral", "How many coral did this robot score in L3 during auto?", 0),
new tallyType("Teleop L2 Coral", "How many coral did this robot score in L2 during auto?", 0),
new tallyType("Teleop L1 Coral", "How many coral did this robot score in L1 during auto?", 0),
new tallyType("Teleop Processor Algae", "How many algae did this robot score in the Barge during auto?", 0),
new tallyType("Teleop Barge Algae", "How many algae did this robot score in the Barge during auto?", 0),
new checkboxType("Upper Algae Removal", "Did the robot remove upper Algae?", 0),
new checkboxType("Lower Algae Removal", "Did the robot remove lower Algae?", 0),
new dropdownType("Teleop Quality", "How did the robot drive during Teleop?", new String[]{"Smooth", "Jittery"}, 0),
new textType("Teleop Comments", "Anything interesting about Teleop", ""),
new dropdownType("Climb State", "What was the final condition of the robot?", new String[]{"Nothing", "Continued Cycling", "Park", "Attempted Shallow", "Shallow", "Attempted Deep", "Deep"}, 0),
new dropdownType("Robot Condition", "Was anything broken?", new String[]{"Everything was working", "Something was maybe broken", "Something was broken", "Robot was disabled for part of the match", "Missing robot"}, 0),
new textType("Other Comments", "Any other comments you have", "")
}
};
@@ -48,16 +59,27 @@ public class fields {
public static final inputType[][] default_pit_fields = new inputType[][] {
{
new dropdownType("Drivetrain type", "What type of drivetrain does this team have?", new String[]{"Swerve Drive", "Tank Drive (Differential)", "Other, Info in comments"}, 0),
new dropdownType("Intake type", "What type of intake does this team have?", new String[]{"Ground only", "Player Station only", "Both", "Other, Info in comments"}, 0),
new dropdownType("Intake Consistency", "How consistent is the robot at intakeing?", new String[]{"Does not work", "Worked a few times during testing", "Works most of the time", "Fails sometimes", "Never fails"}, 0),
new dropdownType("Score Area", "What does this robot score?", new String[]{"Only Algae", "Mostly Algae", "Both", "Mostly Coral", "Only Coral"}, 0),
new checkboxType("L4 Scoring", "Will the robot score in Layer 4?", 0),
new checkboxType("L3 Scoring", "Will the robot score in Layer 3?", 0),
new checkboxType("L2 Scoring", "Will the robot score in Layer 3?", 0),
new checkboxType("L1/Trough Scoring", "Will the robot score in Layer 1?", 0),
new checkboxType("Processor Scoring", "Will the robot score in the processor?", 0),
new checkboxType("Net Scoring", "Will the robot score algae in the net?", 0),
new sliderType("Specialization", "How specified is the robot to it's scoring area?", 5, 0, 10),
new sliderType("Scoring Consistency", "How consistent is the robot at scoring?", 5, 0, 10),
new dropdownType("Auto type", "What autos does this team have?", new String[]{"No auto", "Simple Coral", "Simple Algae", "Complex Coral", "Complex Algae", "Other, Info in comments"}, 0),
new sliderType("Auto Consistency", "How reliable is this auto;?", 5, 0, 10),
new checkboxType("Processor Scoring", "Will the robot score in the Processor?", 0),
new checkboxType("Barge Scoring", "Will the robot score algae in the Barge?", 0),
new dropdownType("Scoring Consistency", "How consistent is the robot at Scoring?", new String[]{"Does not work", "Worked a few times during testing", "Works most of the time", "Fails sometimes", "Never fails"}, 0),
new textType("Auto Capability", "What autos does this team have?", ""),
new dropdownType("Auto Consistency", "How consistent is the robot at Auto?", new String[]{"Does not work", "Worked a few times during testing", "Works most of the time", "Fails sometimes", "Never fails"}, 0),
new dropdownType("Climb type", "What does the robot do to climb?", new String[]{"No Climb", "Only Shallow", "Only Deep", "Both Shallow and Deep"}, 0),
new dropdownType("Climb Consistency", "How consistent is the robot at climbing?", new String[]{"Does not work", "Worked a few times during testing", "Works most of the time", "Fails sometimes", "Never fails"}, 0),
new textType("Cool Comments", "Is there anything cool about the robot?", ""),
new textType("Comments", "Things go here", "Day 1:\n\nDay 2:\n\nDay 3:\n")
}
};
@@ -1,5 +1,9 @@
package com.ridgebotics.ridgescout.types.data;
import androidx.annotation.NonNull;
import org.jetbrains.annotations.NotNull;
public abstract class dataType {
public enum valueTypes {
NUM,
@@ -219,5 +219,9 @@ public class checkboxType extends inputType {
chart.invalidate();
parent.addView(chart);
}
public String toString(dataType data){
return (int) data.get() == 1 ? "true" : "false";
}
}
@@ -245,5 +245,9 @@ public class dropdownType extends inputType {
chart.invalidate();
parent.addView(chart);
}
public String toString(dataType data){
return text_options[(int) data.get()];
}
}
@@ -232,5 +232,10 @@ public class fieldposType extends inputType {
parent.addView(chart);
}
public String toString(dataType data){
int[] intarr = (int[]) data.get();
return "[" + intarr[0] + "," + intarr[1] + "]";
}
}
@@ -107,4 +107,7 @@ public abstract class inputType {
public abstract void add_history_view(LinearLayout parent, dataType[] data);
public abstract String toString(dataType data);
}
@@ -318,5 +318,9 @@ public class numberType extends inputType {
parent.addView(chart);
}
public String toString(dataType data){
return String.valueOf((int) data.get());
}
}
@@ -305,4 +305,8 @@ public class sliderType extends inputType {
parent.addView(chart);
}
public String toString(dataType data){
return String.valueOf((int) data.get());
}
}
@@ -298,5 +298,9 @@ public class tallyType extends inputType {
parent.addView(chart);
}
public String toString(dataType data){
return String.valueOf((int) data.get());
}
}
@@ -230,5 +230,9 @@ public class textType extends inputType {
parent.addView(chart);
}
public String toString(dataType data){
return String.valueOf(data.get());
}
}
@@ -75,7 +75,7 @@ public class CustomSpinnerView extends LinearLayout {
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
ScrollView sv = new ScrollView(getContext());
sv.setLayoutDirection(ScrollView.SCROLL_AXIS_VERTICAL);
// sv.setLayoutDirection(ScrollView.SCROLL_AXIS_VERTICAL);
LinearLayout ll = new LinearLayout(getContext());
ll.setOrientation(LinearLayout.VERTICAL);
@@ -94,7 +94,7 @@ public class CustomSpinnerView extends LinearLayout {
ll.addView(popup);
popup.setLayoutDirection(0);
// popup.setLayoutDirection(0);
builder.setView(sv);
AlertDialog dialog = builder.create();
@@ -1,6 +1,7 @@
package com.ridgebotics.ridgescout.ui.data;
import static android.view.View.VISIBLE;
import static androidx.navigation.fragment.FragmentKt.findNavController;
import android.os.Bundle;
@@ -14,6 +15,7 @@ import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.ridgebotics.ridgescout.R;
import com.ridgebotics.ridgescout.scoutingData.fields;
import com.ridgebotics.ridgescout.utility.settingsManager;
import com.ridgebotics.ridgescout.databinding.FragmentDataBinding;
import com.ridgebotics.ridgescout.types.frcTeam;
@@ -36,15 +38,26 @@ public class DataFragment extends Fragment {
String evcode = settingsManager.getEVCode();
binding.fieldsButton.setOnClickListener(v -> {
findNavController(this).navigate(R.id.action_navigation_data_to_navigation_data_fields_chooser);
binding.fieldsButton.setEnabled(false);
binding.fieldsButtons.setVisibility(VISIBLE);
});
binding.fieldsMatchesButton.setOnClickListener(v -> {
FieldsFragment.set_filename(fields.matchFieldsFilename);
findNavController(this).navigate(R.id.action_navigation_data_to_navigation_data_fields);
});
binding.fieldsPitsButton.setOnClickListener(v -> {
FieldsFragment.set_filename(fields.pitsFieldsFilename);
findNavController(this).navigate(R.id.action_navigation_data_to_navigation_data_fields);
});
if(evcode.equals("unset")){
binding.noEventError.setVisibility(View.VISIBLE);
binding.noEventError.setVisibility(VISIBLE);
binding.buttons.setVisibility(View.VISIBLE);
binding.buttons.setVisibility(VISIBLE);
binding.teamsButton.setEnabled(false);
binding.fieldsButton.setVisibility(View.VISIBLE);
binding.fieldsButton.setVisibility(VISIBLE);
return root;
@@ -1,38 +0,0 @@
package com.ridgebotics.ridgescout.ui.data;
import static androidx.navigation.fragment.FragmentKt.findNavController;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import com.ridgebotics.ridgescout.R;
import com.ridgebotics.ridgescout.databinding.FragmentDataFieldsChooserBinding;
import com.ridgebotics.ridgescout.scoutingData.fields;
public class FieldsChooserFragment extends Fragment {
FragmentDataFieldsChooserBinding binding;
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
binding = FragmentDataFieldsChooserBinding.inflate(inflater, container, false);
binding.matchScoutingButton.setOnClickListener(v -> {
FieldsFragment.set_filename(fields.matchFieldsFilename);
findNavController(this).navigate(R.id.action_navigation_data_fields_chooser_to_navigation_data_fields);
});
binding.pitScoutingButton.setOnClickListener(v -> {
FieldsFragment.set_filename(fields.pitsFieldsFilename);
findNavController(this).navigate(R.id.action_navigation_data_fields_chooser_to_navigation_data_fields);
});
return binding.getRoot();
}
}
@@ -21,6 +21,7 @@ import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;
import androidx.navigation.Navigation;
import com.ridgebotics.ridgescout.MainActivity;
import com.ridgebotics.ridgescout.R;
import com.ridgebotics.ridgescout.databinding.FragmentDataFieldsBinding;
import com.ridgebotics.ridgescout.scoutingData.fields;
@@ -66,6 +67,25 @@ public class FieldsFragment extends Fragment {
load_field_menu();
((MainActivity) getActivity()).setOnBackPressed(() -> {
if(binding.saveButton.getVisibility() == View.GONE) return true;
AlertDialog.Builder alert = new AlertDialog.Builder(getContext());
alert.setTitle("Warning!");
alert.setMessage("You have not saved your progress!");
alert.setPositiveButton("Return", null);
alert.setNeutralButton("Quit without saving", (dialogInterface, i) -> {
binding.saveButton.setVisibility(View.GONE);
if(getActivity() != null)
getActivity().onBackPressed();
});
alert.setCancelable(true);
alert.create().show();
return false;
});
return binding.getRoot();
}
@@ -223,7 +243,7 @@ public class FieldsFragment extends Fragment {
if(fields.save(filename, newValues))
AlertManager.toast("Saved");
Navigation.findNavController((Activity) getContext(), R.id.nav_host_fragment_activity_main).navigate(R.id.action_navigation_data_fields_to_navigation_data_fields_chooser);
Navigation.findNavController((Activity) getContext(), R.id.nav_host_fragment_activity_main).navigate(R.id.action_navigation_data_fields_to_navigation_data);
});
alert.setNegativeButton("Cancel", null);
alert.setCancelable(true);
@@ -270,7 +270,7 @@ public class EventFragment extends Fragment {
teamNums.add(String.valueOf(event.teams.get(i).teamNumber));
ScrollView sv = new ScrollView(getContext());
sv.setLayoutDirection(ScrollView.SCROLL_AXIS_VERTICAL);
// sv.setLayoutDirection(ScrollView.SCROLL_AXIS_VERTICAL);
LinearLayout ll = new LinearLayout(getContext());
ll.setOrientation(LinearLayout.VERTICAL);
@@ -12,6 +12,7 @@ import com.ridgebotics.ridgescout.scoutingData.ScoutingDataWriter;
import com.ridgebotics.ridgescout.types.data.dataType;
import com.ridgebotics.ridgescout.types.frcMatch;
import com.ridgebotics.ridgescout.types.frcTeam;
import com.ridgebotics.ridgescout.types.input.inputType;
import com.ridgebotics.ridgescout.utility.DataManager;
import com.ridgebotics.ridgescout.utility.fileEditor;
@@ -59,11 +60,14 @@ public class CSVExport {
data += ("null,".repeat(match_latest_values.length));
}else{
try {
String tempData = "";
ScoutingDataWriter.ParsedScoutingDataResult psdr = ScoutingDataWriter.load(filename, DataManager.match_values, DataManager.match_transferValues);
dataType[] types = psdr.data.array;
dataType[] matchData = psdr.data.array;
inputType[] types = psdr.data.values[psdr.data.values.length-1];
for (int i = 0; i < types.length; i++) {
data += (safeCSV(types[i].get().toString()) + ",");
tempData += (safeCSV(types[i].toString(matchData[i])) + ",");
}
data += tempData;
} catch (Exception e){
e.printStackTrace();
data += ("null,".repeat(pit_latest_values.length));
@@ -108,11 +112,14 @@ public class CSVExport {
data += ("null,".repeat(pit_latest_values.length));
}else{
try {
String tempData = "";
ScoutingDataWriter.ParsedScoutingDataResult psdr = ScoutingDataWriter.load(filename, DataManager.pit_values, DataManager.pit_transferValues);
dataType[] types = psdr.data.array;
dataType[] teamData = psdr.data.array;
inputType[] types = psdr.data.values[psdr.data.values.length-1];
for (int i = 0; i < types.length; i++) {
data += (safeCSV(types[i].get().toString()) + ",");
tempData += (safeCSV(types[i].toString(teamData[i])) + ",");
}
data += tempData;
} catch (Exception e){
e.printStackTrace();
data += ("null,".repeat(pit_latest_values.length));
@@ -57,18 +57,7 @@ public class TransferFragment extends Fragment {
});
binding.TBAButton.setOnClickListener(v -> {
binding.noEventError.setVisibility(View.GONE);
AlertDialog.Builder alert = new AlertDialog.Builder(getContext());
alert.setTitle("Warning");
alert.setMessage("This action requires internet.");
alert.setCancelable(true);
alert.setPositiveButton("Ok", (dialog, which) -> {
findNavController(this).navigate(R.id.action_navigation_transfer_to_navigation_tba);
});
alert.setNegativeButton("Cancel", null);
alert.create().show();
findNavController(this).navigate(R.id.action_navigation_transfer_to_navigation_tba);
});
Binary file not shown.

Before

Width:  |  Height:  |  Size: 162 KiB

+30
View File
@@ -49,5 +49,35 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/fieldsButton" />
<LinearLayout
android:id="@+id/fieldsButtons"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="1dp"
android:gravity="center"
android:orientation="horizontal"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/fieldsButton"
tools:visibility="visible">
<Button
android:id="@+id/fieldsPitsButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="Pits"
android:textSize="34sp" />
<Button
android:id="@+id/fieldsMatchesButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:text="Matches"
android:textSize="34sp" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
@@ -8,6 +8,7 @@
android:id="@+id/minus_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="@style/TextAppearance.MaterialComponents.Headline6"
android:text="-" />
<TextView
@@ -22,6 +23,7 @@
android:id="@+id/plus_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="@style/TextAppearance.MaterialComponents.Headline6"
android:text="+" />
</LinearLayout>
@@ -2,4 +2,5 @@
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
<monochrome android:drawable="@drawable/ic_launcher_foreground" />
</adaptive-icon>
@@ -2,4 +2,5 @@
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
<monochrome android:drawable="@drawable/ic_robologo" />
</adaptive-icon>
@@ -15,21 +15,21 @@
app:destination="@id/navigation_match_scouting"
app:enterAnim="@anim/enter_anim"
app:exitAnim="@anim/exit_anim"
app:popEnterAnim="@anim/enter_anim"
app:popEnterAnim="@anim/pop_enter_anim"
app:popExitAnim="@anim/pop_exit_anim"/>
<action
android:id="@+id/action_navigation_scouting_to_navigation_team_selector"
app:destination="@id/navigation_team_selector"
app:enterAnim="@anim/enter_anim"
app:exitAnim="@anim/exit_anim"
app:popEnterAnim="@anim/enter_anim"
app:popEnterAnim="@anim/pop_enter_anim"
app:popExitAnim="@anim/pop_exit_anim" />
<action
android:id="@+id/action_navigation_scouting_to_navigation_scouting_event"
app:destination="@id/navigation_scouting_status"
app:enterAnim="@anim/enter_anim"
app:exitAnim="@anim/exit_anim"
app:popEnterAnim="@anim/enter_anim"
app:popEnterAnim="@anim/pop_enter_anim"
app:popExitAnim="@anim/pop_exit_anim"/>
</fragment>
@@ -48,14 +48,14 @@
app:destination="@id/navigation_pit_scouting"
app:enterAnim="@anim/enter_anim"
app:exitAnim="@anim/exit_anim"
app:popEnterAnim="@anim/enter_anim"
app:popEnterAnim="@anim/pop_enter_anim"
app:popExitAnim="@anim/pop_exit_anim" />
<action
android:id="@+id/action_navigation_team_selector_to_navigation_data_teams"
app:destination="@id/navigation_data_teams"
app:enterAnim="@anim/enter_anim"
app:exitAnim="@anim/exit_anim"
app:popEnterAnim="@anim/enter_anim"
app:popEnterAnim="@anim/pop_enter_anim"
app:popExitAnim="@anim/pop_exit_anim" />
</fragment>
@@ -79,14 +79,14 @@
app:destination="@id/navigation_team_selector"
app:enterAnim="@anim/enter_anim"
app:exitAnim="@anim/exit_anim"
app:popEnterAnim="@anim/enter_anim"
app:popEnterAnim="@anim/pop_enter_anim"
app:popExitAnim="@anim/pop_exit_anim" />
<action
android:id="@+id/action_navigation_data_to_navigation_data_fields_chooser"
app:destination="@id/navigation_data_fields_chooser"
android:id="@+id/action_navigation_data_to_navigation_data_fields"
app:destination="@id/navigation_data_fields"
app:enterAnim="@anim/enter_anim"
app:exitAnim="@anim/exit_anim"
app:popEnterAnim="@anim/enter_anim"
app:popEnterAnim="@anim/pop_enter_anim"
app:popExitAnim="@anim/pop_exit_anim" />
</fragment>
@@ -102,29 +102,16 @@
tools:layout="@layout/fragment_data_teams">
</fragment>
<fragment
android:id="@+id/navigation_data_fields_chooser"
android:name="com.ridgebotics.ridgescout.ui.data.FieldsChooserFragment"
tools:layout="@layout/fragment_data_fields_chooser">
<action
android:id="@+id/action_navigation_data_fields_chooser_to_navigation_data_fields"
app:destination="@id/navigation_data_fields"
app:enterAnim="@anim/enter_anim"
app:exitAnim="@anim/exit_anim"
app:popEnterAnim="@anim/enter_anim"
app:popExitAnim="@anim/pop_exit_anim" />
</fragment>
<fragment
android:id="@+id/navigation_data_fields"
android:name="com.ridgebotics.ridgescout.ui.data.FieldsFragment"
tools:layout="@layout/fragment_data_fields">
<action
android:id="@+id/action_navigation_data_fields_to_navigation_data_fields_chooser"
app:destination="@id/navigation_data_fields_chooser"
android:id="@+id/action_navigation_data_fields_to_navigation_data"
app:destination="@id/navigation_data"
app:enterAnim="@anim/enter_anim"
app:exitAnim="@anim/exit_anim"
app:popEnterAnim="@anim/enter_anim"
app:popEnterAnim="@anim/pop_enter_anim"
app:popExitAnim="@anim/pop_exit_anim" />
</fragment>
@@ -142,21 +129,21 @@
app:destination="@id/navigation_tba"
app:enterAnim="@anim/enter_anim"
app:exitAnim="@anim/exit_anim"
app:popEnterAnim="@anim/enter_anim"
app:popEnterAnim="@anim/pop_enter_anim"
app:popExitAnim="@anim/pop_exit_anim" />
<action
android:id="@+id/action_navigation_transfer_to_navigation_file_selector"
app:destination="@id/navigation_file_selector"
app:enterAnim="@anim/enter_anim"
app:exitAnim="@anim/exit_anim"
app:popEnterAnim="@anim/enter_anim"
app:popEnterAnim="@anim/pop_enter_anim"
app:popExitAnim="@anim/pop_exit_anim" />
<action
android:id="@+id/action_navigation_transfer_to_navigation_transfer_selector"
app:destination="@id/navigation_transfer_selector"
app:enterAnim="@anim/enter_anim"
app:exitAnim="@anim/exit_anim"
app:popEnterAnim="@anim/enter_anim"
app:popEnterAnim="@anim/pop_enter_anim"
app:popExitAnim="@anim/pop_exit_anim" />
</fragment>
@@ -169,7 +156,7 @@
app:destination="@id/navigation_transfer_selector"
app:enterAnim="@anim/enter_anim"
app:exitAnim="@anim/exit_anim"
app:popEnterAnim="@anim/enter_anim"
app:popEnterAnim="@anim/pop_enter_anim"
app:popExitAnim="@anim/pop_exit_anim" />
</fragment>
@@ -182,28 +169,28 @@
app:destination="@id/navigation_code_generator"
app:enterAnim="@anim/enter_anim"
app:exitAnim="@anim/exit_anim"
app:popEnterAnim="@anim/enter_anim"
app:popEnterAnim="@anim/pop_enter_anim"
app:popExitAnim="@anim/pop_exit_anim" />
<action
android:id="@+id/action_navigation_transfer_selector_to_navigation_bluetooth_sender"
app:destination="@id/navigation_bluetooth_sender"
app:enterAnim="@anim/enter_anim"
app:exitAnim="@anim/exit_anim"
app:popEnterAnim="@anim/enter_anim"
app:popEnterAnim="@anim/pop_enter_anim"
app:popExitAnim="@anim/pop_exit_anim" />
<action
android:id="@+id/action_navigation_transfer_selector_to_navigation_code_scanner"
app:destination="@id/navigation_code_scanner"
app:enterAnim="@anim/enter_anim"
app:exitAnim="@anim/exit_anim"
app:popEnterAnim="@anim/enter_anim"
app:popEnterAnim="@anim/pop_enter_anim"
app:popExitAnim="@anim/pop_exit_anim" />
<action
android:id="@+id/action_navigation_transfer_selector_to_navigation_bluetooth_receiver"
app:destination="@id/navigation_bluetooth_receiver"
app:enterAnim="@anim/enter_anim"
app:exitAnim="@anim/exit_anim"
app:popEnterAnim="@anim/enter_anim"
app:popEnterAnim="@anim/pop_enter_anim"
app:popExitAnim="@anim/pop_exit_anim" />
</fragment>
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="main_200">#FFBBFC86</color>
<color name="main_200">#FFA0E044</color>
<color name="main_500">#FF62EE00</color>
<color name="main_700">#FF37B300</color>
<color name="teal_200">#FF03DAC5</color>