diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 79ecff4..ed521e7 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -57,11 +57,13 @@ dependencies { implementation(libs.constraintlayout) implementation(libs.lifecycle.livedata.ktx) implementation(libs.lifecycle.viewmodel.ktx) - implementation("androidx.navigation:navigation-fragment:2.8.9") + implementation(libs.navigation.fragment.v289) implementation(libs.navigation.ui) implementation(libs.preference) -// implementation(libs.support.annotations) +// implementation(libs.asynclayoutinflator) + testImplementation(libs.junit) + androidTestImplementation(libs.ext.junit) androidTestImplementation(libs.espresso.core) 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 a993a2c..51fde91 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 @@ -19,9 +19,12 @@ import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; +import androidx.recyclerview.widget.RecyclerView; +import com.ridgebotics.ridgescout.R; import com.ridgebotics.ridgescout.types.frcTeam; import com.ridgebotics.ridgescout.ui.views.FieldBorderedRow; +import com.ridgebotics.ridgescout.ui.views.RecyclerList; import com.ridgebotics.ridgescout.ui.views.TeamListOption; import com.ridgebotics.ridgescout.utility.DataManager; import com.ridgebotics.ridgescout.utility.SettingsManager; @@ -44,7 +47,7 @@ public class DataFragment extends Fragment { @Nullable Bundle savedInstanceState) { binding = FragmentDataBinding.inflate(inflater, container, false); - binding.table.setStretchAllColumns(true); +// binding.table.setStretchAllColumns(true); View root = binding.getRoot(); if(evcode == null || evcode.equals("unset") || event == null){ @@ -86,35 +89,21 @@ public class DataFragment extends Fragment { public void load_teams(){ - int[] teamNums = new int[event.teams.size()]; + RecyclerList list = new RecyclerList<>(getContext()); + binding.table.addView(list); +// list.setView - for(int i = 0 ; i < event.teams.size(); i++){ - teamNums[i] = event.teams.get(i).teamNumber; - } - - Arrays.sort(teamNums); - - 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()); - binding.table.addView(teamRow); - teamRow.fromTeam(team); - - frcTeam finalTeam = team; - teamRow.setOnClickListener(v -> { - TeamsFragment.setTeam(finalTeam); + list + .setup(R.layout.view_team_option, TeamListOption::new) + .withLinearLayout() + .withDivider() + .withItemClickListener((team, position) -> { + TeamsFragment.setTeam(team); ((DataParentFragment) getParentFragment()).moveToFragment(new TeamsFragment()); -// findNavController(this).navigate(R.id.action_navigation_data_parent_to_navigation_data_teams); }); - } + + list.setItems(event.getTeamsSorted()); + } public void load_fields(){ DataManager.reload_match_fields(); 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 555c7dc..d2551e2 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 @@ -51,89 +51,89 @@ public class PitSelectorFragment extends Fragment { return binding.getRoot(); } - load_teams(); +// load_teams(); return binding.getRoot(); } - public void load_teams(){ -// binding.pitFileIndicator.setVisibility(View.GONE); -// binding.pitTeamName.setVisibility(View.GONE); -// binding.pitTeamDescription.setVisibility(View.GONE); +// public void load_teams(){ +//// binding.pitFileIndicator.setVisibility(View.GONE); +//// binding.pitTeamName.setVisibility(View.GONE); +//// binding.pitTeamDescription.setVisibility(View.GONE); +//// +//// clear_fields(); // -// clear_fields(); - - - 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; - -// TableRow tr = new TableRow(getContext()); -// TableLayout.LayoutParams rowParams = new TableLayout.LayoutParams( -// FrameLayout.LayoutParams.WRAP_CONTENT, -// FrameLayout.LayoutParams.WRAP_CONTENT -// ); -// rowParams.setMargins(20,20,20,20); -// tr.setLayoutParams(rowParams); -// tr.setPadding(20,20,20,20); -// table.addView(tr); - - TeamListOption teamRow = new TeamListOption(getContext()); - table.addView(teamRow); - teamRow.fromTeam(team); - - - String filename = evcode + "-" + team.teamNumber + ".pitscoutdata"; - - if (FileEditor.fileExist(filename)) { - final boolean[] rescout = {DataManager.rescout_list.contains(filename)}; - - teamRow.setColor(DataManager.rescout_list.contains(filename) ? color_rescout : color_found); - - teamRow.setOnLongClickListener(v -> { - rescout[0] = !rescout[0]; - if(rescout[0]){ - DataManager.rescout_list.add(filename); - teamRow.setColor(color_rescout); - DataManager.save_rescout_list(); - }else{ - DataManager.rescout_list.remove(filename); - teamRow.setColor(color_found); - DataManager.save_rescout_list(); - } - - - return true; - }); - } else { - teamRow.setColor(color_not_found); - teamRow.setOnLongClickListener(v -> true); - } - - - frcTeam finalTeam = team; - teamRow.setOnClickListener(v -> onSelect.onSelect(this, finalTeam)); - } - } +// +// 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; +// +//// TableRow tr = new TableRow(getContext()); +//// TableLayout.LayoutParams rowParams = new TableLayout.LayoutParams( +//// FrameLayout.LayoutParams.WRAP_CONTENT, +//// FrameLayout.LayoutParams.WRAP_CONTENT +//// ); +//// rowParams.setMargins(20,20,20,20); +//// tr.setLayoutParams(rowParams); +//// tr.setPadding(20,20,20,20); +//// table.addView(tr); +// +// TeamListOption teamRow = new TeamListOption(getContext()); +// table.addView(teamRow); +// teamRow.fromTeam(team); +// +// +// String filename = evcode + "-" + team.teamNumber + ".pitscoutdata"; +// +// if (FileEditor.fileExist(filename)) { +// final boolean[] rescout = {DataManager.rescout_list.contains(filename)}; +// +// teamRow.setColor(DataManager.rescout_list.contains(filename) ? color_rescout : color_found); +// +// teamRow.setOnLongClickListener(v -> { +// rescout[0] = !rescout[0]; +// if(rescout[0]){ +// DataManager.rescout_list.add(filename); +// teamRow.setColor(color_rescout); +// DataManager.save_rescout_list(); +// }else{ +// DataManager.rescout_list.remove(filename); +// teamRow.setColor(color_found); +// DataManager.save_rescout_list(); +// } +// +// +// return true; +// }); +// } else { +// teamRow.setColor(color_not_found); +// teamRow.setOnLongClickListener(v -> true); +// } +// +// +// frcTeam finalTeam = team; +// teamRow.setOnClickListener(v -> onSelect.onSelect(this, finalTeam)); +// } +// } } diff --git a/app/src/main/java/com/ridgebotics/ridgescout/ui/views/TeamListOption.java b/app/src/main/java/com/ridgebotics/ridgescout/ui/views/TeamListOption.java index 0d612c8..54e75bd 100644 --- a/app/src/main/java/com/ridgebotics/ridgescout/ui/views/TeamListOption.java +++ b/app/src/main/java/com/ridgebotics/ridgescout/ui/views/TeamListOption.java @@ -19,34 +19,37 @@ 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); - init(context); - } +public class TeamListOption extends RecyclerHolder { - public TeamListOption(Context context) { - super(context); - init(context); - } +// public TeamListOption(Context context, @Nullable AttributeSet attrs) { +// super(context, attrs); +// init(context); +// } +// +// public TeamListOption(Context context) { +// super(context); +// init(context); +// } +// private TextView teamNumber; private TextView teamName; private ImageView teamLogo; private ConstraintLayout box; private View coloredBackground; +// + public TeamListOption(View view) { + super(view); +// LayoutInflater.from(context).inflate(R.layout.view_team_option, this, true); - public void init(Context context) { - LayoutInflater.from(context).inflate(R.layout.view_team_option, this, true); - - teamNumber = findViewById(R.id.field_option_type); - teamName = findViewById(R.id.field_option_name); - teamLogo = findViewById(R.id.team_option_logo); + teamNumber = view.findViewById(R.id.field_option_type); + teamName = view.findViewById(R.id.field_option_name); + teamLogo = view.findViewById(R.id.team_option_logo); - box = findViewById(R.id.team_option_box); - coloredBackground = findViewById(R.id.team_option_background); + box = view.findViewById(R.id.team_option_box); + coloredBackground = view.findViewById(R.id.team_option_background); } public void setTeamNumber(int num){ @@ -59,6 +62,7 @@ public class TeamListOption extends LinearLayout { public void setTeamLogo(Bitmap bitmap){ teamLogo.setImageBitmap(bitmap); + showLogo(); } public void hideLogo(){ @@ -68,7 +72,8 @@ public class TeamListOption extends LinearLayout { teamLogo.setVisibility(View.VISIBLE); } - public void fromTeam(frcTeam team){ + @Override + public void bind(frcTeam team, int position){ setTeamNumber(team.teamNumber); setTeamName(team.teamName); diff --git a/app/src/main/res/layout/fragment_data.xml b/app/src/main/res/layout/fragment_data.xml index 9a2793b..01e217a 100644 --- a/app/src/main/res/layout/fragment_data.xml +++ b/app/src/main/res/layout/fragment_data.xml @@ -17,36 +17,23 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> - - - - - - - - - - + + \ No newline at end of file diff --git a/app/src/main/res/layout/view_team_option.xml b/app/src/main/res/layout/view_team_option.xml index bd0005c..5a5ee40 100644 --- a/app/src/main/res/layout/view_team_option.xml +++ b/app/src/main/res/layout/view_team_option.xml @@ -30,11 +30,13 @@ android:layout_height="54dp" android:layout_margin="2dp" android:scaleType="fitXY" + android:visibility="gone" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintDimensionRatio="1:1" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" - tools:srcCompat="@drawable/ic_robologo" /> + tools:srcCompat="@drawable/ic_robologo" + tools:visibility="visible" />