mirror of
https://github.com/Team4388/RidgeScout.git
synced 2026-06-09 00:37:59 -06:00
Solve random things
This commit is contained in:
@@ -28,9 +28,24 @@
|
|||||||
- Statbotics intgration
|
- Statbotics intgration
|
||||||
- Scout error estimation using OPR-like calculation
|
- Scout error estimation using OPR-like calculation
|
||||||
- - Would most likely require Statbotics
|
- - Would most likely require Statbotics
|
||||||
|
https://www.thebluealliance.com/avatars
|
||||||
### Screenshots
|
### Screenshots
|
||||||
|Match scouting interface|Field editor|Teams data viewer|
|
|Match scouting interface|Field editor|Teams data viewer|
|
||||||
|-|-|-|
|
|-|-|-|
|
||||||
||||
|
||||
|
||||||
|
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Things:
|
||||||
|
- Added verbosity on could not find team number error
|
||||||
|
- Tally counter now has more visible font (@style/TextAppearance.MaterialComponents.Headline6)
|
||||||
|
- Match scouting title bar's background now fills its container (There was a small gap before)
|
||||||
|
- Added border around match title bar buttons
|
||||||
|
- Changed the rescout color to be a less obnoxious blue
|
||||||
|
- Removed blank space above pit scouting team selector
|
||||||
|
- Added new scouting indicator for pit scouting
|
||||||
|
- TBA now sometimes does not let you download all of the team images, go to https://www.thebluealliance.com/avatars in a web browser to try to fix this
|
||||||
|
- Moved dropdown title text box slightly farther up
|
||||||
|
- Added downwards pointing triangle to dropdown
|
||||||
|
- Removed slight gap in icon of the team option
|
||||||
|
-->
|
||||||
@@ -20,6 +20,7 @@ import androidx.annotation.Nullable;
|
|||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
|
|
||||||
import com.google.android.material.divider.MaterialDivider;
|
import com.google.android.material.divider.MaterialDivider;
|
||||||
|
import com.ridgebotics.ridgescout.ui.views.PitScoutingIndicator;
|
||||||
import com.ridgebotics.ridgescout.ui.views.ToggleTitleView;
|
import com.ridgebotics.ridgescout.ui.views.ToggleTitleView;
|
||||||
import com.ridgebotics.ridgescout.utility.AlertManager;
|
import com.ridgebotics.ridgescout.utility.AlertManager;
|
||||||
import com.ridgebotics.ridgescout.utility.SettingsManager;
|
import com.ridgebotics.ridgescout.utility.SettingsManager;
|
||||||
@@ -76,7 +77,6 @@ public class PitScoutingFragment extends Fragment {
|
|||||||
|
|
||||||
String fileUsernames = "";
|
String fileUsernames = "";
|
||||||
ToggleTitleView[] titles;
|
ToggleTitleView[] titles;
|
||||||
|
|
||||||
AutoSaveManager asm = new AutoSaveManager(this::save, AUTO_SAVE_DELAY);
|
AutoSaveManager asm = new AutoSaveManager(this::save, AUTO_SAVE_DELAY);
|
||||||
|
|
||||||
ArrayList<RawDataType> rawDataTypes;
|
ArrayList<RawDataType> rawDataTypes;
|
||||||
@@ -99,7 +99,7 @@ public class PitScoutingFragment extends Fragment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void set_indicator_color(int color){
|
public void set_indicator_color(int color){
|
||||||
binding.pitFileIndicator.setBackgroundColor(color);
|
binding.pitIndicator.setColor(color);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void update_asm(){
|
public void update_asm(){
|
||||||
@@ -114,10 +114,9 @@ public class PitScoutingFragment extends Fragment {
|
|||||||
public void loadTeam(){
|
public void loadTeam(){
|
||||||
// clear_fields();
|
// clear_fields();
|
||||||
|
|
||||||
binding.pitFileIndicator.setVisibility(View.VISIBLE);
|
|
||||||
binding.pitsTeamCard.setVisibility(View.VISIBLE);
|
binding.pitsTeamCard.setVisibility(View.VISIBLE);
|
||||||
binding.pitBarTeamNum.setText(String.valueOf(team.teamNumber));
|
binding.pitIndicator.setTeamNum(team.teamNumber);
|
||||||
binding.pitUsername.setText(SettingsManager.getUsername());
|
binding.pitIndicator.setUsername(SettingsManager.getUsername());
|
||||||
binding.pitsTeamCard.fromTeam(team);
|
binding.pitsTeamCard.fromTeam(team);
|
||||||
|
|
||||||
filename = evcode + "-" + team.teamNumber + ".pitscoutdata";
|
filename = evcode + "-" + team.teamNumber + ".pitscoutdata";
|
||||||
@@ -146,7 +145,7 @@ public class PitScoutingFragment extends Fragment {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
binding.pitFileIndicator.bringToFront();
|
binding.pitIndicator.bringToFront();
|
||||||
|
|
||||||
asm.start();
|
asm.start();
|
||||||
|
|
||||||
@@ -154,7 +153,7 @@ public class PitScoutingFragment extends Fragment {
|
|||||||
|
|
||||||
private void enableRescoutButton(){
|
private void enableRescoutButton(){
|
||||||
set_indicator_color(rescout ? rescout_color : saved_color);
|
set_indicator_color(rescout ? rescout_color : saved_color);
|
||||||
binding.pitFileIndicator.setOnLongClickListener(v -> {
|
binding.pitIndicator.setOnLongClickListener(v -> {
|
||||||
rescout = !rescout;
|
rescout = !rescout;
|
||||||
if(rescout){
|
if(rescout){
|
||||||
set_indicator_color(rescout_color);
|
set_indicator_color(rescout_color);
|
||||||
@@ -171,7 +170,7 @@ public class PitScoutingFragment extends Fragment {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void disableRescoutButton(){
|
private void disableRescoutButton(){
|
||||||
binding.pitFileIndicator.setOnLongClickListener(null);
|
binding.pitIndicator.setOnLongClickListener(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -128,10 +128,11 @@ public class ScoutingFragment extends Fragment {
|
|||||||
|
|
||||||
int matchNum = SettingsManager.getMatchNum();
|
int matchNum = SettingsManager.getMatchNum();
|
||||||
int nextMatch = -1;
|
int nextMatch = -1;
|
||||||
|
int teamNum = SettingsManager.getTeamNum();
|
||||||
try {
|
try {
|
||||||
nextMatch = event.getNextTeamMatch(SettingsManager.getTeamNum(), matchNum).matchIndex;
|
nextMatch = event.getNextTeamMatch(teamNum, matchNum).matchIndex;
|
||||||
} catch (Exception e){
|
} catch (Exception e){
|
||||||
AlertManager.error(e);
|
AlertManager.error("Sorry, in event ("+evcode+"), your team number ("+teamNum+") wasn't found!", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
binding.textNextMatch.setText("Our next match: Match " + nextMatch);
|
binding.textNextMatch.setText("Our next match: Match " + nextMatch);
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ import java.util.List;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
// This is now deprecated
|
// This is now deprecated. use HTTPSync
|
||||||
// Class to synchronise data over FTP.
|
// Class to synchronise data over FTP.
|
||||||
public class FTPSync extends Thread {
|
public class FTPSync extends Thread {
|
||||||
public static final String remoteBasePath = "/RidgeScout/";
|
public static final String remoteBasePath = "/RidgeScout/";
|
||||||
|
|||||||
@@ -30,8 +30,7 @@ import java.util.Map;
|
|||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.concurrent.atomic.AtomicBoolean;
|
import java.util.concurrent.atomic.AtomicBoolean;
|
||||||
|
|
||||||
// This is now deprsicated
|
// Class to synchronise data over HTTP.
|
||||||
// Class to syncronise data over FTP.
|
|
||||||
public class HttpSync extends Thread {
|
public class HttpSync extends Thread {
|
||||||
public static final String timestampsFilename = "timestamps";
|
public static final String timestampsFilename = "timestamps";
|
||||||
|
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ public class CustomSpinnerView extends LinearLayout {
|
|||||||
CustomSpinnerPopup popup = new CustomSpinnerPopup(getContext()).init(options, option -> {
|
CustomSpinnerPopup popup = new CustomSpinnerPopup(getContext()).init(options, option -> {
|
||||||
// dialog.();
|
// dialog.();
|
||||||
if(!isEnabled()) return;
|
if(!isEnabled()) return;
|
||||||
item.setText(option);
|
item.setText("▼ " + option);
|
||||||
index = options.indexOf(option);
|
index = options.indexOf(option);
|
||||||
if(onClickListener != null) {
|
if(onClickListener != null) {
|
||||||
onClickListener.onClick(option, options.indexOf(option));
|
onClickListener.onClick(option, options.indexOf(option));
|
||||||
@@ -105,7 +105,7 @@ public class CustomSpinnerView extends LinearLayout {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setOption(String option) {
|
public void setOption(String option) {
|
||||||
item.setText(option);
|
item.setText("▼ " + option);
|
||||||
index = options.indexOf(option);
|
index = options.indexOf(option);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.ridgebotics.ridgescout.ui.views;
|
package com.ridgebotics.ridgescout.ui.views;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.content.res.Configuration;
|
||||||
import android.graphics.Bitmap;
|
import android.graphics.Bitmap;
|
||||||
import android.graphics.Color;
|
import android.graphics.Color;
|
||||||
import android.graphics.PorterDuff;
|
import android.graphics.PorterDuff;
|
||||||
@@ -54,6 +55,20 @@ public class MatchScoutingIndicator extends RelativeLayout {
|
|||||||
match_indicator_bar_team_num = findViewById(R.id.match_indicator_bar_team_num);
|
match_indicator_bar_team_num = findViewById(R.id.match_indicator_bar_team_num);
|
||||||
box = findViewById(R.id.file_indicator_box);
|
box = findViewById(R.id.file_indicator_box);
|
||||||
coloredBackground = findViewById(R.id.match_indicator_background);
|
coloredBackground = findViewById(R.id.match_indicator_background);
|
||||||
|
|
||||||
|
int currentNightMode = getContext().getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
|
||||||
|
switch (currentNightMode) {
|
||||||
|
case Configuration.UI_MODE_NIGHT_NO:
|
||||||
|
// Night mode is not active on device
|
||||||
|
match_indicator_back_button.setColorFilter(Color.BLACK, PorterDuff.Mode.SRC_IN);
|
||||||
|
match_indicator_next_button.setColorFilter(Color.BLACK, PorterDuff.Mode.SRC_IN);
|
||||||
|
break;
|
||||||
|
case Configuration.UI_MODE_NIGHT_YES:
|
||||||
|
// Night mode is active on device
|
||||||
|
match_indicator_back_button.setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_IN);
|
||||||
|
match_indicator_next_button.setColorFilter(Color.WHITE, PorterDuff.Mode.SRC_IN);
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setUsername(String username){
|
public void setUsername(String username){
|
||||||
@@ -73,19 +88,31 @@ public class MatchScoutingIndicator extends RelativeLayout {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setColor(int color){
|
public void setColor(int color){
|
||||||
Drawable drawable = box.getBackground();
|
// Set color of main background rectangle
|
||||||
drawable.mutate();
|
Drawable box_drawable = box.getBackground();
|
||||||
drawable.setColorFilter(color, PorterDuff.Mode.SRC_ATOP);
|
box_drawable.mutate();
|
||||||
|
box_drawable.setColorFilter(color, PorterDuff.Mode.SRC_ATOP);
|
||||||
|
|
||||||
float[] hsv = new float[3];
|
float[] hsv = new float[3];
|
||||||
Color.colorToHSV(color,hsv);
|
Color.colorToHSV(color,hsv);
|
||||||
|
|
||||||
coloredBackground.setBackgroundColor(
|
int background_color = Color.HSVToColor(220, new float[]{
|
||||||
Color.HSVToColor(220, new float[]{
|
|
||||||
hsv[0],
|
hsv[0],
|
||||||
Math.min(hsv[1], 0.75f),
|
Math.min(hsv[1], 0.75f),
|
||||||
Math.min(hsv[2], 0.5f)
|
Math.min(hsv[2], 0.5f)
|
||||||
})
|
});
|
||||||
|
|
||||||
|
// Set color of main background rectangle, slightly dimmer
|
||||||
|
coloredBackground.setBackgroundColor(
|
||||||
|
background_color
|
||||||
);
|
);
|
||||||
|
|
||||||
|
Drawable left_drawable = match_indicator_back_button.getBackground();
|
||||||
|
left_drawable.mutate();
|
||||||
|
left_drawable.setColorFilter(color, PorterDuff.Mode.SRC_ATOP);
|
||||||
|
|
||||||
|
Drawable right_drawable = match_indicator_next_button.getBackground();
|
||||||
|
right_drawable.mutate();
|
||||||
|
right_drawable.setColorFilter(color, PorterDuff.Mode.SRC_ATOP);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,75 @@
|
|||||||
|
package com.ridgebotics.ridgescout.ui.views;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.res.Configuration;
|
||||||
|
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.ImageButton;
|
||||||
|
import android.widget.RelativeLayout;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
import androidx.constraintlayout.widget.ConstraintLayout;
|
||||||
|
|
||||||
|
import com.ridgebotics.ridgescout.R;
|
||||||
|
|
||||||
|
// A view for displaying information about a team.
|
||||||
|
public class PitScoutingIndicator extends RelativeLayout {
|
||||||
|
public PitScoutingIndicator(Context context, @Nullable AttributeSet attrs) {
|
||||||
|
super(context, attrs);
|
||||||
|
init(context);
|
||||||
|
}
|
||||||
|
|
||||||
|
public PitScoutingIndicator(Context context) {
|
||||||
|
super(context);
|
||||||
|
init(context);
|
||||||
|
}
|
||||||
|
|
||||||
|
public TextView pit_indicator_username;
|
||||||
|
public TextView pit_indicator_team_num;
|
||||||
|
private ConstraintLayout box;
|
||||||
|
private View coloredBackground;
|
||||||
|
|
||||||
|
public void init(Context context) {
|
||||||
|
LayoutInflater.from(context).inflate(R.layout.view_pit_scouting_indicator, this, true);
|
||||||
|
pit_indicator_username = findViewById(R.id.pit_indicator_username);
|
||||||
|
pit_indicator_team_num = findViewById(R.id.pit_indicator_teamnum);
|
||||||
|
|
||||||
|
box = findViewById(R.id.pit_indicator_box);
|
||||||
|
coloredBackground = findViewById(R.id.pit_indicator_background);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUsername(String username){
|
||||||
|
pit_indicator_username.setText(username);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTeamNum(int teamNum) {
|
||||||
|
pit_indicator_team_num.setText(String.valueOf(teamNum));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setColor(int color){
|
||||||
|
// Set color of main background rectangle
|
||||||
|
Drawable box_drawable = box.getBackground();
|
||||||
|
box_drawable.mutate();
|
||||||
|
box_drawable.setColorFilter(color, PorterDuff.Mode.SRC_ATOP);
|
||||||
|
|
||||||
|
float[] hsv = new float[3];
|
||||||
|
Color.colorToHSV(color,hsv);
|
||||||
|
|
||||||
|
int background_color = Color.HSVToColor(220, new float[]{
|
||||||
|
hsv[0],
|
||||||
|
Math.min(hsv[1], 0.75f),
|
||||||
|
Math.min(hsv[2], 0.5f)
|
||||||
|
});
|
||||||
|
|
||||||
|
// Set color of main background rectangle, slightly dimmer
|
||||||
|
coloredBackground.setBackgroundColor(
|
||||||
|
background_color
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -6,7 +6,7 @@ import android.graphics.Color;
|
|||||||
public class Colors {
|
public class Colors {
|
||||||
// Lists and stuff
|
// Lists and stuff
|
||||||
public static final int color_found = 0x7f00ff00;
|
public static final int color_found = 0x7f00ff00;
|
||||||
public static final int color_rescout = 0x7f0000ff;
|
public static final int color_rescout = 0xff007fff;
|
||||||
public static final int color_not_found = 0x7f7f0000;
|
public static final int color_not_found = 0x7f7f0000;
|
||||||
|
|
||||||
|
|
||||||
@@ -14,9 +14,9 @@ public class Colors {
|
|||||||
public static final int unfocused_background_color = 0x50118811;
|
public static final int unfocused_background_color = 0x50118811;
|
||||||
|
|
||||||
|
|
||||||
public static final int unsaved_color = 0x60ff0000;
|
public static final int unsaved_color = 0xffaa0000;
|
||||||
public static final int saved_color = 0x6000ff00;
|
public static final int saved_color = 0xff00aa00;
|
||||||
public static final int rescout_color = 0x600000ff;
|
public static final int rescout_color = 0xff007fff;
|
||||||
|
|
||||||
|
|
||||||
// Data graphs
|
// Data graphs
|
||||||
|
|||||||
@@ -25,10 +25,23 @@ public class ImageRequestTask extends AsyncTask<String, Void, Bitmap> {
|
|||||||
try {
|
try {
|
||||||
URL url = new URL(src);
|
URL url = new URL(src);
|
||||||
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
|
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
|
||||||
|
// We do a little bit of spoofing
|
||||||
|
connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.95 Safari/537.11");
|
||||||
connection.setDoInput(true);
|
connection.setDoInput(true);
|
||||||
connection.connect();
|
connection.connect();
|
||||||
|
|
||||||
|
int code = connection.getResponseCode();
|
||||||
|
switch (code) {
|
||||||
|
case 200:
|
||||||
InputStream input = connection.getInputStream();
|
InputStream input = connection.getInputStream();
|
||||||
return BitmapFactory.decodeStream(input);
|
return BitmapFactory.decodeStream(input);
|
||||||
|
case 403:
|
||||||
|
// AlertManager.error("Got 403, Going to https://www.thebluealliance.com/avatars may fix this");
|
||||||
|
return null;
|
||||||
|
default:
|
||||||
|
AlertManager.error("Error downloading image " + src, "Got response code: " + code);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
} catch (FileNotFoundException e){
|
} catch (FileNotFoundException e){
|
||||||
return null;
|
return null;
|
||||||
} catch (IOException e){
|
} catch (IOException e){
|
||||||
|
|||||||
@@ -45,7 +45,7 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:text="Scouting Notice"
|
android:text="Scouting Notice"
|
||||||
android:textAppearance="@style/TextAppearance.MaterialComponents.Subtitle1"></TextView>
|
android:textAppearance="@style/TextAppearance.MaterialComponents.Subtitle1"/>
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
|
|||||||
@@ -4,54 +4,27 @@
|
|||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<com.ridgebotics.ridgescout.ui.views.PitScoutingIndicator
|
||||||
android:id="@+id/pit_file_indicator"
|
android:id="@+id/pit_indicator"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="60dp"
|
||||||
android:background="#60ff0000"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintTop_toTopOf="parent">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/pit_bar_team_num"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="4388"
|
|
||||||
android:textAlignment="center"
|
|
||||||
android:textSize="24sp"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/pitUsername"
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:text="Username"
|
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
|
||||||
app:layout_constraintEnd_toStartOf="@+id/pit_bar_team_num"
|
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<ScrollView
|
<ScrollView
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent">
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
|
|
||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:id="@+id/pitScoutArea"
|
android:id="@+id/pitScoutArea"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical"
|
||||||
android:paddingTop="48dp">
|
android:paddingTop="60dp">
|
||||||
|
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
android:id="@+id/scouting_notice_box"
|
android:id="@+id/scouting_notice_box"
|
||||||
@@ -60,16 +33,15 @@
|
|||||||
android:layout_alignParentEnd="true"
|
android:layout_alignParentEnd="true"
|
||||||
android:layout_margin="5dp"
|
android:layout_margin="5dp"
|
||||||
android:background="@drawable/border"
|
android:background="@drawable/border"
|
||||||
android:padding="10dp"
|
android:orientation="horizontal"
|
||||||
android:orientation="horizontal">
|
android:padding="10dp">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/scouting_notice_text"
|
android:id="@+id/scouting_notice_text"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:textAppearance="@style/TextAppearance.MaterialComponents.Subtitle1"
|
android:text="Scouting Notice"
|
||||||
android:text="Scouting Notice">
|
android:textAppearance="@style/TextAppearance.MaterialComponents.Subtitle1"></TextView>
|
||||||
</TextView>
|
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
|
||||||
|
|||||||
@@ -14,8 +14,7 @@
|
|||||||
android:id="@+id/teams"
|
android:id="@+id/teams"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:orientation="vertical"
|
android:orientation="vertical" />
|
||||||
android:paddingTop="48dp" />
|
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
|
|
||||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
@@ -8,9 +8,12 @@
|
|||||||
<LinearLayout
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_margin="3dp"
|
android:layout_marginLeft="3dp"
|
||||||
android:orientation="horizontal"
|
android:layout_marginTop="5dp"
|
||||||
|
android:layout_marginRight="3dp"
|
||||||
|
android:layout_marginBottom="3dp"
|
||||||
android:background="@drawable/border"
|
android:background="@drawable/border"
|
||||||
|
android:orientation="horizontal"
|
||||||
tools:ignore="UselessParent">
|
tools:ignore="UselessParent">
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
@@ -18,8 +21,9 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_margin="10dp"
|
android:layout_margin="10dp"
|
||||||
android:textSize="24sp"
|
android:overlapAnchor="false"
|
||||||
android:overlapAnchor="false"/>
|
android:text="▼ Options"
|
||||||
|
android:textSize="24sp" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
||||||
@@ -28,7 +32,7 @@
|
|||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="9dp"
|
android:layout_marginStart="9dp"
|
||||||
android:layout_marginTop="-5dp"
|
android:layout_marginTop="-6dp"
|
||||||
android:paddingLeft="3dp"
|
android:paddingLeft="3dp"
|
||||||
android:paddingRight="3dp"
|
android:paddingRight="3dp"
|
||||||
android:text="Test"
|
android:text="Test"
|
||||||
|
|||||||
@@ -11,7 +11,6 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_margin="5dp"
|
android:layout_margin="5dp"
|
||||||
android:background="@drawable/border"
|
android:background="@drawable/border"
|
||||||
android:padding="3dp"
|
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent">
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
@@ -23,16 +22,18 @@
|
|||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
tools:visibility="gone" />
|
||||||
|
|
||||||
<ImageButton
|
<ImageButton
|
||||||
android:id="@+id/match_indicator_back_button"
|
android:id="@+id/match_indicator_back_button"
|
||||||
android:layout_width="50dp"
|
android:layout_width="50dp"
|
||||||
android:layout_height="50dp"
|
android:layout_height="50dp"
|
||||||
|
android:contentDescription="Back"
|
||||||
android:scaleType="fitCenter"
|
android:scaleType="fitCenter"
|
||||||
android:src="@drawable/triangle_left"
|
android:src="@drawable/triangle_left"
|
||||||
android:text="Back"
|
android:text="Back"
|
||||||
android:background="@color/zxing_transparent"
|
android:background="@drawable/border"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
@@ -42,9 +43,10 @@
|
|||||||
android:layout_width="50dp"
|
android:layout_width="50dp"
|
||||||
android:layout_height="50dp"
|
android:layout_height="50dp"
|
||||||
android:scaleType="fitCenter"
|
android:scaleType="fitCenter"
|
||||||
|
android:contentDescription="Next"
|
||||||
android:src="@drawable/triangle_right"
|
android:src="@drawable/triangle_right"
|
||||||
android:text="Next"
|
android:text="Next"
|
||||||
android:background="@color/zxing_transparent"
|
android:background="@drawable/border"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
@@ -53,24 +55,24 @@
|
|||||||
android:id="@+id/match_indicator_alliance_pos_text"
|
android:id="@+id/match_indicator_alliance_pos_text"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginEnd="4dp"
|
android:layout_marginEnd="58dp"
|
||||||
android:text="Temp"
|
android:text="Temp"
|
||||||
android:textAppearance="@style/TextAppearance.MaterialComponents.Subtitle1"
|
|
||||||
android:textAlignment="center"
|
android:textAlignment="center"
|
||||||
|
android:textAppearance="@style/TextAppearance.MaterialComponents.Subtitle1"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintEnd_toStartOf="@+id/match_indicator_next_button"
|
app:layout_constraintEnd_toEndOf="@+id/match_indicator_next_button"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
android:id="@+id/match_indicator_username"
|
android:id="@+id/match_indicator_username"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginStart="4dp"
|
android:layout_marginStart="58dp"
|
||||||
android:text="Temp"
|
android:text="Temp"
|
||||||
android:textAlignment="center"
|
android:textAlignment="center"
|
||||||
android:textAppearance="@style/TextAppearance.MaterialComponents.Headline6"
|
android:textAppearance="@style/TextAppearance.MaterialComponents.Headline6"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintStart_toEndOf="@+id/match_indicator_back_button"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent" />
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
<TextView
|
<TextView
|
||||||
|
|||||||
@@ -0,0 +1,55 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<RelativeLayout xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools">
|
||||||
|
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout
|
||||||
|
android:id="@+id/pit_indicator_box"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_margin="5dp"
|
||||||
|
android:background="@drawable/border"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
|
|
||||||
|
<View
|
||||||
|
android:id="@+id/pit_indicator_background"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="0dp"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
tools:visibility="gone" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/pit_indicator_username"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="58dp"
|
||||||
|
android:text="Username"
|
||||||
|
android:textAlignment="center"
|
||||||
|
android:textAppearance="@style/TextAppearance.MaterialComponents.Headline6"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/pit_indicator_teamnum"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginTop="10dp"
|
||||||
|
android:layout_marginBottom="10dp"
|
||||||
|
android:text="4388"
|
||||||
|
android:textAlignment="center"
|
||||||
|
android:textAppearance="@style/TextAppearance.MaterialComponents.Headline5"
|
||||||
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
|
app:layout_constraintEnd_toEndOf="parent"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
|
</RelativeLayout>
|
||||||
@@ -17,6 +17,8 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:gravity="center"
|
android:gravity="center"
|
||||||
|
android:text="0"
|
||||||
|
android:textAppearance="@style/TextAppearance.MaterialComponents.Headline6"
|
||||||
android:textSize="24sp" />
|
android:textSize="24sp" />
|
||||||
|
|
||||||
<Button
|
<Button
|
||||||
|
|||||||
@@ -28,7 +28,7 @@
|
|||||||
android:id="@+id/team_option_logo"
|
android:id="@+id/team_option_logo"
|
||||||
android:layout_width="54dp"
|
android:layout_width="54dp"
|
||||||
android:layout_height="54dp"
|
android:layout_height="54dp"
|
||||||
android:layout_margin="3dp"
|
android:layout_margin="2dp"
|
||||||
android:scaleType="fitXY"
|
android:scaleType="fitXY"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
app:layout_constraintDimensionRatio="1:1"
|
app:layout_constraintDimensionRatio="1:1"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
[versions]
|
[versions]
|
||||||
agp = "8.8.0"
|
agp = "8.11.1"
|
||||||
junit = "4.13.2"
|
junit = "4.13.2"
|
||||||
junitVersion = "1.1.5"
|
junitVersion = "1.1.5"
|
||||||
espressoCore = "3.5.1"
|
espressoCore = "3.5.1"
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
#Sun Mar 24 10:48:55 MDT 2024
|
#Sun Mar 24 10:48:55 MDT 2024
|
||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
|
|||||||
Reference in New Issue
Block a user