mirror of
https://github.com/Team4388/RidgeScout.git
synced 2026-06-09 00:37:59 -06:00
Settings page improvements
This commit is contained in:
@@ -48,4 +48,6 @@ Things:
|
|||||||
- Moved dropdown title text box slightly farther up
|
- Moved dropdown title text box slightly farther up
|
||||||
- Added downwards pointing triangle to dropdown
|
- Added downwards pointing triangle to dropdown
|
||||||
- Removed slight gap in icon of the team option
|
- Removed slight gap in icon of the team option
|
||||||
|
- Add headers to settings
|
||||||
|
- Moved field edit buttons into the scroll view, so there is no overlap
|
||||||
-->
|
-->
|
||||||
@@ -1,6 +1,8 @@
|
|||||||
package com.ridgebotics.ridgescout.ui.settings;
|
package com.ridgebotics.ridgescout.ui.settings;
|
||||||
|
|
||||||
import static android.view.View.VISIBLE;
|
import static android.view.View.VISIBLE;
|
||||||
|
import static android.widget.LinearLayout.HORIZONTAL;
|
||||||
|
import static android.widget.LinearLayout.VERTICAL;
|
||||||
import static androidx.navigation.fragment.FragmentKt.findNavController;
|
import static androidx.navigation.fragment.FragmentKt.findNavController;
|
||||||
import static com.ridgebotics.ridgescout.utility.SettingsManager.AllyPosKey;
|
import static com.ridgebotics.ridgescout.utility.SettingsManager.AllyPosKey;
|
||||||
import static com.ridgebotics.ridgescout.utility.SettingsManager.CustomEventsKey;
|
import static com.ridgebotics.ridgescout.utility.SettingsManager.CustomEventsKey;
|
||||||
@@ -30,6 +32,8 @@ import android.widget.Button;
|
|||||||
import android.widget.EditText;
|
import android.widget.EditText;
|
||||||
import android.widget.LinearLayout;
|
import android.widget.LinearLayout;
|
||||||
import android.widget.ScrollView;
|
import android.widget.ScrollView;
|
||||||
|
import android.widget.TableLayout;
|
||||||
|
import android.widget.TableRow;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
@@ -37,6 +41,7 @@ import androidx.annotation.Nullable;
|
|||||||
import androidx.fragment.app.Fragment;
|
import androidx.fragment.app.Fragment;
|
||||||
|
|
||||||
import com.google.android.material.checkbox.MaterialCheckBox;
|
import com.google.android.material.checkbox.MaterialCheckBox;
|
||||||
|
import com.google.android.material.divider.MaterialDivider;
|
||||||
import com.google.android.material.textfield.TextInputEditText;
|
import com.google.android.material.textfield.TextInputEditText;
|
||||||
import com.google.android.material.textfield.TextInputLayout;
|
import com.google.android.material.textfield.TextInputLayout;
|
||||||
import com.ridgebotics.ridgescout.R;
|
import com.ridgebotics.ridgescout.R;
|
||||||
@@ -48,6 +53,8 @@ import com.ridgebotics.ridgescout.utility.DataManager;
|
|||||||
import com.ridgebotics.ridgescout.utility.FileEditor;
|
import com.ridgebotics.ridgescout.utility.FileEditor;
|
||||||
import com.ridgebotics.ridgescout.utility.SettingsManager;
|
import com.ridgebotics.ridgescout.utility.SettingsManager;
|
||||||
|
|
||||||
|
import org.w3c.dom.Text;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@@ -65,9 +72,12 @@ public class SettingsFragment extends Fragment {
|
|||||||
|
|
||||||
reloadSettings();
|
reloadSettings();
|
||||||
|
|
||||||
binding.fieldsButton.setOnClickListener(v -> {
|
|
||||||
binding.fieldsButton.setEnabled(false);
|
binding.scoutNoticeButton.setOnClickListener(v->editNotice());
|
||||||
binding.fieldsButtons.setVisibility(VISIBLE);
|
|
||||||
|
binding.fieldsPitsButton.setOnClickListener(v -> {
|
||||||
|
FieldsFragment.set_filename(Fields.pitsFieldsFilename);
|
||||||
|
findNavController(this).navigate(R.id.action_navigation_settings_to_navigation_data_fields);
|
||||||
});
|
});
|
||||||
|
|
||||||
binding.fieldsMatchesButton.setOnClickListener(v -> {
|
binding.fieldsMatchesButton.setOnClickListener(v -> {
|
||||||
@@ -75,11 +85,6 @@ public class SettingsFragment extends Fragment {
|
|||||||
findNavController(this).navigate(R.id.action_navigation_settings_to_navigation_data_fields);
|
findNavController(this).navigate(R.id.action_navigation_settings_to_navigation_data_fields);
|
||||||
});
|
});
|
||||||
|
|
||||||
binding.fieldsPitsButton.setOnClickListener(v -> {
|
|
||||||
FieldsFragment.set_filename(Fields.pitsFieldsFilename);
|
|
||||||
findNavController(this).navigate(R.id.action_navigation_settings_to_navigation_data_fields);
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
return root;
|
return root;
|
||||||
}
|
}
|
||||||
@@ -93,26 +98,31 @@ public class SettingsFragment extends Fragment {
|
|||||||
|
|
||||||
manager.addItem(new CheckboxSettingsItem(CustomEventsKey, "Custom Events"));
|
manager.addItem(new CheckboxSettingsItem(CustomEventsKey, "Custom Events"));
|
||||||
|
|
||||||
|
CheckboxSettingsItem FTPSendMetaFiles = new CheckboxSettingsItem(com.ridgebotics.ridgescout.utility.SettingsManager.FTPSendMetaFiles, "[⚠] Send meta files");
|
||||||
|
manager.addItem(FTPSendMetaFiles);
|
||||||
|
|
||||||
|
manager.addItem(new HeaderSettingsItem("Advanced"));
|
||||||
|
|
||||||
StringSettingsItem FTPKey = new StringSettingsItem(com.ridgebotics.ridgescout.utility.SettingsManager.FTPKey, "Sync Key");
|
StringSettingsItem FTPKey = new StringSettingsItem(com.ridgebotics.ridgescout.utility.SettingsManager.FTPKey, "Sync Key");
|
||||||
manager.addItem(FTPKey);
|
manager.addItem(FTPKey);
|
||||||
StringSettingsItem FTPServer = new StringSettingsItem(com.ridgebotics.ridgescout.utility.SettingsManager.FTPServer, "Sync Server (Sync)");
|
StringSettingsItem FTPServer = new StringSettingsItem(com.ridgebotics.ridgescout.utility.SettingsManager.FTPServer, "Sync Server (Sync)");
|
||||||
manager.addItem(FTPServer);
|
manager.addItem(FTPServer);
|
||||||
CheckboxSettingsItem FTPSendMetaFiles = new CheckboxSettingsItem(com.ridgebotics.ridgescout.utility.SettingsManager.FTPSendMetaFiles, "⚠ Send meta files");
|
CheckboxSettingsItem FTPEnabled = new CheckboxSettingsItem(com.ridgebotics.ridgescout.utility.SettingsManager.FTPEnabled, "Sync Enabled", FTPServer, FTPKey, FTPSendMetaFiles);
|
||||||
manager.addItem(FTPSendMetaFiles);
|
|
||||||
CheckboxSettingsItem FTPEnabled = new CheckboxSettingsItem(com.ridgebotics.ridgescout.utility.SettingsManager.FTPEnabled, "FTP Enabled", FTPServer, FTPKey, FTPSendMetaFiles);
|
|
||||||
manager.addItem(FTPEnabled);
|
manager.addItem(FTPEnabled);
|
||||||
|
|
||||||
manager.addItem(new CheckboxSettingsItem(WifiModeKey, "Wifi Mode", FTPEnabled));
|
manager.addItem(new CheckboxSettingsItem(WifiModeKey, "Wifi Mode", FTPEnabled));
|
||||||
manager.addItem(new CheckboxSettingsItem(EnableQuickAllianceChangeKey, "Enable quick alliance swap", null));
|
|
||||||
|
|
||||||
|
|
||||||
|
manager.addItem(new NumberSettingsItem(YearNumKey, "Year", 0, 9999));
|
||||||
|
|
||||||
|
manager.addItem(new HeaderSettingsItem("Connection"));
|
||||||
|
|
||||||
|
manager.addItem(new CheckboxSettingsItem(EnableQuickAllianceChangeKey, "Enable quick alliance swap", null));
|
||||||
manager.addItem(new DropdownSettingsItem(FieldImageKey, "Field Image", new String[]{
|
manager.addItem(new DropdownSettingsItem(FieldImageKey, "Field Image", new String[]{
|
||||||
"2025",
|
"2025",
|
||||||
"2025 (Flipped)"
|
"2025 (Flipped)"
|
||||||
}));
|
}));
|
||||||
|
|
||||||
manager.addItem(new NumberSettingsItem(YearNumKey, "Year", 0, 9999));
|
|
||||||
|
|
||||||
|
|
||||||
manager.addItem(new DropdownSettingsItem(AllyPosKey, "Alliance Pos", alliance_pos_list));
|
manager.addItem(new DropdownSettingsItem(AllyPosKey, "Alliance Pos", alliance_pos_list));
|
||||||
|
|
||||||
int max = 0;
|
int max = 0;
|
||||||
@@ -134,16 +144,45 @@ public class SettingsFragment extends Fragment {
|
|||||||
|
|
||||||
manager.addItem(new StringSettingsItem(UnameKey, "Username"));
|
manager.addItem(new StringSettingsItem(UnameKey, "Username"));
|
||||||
manager.addItem(new NumberSettingsItem(TeamNumKey, "Team Number", 0, 99999));
|
manager.addItem(new NumberSettingsItem(TeamNumKey, "Team Number", 0, 99999));
|
||||||
|
manager.addItem(new HeaderSettingsItem("Scouting"));
|
||||||
|
|
||||||
binding.SettingsTable.removeAllViews();
|
binding.SettingsTable.removeAllViews();
|
||||||
|
|
||||||
manager.getView(binding.SettingsTable);
|
manager.getView(binding.SettingsTable);
|
||||||
|
|
||||||
if(!DataManager.getevcode().equals("unset")){
|
|
||||||
Button editNoticeButton = new Button(getContext());
|
// Add "Edit scout notice" button to the bottom of the page=
|
||||||
editNoticeButton.setText("Edit Scout Notice");
|
binding.scoutNoticeButton.setEnabled(!DataManager.getevcode().equals("unset"));
|
||||||
binding.SettingsTable.addView(editNoticeButton);
|
|
||||||
editNoticeButton.setOnClickListener(v->editNotice());
|
|
||||||
}
|
// Add "Field edit" buttons to the bottom of the page
|
||||||
|
// LinearLayout fieldButtons = new LinearLayout(getContext());
|
||||||
|
// fieldButtons.setLayoutParams(new LinearLayout.LayoutParams(
|
||||||
|
// LinearLayout.LayoutParams.MATCH_PARENT,
|
||||||
|
// LinearLayout.LayoutParams.WRAP_CONTENT
|
||||||
|
// ));
|
||||||
|
// fieldButtons.setOrientation(HORIZONTAL);
|
||||||
|
//
|
||||||
|
// Button editMatchFieldsButton = new Button(getContext());
|
||||||
|
// editMatchFieldsButton.setText("Edit Match Fields");
|
||||||
|
// editMatchFieldsButton.setOnClickListener(v -> {
|
||||||
|
// FieldsFragment.set_filename(Fields.matchFieldsFilename);
|
||||||
|
// findNavController(this).navigate(R.id.action_navigation_settings_to_navigation_data_fields);
|
||||||
|
// });
|
||||||
|
// fieldButtons.addView(editMatchFieldsButton);
|
||||||
|
//
|
||||||
|
//
|
||||||
|
// Button editPitsFieldsButton = new Button(getContext());
|
||||||
|
// editPitsFieldsButton.setText("Edit pits Fields");
|
||||||
|
// editPitsFieldsButton.setOnClickListener(v -> {
|
||||||
|
// FieldsFragment.set_filename(Fields.pitsFieldsFilename);
|
||||||
|
// findNavController(this).navigate(R.id.action_navigation_settings_to_navigation_data_fields);
|
||||||
|
// });
|
||||||
|
// fieldButtons.addView(editPitsFieldsButton);
|
||||||
|
|
||||||
|
|
||||||
|
// binding.SettingsTable.addView(fieldButtons);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -347,7 +386,7 @@ public class SettingsFragment extends Fragment {
|
|||||||
@Override
|
@Override
|
||||||
public View createView(Context context) {
|
public View createView(Context context) {
|
||||||
LinearLayout ll = new LinearLayout(getContext());
|
LinearLayout ll = new LinearLayout(getContext());
|
||||||
ll.setOrientation(LinearLayout.VERTICAL);
|
ll.setOrientation(VERTICAL);
|
||||||
|
|
||||||
tally = new TallyCounterView(getContext());
|
tally = new TallyCounterView(getContext());
|
||||||
|
|
||||||
@@ -475,6 +514,42 @@ public class SettingsFragment extends Fragment {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public class HeaderSettingsItem extends SettingsItem<Void> {
|
||||||
|
|
||||||
|
String title;
|
||||||
|
|
||||||
|
public HeaderSettingsItem(String title) {
|
||||||
|
super("", title, null);
|
||||||
|
this.title = title;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setEnabled(boolean enabled){
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public View createView(Context context) {
|
||||||
|
LinearLayout ll = new LinearLayout(context);
|
||||||
|
ll.setOrientation(VERTICAL);
|
||||||
|
ll.setPadding(0, 20,0,0);
|
||||||
|
|
||||||
|
TextView tv = new TextView(context);
|
||||||
|
tv.setText(title);
|
||||||
|
tv.setTextAppearance(com.google.android.material.R.style.TextAppearance_MaterialComponents_Headline4);
|
||||||
|
ll.addView(tv);
|
||||||
|
|
||||||
|
ll.addView(new MaterialDivider(context));
|
||||||
|
|
||||||
|
return ll;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Void getValue() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public class SettingsManager {
|
public class SettingsManager {
|
||||||
private Context context;
|
private Context context;
|
||||||
private HashMap<String, Object> settings;
|
private HashMap<String, Object> settings;
|
||||||
@@ -497,7 +572,7 @@ public class SettingsFragment extends Fragment {
|
|||||||
items.add(item);
|
items.add(item);
|
||||||
|
|
||||||
LinearLayout itemContainer = new LinearLayout(context);
|
LinearLayout itemContainer = new LinearLayout(context);
|
||||||
itemContainer.setOrientation(LinearLayout.VERTICAL);
|
itemContainer.setOrientation(VERTICAL);
|
||||||
itemContainer.setPadding(32, 0, 32, 8);
|
itemContainer.setPadding(32, 0, 32, 8);
|
||||||
|
|
||||||
View view = item.createView(context);
|
View view = item.createView(context);
|
||||||
|
|||||||
@@ -10,7 +10,6 @@
|
|||||||
android:id="@+id/scrollView2"
|
android:id="@+id/scrollView2"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="match_parent"
|
||||||
android:layout_marginBottom="60dp"
|
|
||||||
android:fillViewport="true"
|
android:fillViewport="true"
|
||||||
android:visibility="visible"
|
android:visibility="visible"
|
||||||
app:layout_constraintBottom_toBottomOf="parent"
|
app:layout_constraintBottom_toBottomOf="parent"
|
||||||
@@ -18,55 +17,70 @@
|
|||||||
app:layout_constraintStart_toStartOf="parent"
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
app:layout_constraintTop_toTopOf="parent">
|
app:layout_constraintTop_toTopOf="parent">
|
||||||
|
|
||||||
<TableLayout
|
<LinearLayout
|
||||||
android:id="@+id/SettingsTable"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:orientation="vertical">
|
android:orientation="vertical">
|
||||||
|
|
||||||
</TableLayout>
|
<TableLayout
|
||||||
|
android:id="@+id/SettingsTable"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="vertical" />
|
||||||
|
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/scoutNoticeButton"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:layout_margin="5dp"
|
||||||
|
android:text="Edit Scout notice"
|
||||||
|
android:textSize="16sp" />
|
||||||
|
|
||||||
|
<LinearLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:orientation="horizontal">
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/fieldsPitsButton"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:layout_margin="5dp"
|
||||||
|
android:text="Edit PIT Fields"
|
||||||
|
android:textSize="16sp" />
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/fieldsMatchesButton"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_weight="1"
|
||||||
|
android:layout_margin="5dp"
|
||||||
|
android:text="Edit MATCH Fields"
|
||||||
|
android:textSize="16sp" />
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
|
</LinearLayout>
|
||||||
|
|
||||||
</ScrollView>
|
</ScrollView>
|
||||||
|
|
||||||
|
|
||||||
<Button
|
<!-- <LinearLayout-->
|
||||||
android:id="@+id/fieldsButton"
|
<!-- android:id="@+id/fieldsButtons"-->
|
||||||
android:layout_width="wrap_content"
|
<!-- android:layout_width="match_parent"-->
|
||||||
android:layout_height="wrap_content"
|
<!-- android:layout_height="wrap_content"-->
|
||||||
android:text="Fields"
|
<!-- android:layout_marginTop="1dp"-->
|
||||||
android:textSize="34sp"
|
<!-- android:gravity="center"-->
|
||||||
app:layout_constraintBottom_toBottomOf="@+id/scrollView2"
|
<!-- android:orientation="horizontal"-->
|
||||||
app:layout_constraintEnd_toEndOf="parent"
|
<!-- android:visibility="gone"-->
|
||||||
app:layout_constraintStart_toStartOf="parent" />
|
<!-- app:layout_constraintEnd_toEndOf="parent"-->
|
||||||
|
<!-- app:layout_constraintStart_toStartOf="parent"-->
|
||||||
|
<!-- app:layout_constraintBottom_toTopOf="@+id/fieldsButton"-->
|
||||||
|
<!-- tools:visibility="visible">-->
|
||||||
|
|
||||||
<LinearLayout
|
<!-- </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_constraintBottom_toTopOf="@+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>
|
||||||
Reference in New Issue
Block a user