Match Scouting Indicator Overhaul

Redo of the UI for the scouting indicator and overall enhancement of the UI
This commit is contained in:
Daniel Carta
2025-06-17 11:15:36 -06:00
parent 41460fcd7e
commit 5279c085e1
7 changed files with 244 additions and 93 deletions
@@ -49,8 +49,9 @@ public class MatchScoutingFragment extends Fragment {
alliance_position = SettingsManager.getAllyPos();
username = SettingsManager.getUsername();
binding.username.setText(username);
binding.alliancePosText.setText(alliance_position);
binding.bindicator.setUsername(username);
binding.bindicator.setAlliancePos(alliance_position);
binding.bindicator.bringToFront();
binding.matchTeamCard.setVisibility(View.GONE);
clear_fields();
@@ -66,7 +67,7 @@ public class MatchScoutingFragment extends Fragment {
binding.nextButton.setOnClickListener(v -> {
binding.bindicator.match_indicator_next_button.setOnClickListener(v -> {
if(edited) save();
SettingsManager.setMatchNum(cur_match_num+1);
cur_match_num += 1;
@@ -75,21 +76,21 @@ public class MatchScoutingFragment extends Fragment {
});
if(SettingsManager.getEnableQuickAlliancePosChange())
binding.fileIndicator.setOnClickListener(v -> {
binding.bindicator.setOnClickListener(v -> {
// if(e.getAction() != MotionEvent.ACTION_MOVE) return true;
// System.out.println(e.getAxisValue(0));
if(edited) save();
alliance_position = incrementMatchPos(alliance_position);
SettingsManager.setAllyPos(alliance_position);
binding.alliancePosText.setText(alliance_position);
binding.bindicator.setAlliancePos(alliance_position);
update_match_num();
update_scouting_data();
// return true;
});
binding.backButton.setOnClickListener(v -> {
binding.bindicator.match_indicator_back_button.setOnClickListener(v -> {
if(edited) save();
SettingsManager.setMatchNum(cur_match_num-1);
cur_match_num -= 1;
@@ -159,7 +160,7 @@ public class MatchScoutingFragment extends Fragment {
}
public void set_indicator_color(int color){
binding.fileIndicator.setBackgroundColor(color);
binding.bindicator.setColor(color);
}
public void update_asm(){
@@ -239,18 +240,18 @@ public class MatchScoutingFragment extends Fragment {
edited = false;
binding.matchnum.setText(String.valueOf(cur_match_num+1));
binding.bindicator.setMatchNum(String.valueOf(cur_match_num+1));
if(cur_match_num <= 0){
binding.backButton.setVisibility(View.GONE);
binding.bindicator.match_indicator_back_button.setVisibility(View.GONE);
}else{
binding.backButton.setVisibility(View.VISIBLE);
binding.bindicator.match_indicator_back_button.setVisibility(View.VISIBLE);
}
if(cur_match_num >= event.matches.size()-1){
binding.nextButton.setVisibility(View.GONE);
binding.bindicator.match_indicator_next_button.setVisibility(View.GONE);
}else{
binding.nextButton.setVisibility(View.VISIBLE);
binding.bindicator.match_indicator_next_button.setVisibility(View.VISIBLE);
}
}
@@ -272,7 +273,7 @@ public class MatchScoutingFragment extends Fragment {
break;
}
binding.barTeamNum.setText(String.valueOf(team_num));
binding.bindicator.setTeamNum(String.valueOf(team_num));
frcTeam team = null;
for(int i=0; i < event.teams.size(); i++){
@@ -385,7 +386,7 @@ public class MatchScoutingFragment extends Fragment {
private void enableRescoutButton(){
set_indicator_color(rescout ? rescout_color : saved_color);
binding.fileIndicator.setOnLongClickListener(v -> {
binding.bindicator.setOnLongClickListener(v -> {
rescout = !rescout;
if(rescout){
set_indicator_color(rescout_color);
@@ -402,6 +403,6 @@ public class MatchScoutingFragment extends Fragment {
}
private void disableRescoutButton(){
binding.fileIndicator.setOnLongClickListener(null);
binding.bindicator.setOnLongClickListener(null);
}
}
@@ -0,0 +1,91 @@
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.Button;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.constraintlayout.widget.ConstraintLayout;
import com.ridgebotics.ridgescout.R;
import com.ridgebotics.ridgescout.types.frcTeam;
import org.w3c.dom.Text;
// A view for displaying information about a team.
public class MatchScoutingIndicator extends RelativeLayout {
public MatchScoutingIndicator(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init(context);
}
public MatchScoutingIndicator(Context context) {
super(context);
init(context);
}
public TextView match_indicator_alliance_pos_text;
public TextView match_indicator_bar_team_num;
public TextView match_indicator_matchnum;
public TextView match_indicator_username;
public ImageButton match_indicator_back_button;
public ImageButton match_indicator_next_button;
private ConstraintLayout box;
private View coloredBackground;
public void init(Context context) {
LayoutInflater.from(context).inflate(R.layout.view_match_scouting_indicator, this, true);
match_indicator_back_button = findViewById(R.id.match_indicator_back_button);
match_indicator_next_button = findViewById(R.id.match_indicator_next_button);
match_indicator_alliance_pos_text = findViewById(R.id.match_indicator_alliance_pos_text);
match_indicator_username = findViewById(R.id.match_indicator_username);
match_indicator_matchnum = findViewById(R.id.match_indicator_matchnum);
match_indicator_bar_team_num = findViewById(R.id.match_indicator_bar_team_num);
box = findViewById(R.id.file_indicator_box);
coloredBackground = findViewById(R.id.match_indicator_background);
}
public void setUsername(String username){
match_indicator_username.setText(username);
}
public void setAlliancePos(String alliancePos){
match_indicator_alliance_pos_text.setText(alliancePos);
}
public void setMatchNum(String matchNum){
match_indicator_matchnum.setText(matchNum);
}
public void setTeamNum(String teamNum){
match_indicator_bar_team_num.setText(teamNum);
}
public void setColor(int color){
Drawable drawable = box.getBackground();
drawable.mutate();
drawable.setColorFilter(color, PorterDuff.Mode.SRC_ATOP);
float[] hsv = new float[3];
Color.colorToHSV(color,hsv);
coloredBackground.setBackgroundColor(
Color.HSVToColor(220, new float[]{
hsv[0],
Math.min(hsv[1], 0.75f),
Math.min(hsv[2], 0.5f)
})
);
}
}