Files
RidgeScout/app/src/main/java/com/ridgebotics/ridgescout/MainActivity.java
T
2025-04-21 12:06:37 -06:00

157 lines
4.7 KiB
Java

package com.ridgebotics.ridgescout;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import com.ridgebotics.ridgescout.databinding.ActivityMainBinding;
import com.ridgebotics.ridgescout.scoutingData.Fields;
import com.ridgebotics.ridgescout.utility.SentimentAnalysis;
import com.ridgebotics.ridgescout.utility.AlertManager;
import com.ridgebotics.ridgescout.utility.FileEditor;
import com.google.android.material.bottomnavigation.BottomNavigationView;
import androidx.appcompat.app.AppCompatActivity;
import androidx.navigation.NavController;
import androidx.navigation.NavOptions;
import androidx.navigation.Navigation;
import androidx.navigation.ui.AppBarConfiguration;
import androidx.navigation.ui.NavigationUI;
import com.ridgebotics.ridgescout.utility.SettingsManager;
import java.util.Objects;
import java.util.TimeZone;
// Entrypoint for the scouting app.
// Configures stuff like the nav menu
// Also has some extra functions like a better back stack or a way to suppress the back button.
public class MainActivity extends AppCompatActivity {
private ActivityMainBinding binding;
private BottomNavigationView navView;
private AppBarConfiguration appBarConfiguration;
private NavController navController;
@Override
protected void onCreate(Bundle savedInstanceState) {
// Load shared prefrences
SettingsManager.prefs = this.getSharedPreferences(
"com.ridgebotics.ridgescout", Context.MODE_PRIVATE);
// Load default match fields
if(!FileEditor.fileExist(Fields.matchFieldsFilename)){
Fields.save(Fields.matchFieldsFilename, Fields.default_match_fields);
}
// Load default pit fields
if(!FileEditor.fileExist(Fields.pitsFieldsFilename)){
Fields.save(Fields.pitsFieldsFilename, Fields.default_pit_fields);
}
// get time zone for FTP file transfer
TimeZone.setDefault(TimeZone.getTimeZone("UTC"));
AlertManager.init(this);
SentimentAnalysis.init(this);
Objects.requireNonNull(getSupportActionBar()).hide();
super.onCreate(savedInstanceState);
binding = ActivityMainBinding.inflate(getLayoutInflater());
setContentView(binding.getRoot());
navView = findViewById(R.id.nav_view);
appBarConfiguration = new AppBarConfiguration.Builder(
R.id.navigation_scouting,
R.id.navigation_data_parent,
R.id.navigation_transfer,
R.id.navigation_settings)
.build();
// appBarConfiguration.set
navController = Navigation.findNavController(this, R.id.nav_host_fragment_activity_main);
NavigationUI.setupActionBarWithNavController(this, navController, appBarConfiguration);
NavigationUI.setupWithNavController(navView, navController);
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;
});
}
@Override
public boolean onSupportNavigateUp() {
return navController.navigateUp() || super.onSupportNavigateUp();
}
private void clearBackStack() {
navController.popBackStack(navController.getGraph().getStartDestinationId(), false);
}
public interface activityResultRelay {
void onActivityResult(int requestCode, int resultCode, Intent data);
}
public static activityResultRelay resultRelay = null;
public static void setResultRelay(activityResultRelay tmpresultRelay){
resultRelay = tmpresultRelay;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
// AlertManager.error(String.valueOf(requestCode));
if (resultRelay != null) {
resultRelay.onActivityResult(resultCode, requestCode, data);
}
}
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();}
}
}