Refactor PerVersionConfigDialog.java

This commit is contained in:
SerpentSpirale 2022-02-26 10:48:08 +01:00 committed by ArtDev
parent 098c4c7f89
commit 2a37553815

View File

@ -17,103 +17,105 @@ import net.kdt.pojavlaunch.multirt.Runtime;
import net.kdt.pojavlaunch.value.PerVersionConfig;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class PerVersionConfigDialog{
final Context ctx;
final AlertDialog dialog;
final View v;
List<Runtime> runtimes;
final Spinner javaVMSpinner;
final Spinner rendererSpinner;
final EditText customDirText;
final EditText jvmArgsEditText;
final List<String> renderNames;
String selectedGameVersion = null;
public PerVersionConfigDialog(Context _ctx) {
ctx = _ctx;
v = LayoutInflater.from(ctx).inflate(R.layout.pvc_popup,null);
javaVMSpinner = v.findViewById(R.id.pvc_javaVm);
rendererSpinner = v.findViewById(R.id.pvc_renderer);
{
List<String> renderList = new ArrayList<>();
Collections.addAll(renderList, ctx.getResources().getStringArray(R.array.renderer));
renderList.add("Default");
renderNames = Arrays.asList(ctx.getResources().getStringArray(R.array.renderer_values));
rendererSpinner.setAdapter(new ArrayAdapter<>(ctx, android.R.layout.simple_spinner_dropdown_item,renderList));
}
customDirText = v.findViewById(R.id.pvc_customDir);
jvmArgsEditText = v.findViewById(R.id.pvc_jvmArgs);
AlertDialog.Builder builder = new AlertDialog.Builder(ctx);
builder.setView(v);
final Context mContext;
final AlertDialog mDialog;
final View mRootView;
List<Runtime> mRuntimes;
final Spinner mJvmSpinner;
final Spinner mRendererSpinner;
final EditText mCustomDirEditText;
final EditText mJvmArgsEditText;
final List<String> mRendererNames;
String mSelectedGameVersion = null;
public PerVersionConfigDialog(Context ctx) {
mContext = ctx;
mRootView = LayoutInflater.from(mContext).inflate(R.layout.pvc_popup,null);
mJvmSpinner = mRootView.findViewById(R.id.pvc_javaVm);
mRendererSpinner = mRootView.findViewById(R.id.pvc_renderer);
List<String> renderList = Arrays.asList(mContext.getResources().getStringArray(R.array.renderer));
renderList.add("Default");
mRendererNames = Arrays.asList(mContext.getResources().getStringArray(R.array.renderer_values));
mRendererSpinner.setAdapter(new ArrayAdapter<>(mContext, android.R.layout.simple_spinner_dropdown_item, renderList));
mCustomDirEditText = mRootView.findViewById(R.id.pvc_customDir);
mJvmArgsEditText = mRootView.findViewById(R.id.pvc_jvmArgs);
AlertDialog.Builder builder = new AlertDialog.Builder(mContext);
builder.setView(mRootView);
builder.setTitle(R.string.pvc_title);
builder.setNegativeButton(android.R.string.cancel,(dialogInterface,i)->dialogInterface.dismiss());
builder.setPositiveButton(android.R.string.ok,this::save);
dialog = builder.create();
builder.setNegativeButton(android.R.string.cancel, null);
builder.setPositiveButton(android.R.string.ok, this::save);
mDialog = builder.create();
}
public void refreshRuntimes() {
if(runtimes!=null)runtimes.clear();
runtimes = MultiRTUtils.getRuntimes();
if(mRuntimes !=null) mRuntimes.clear();
mRuntimes = MultiRTUtils.getRuntimes();
//runtimes.add(new Runtime("<Default>"));
}
private void save(DialogInterface i, int which) {
if(selectedGameVersion == null) {
i.dismiss();
private void save(DialogInterface dialogInterface, int which) {
if(mSelectedGameVersion == null) {
dialogInterface.dismiss();
return;
}
PerVersionConfig.VersionConfig conf1 = PerVersionConfig.configMap.get(selectedGameVersion);
if(conf1==null){
conf1=new PerVersionConfig.VersionConfig();
PerVersionConfig.VersionConfig versionConfig = PerVersionConfig.configMap.get(mSelectedGameVersion);
if(versionConfig == null){
versionConfig = new PerVersionConfig.VersionConfig();
}
conf1.jvmArgs=jvmArgsEditText.getText().toString();
conf1.gamePath=customDirText.getText().toString();
versionConfig.jvmArgs= mJvmArgsEditText.getText().toString();
versionConfig.gamePath= mCustomDirEditText.getText().toString();
if(rendererSpinner.getSelectedItemPosition() == renderNames.size()) conf1.renderer = null;
else conf1.renderer = renderNames.get(rendererSpinner.getSelectedItemPosition());
if(mRendererSpinner.getSelectedItemPosition() == mRendererNames.size()) versionConfig.renderer = null;
else versionConfig.renderer = mRendererNames.get(mRendererSpinner.getSelectedItemPosition());
String runtime=((Runtime)javaVMSpinner.getSelectedItem()).name;;
if(!runtime.equals("<Default>"))conf1.selectedRuntime=runtime;
else conf1.selectedRuntime=null;
String runtime=((Runtime) mJvmSpinner.getSelectedItem()).name;;
if(!runtime.equals("<Default>"))versionConfig.selectedRuntime=runtime;
else versionConfig.selectedRuntime = null;
PerVersionConfig.configMap.put(selectedGameVersion,conf1);
PerVersionConfig.configMap.put(mSelectedGameVersion, versionConfig);
try{
PerVersionConfig.update();
}catch(IOException e){
e.printStackTrace();
}
}
public boolean openConfig(String selectedVersion) {
selectedGameVersion = selectedVersion;
mSelectedGameVersion = selectedVersion;
try{
PerVersionConfig.update();
}catch(IOException e){
e.printStackTrace();
}
PerVersionConfig.VersionConfig conf=PerVersionConfig.configMap.get(selectedGameVersion);
PerVersionConfig.VersionConfig versionConfig = PerVersionConfig.configMap.get(mSelectedGameVersion);
refreshRuntimes();
javaVMSpinner.setAdapter(new RTSpinnerAdapter(ctx,runtimes));
{
int jvm_index = runtimes.indexOf(new Runtime("<Default>"));
int rnd_index = rendererSpinner.getAdapter().getCount()-1;
if (conf != null) {
customDirText.setText(conf.gamePath);
jvmArgsEditText.setText(conf.jvmArgs);
if (conf.selectedRuntime != null) {
int nindex = runtimes.indexOf(new Runtime(conf.selectedRuntime));
if (nindex != -1) jvm_index = nindex;
}
if(conf.renderer != null) {
int nindex = renderNames.indexOf(conf.renderer);
if (nindex != -1) rnd_index = nindex;
}
mJvmSpinner.setAdapter(new RTSpinnerAdapter(mContext, mRuntimes));
int jvmIndex = mRuntimes.indexOf(new Runtime("<Default>"));
int rendererIndex = mRendererSpinner.getAdapter().getCount()-1;
if (versionConfig != null) {
mCustomDirEditText.setText(versionConfig.gamePath);
mJvmArgsEditText.setText(versionConfig.jvmArgs);
if (versionConfig.selectedRuntime != null) {
int nIndex = mRuntimes.indexOf(new Runtime(versionConfig.selectedRuntime));
if (nIndex != -1) jvmIndex = nIndex;
}
if(versionConfig.renderer != null) {
int nIndex = mRendererNames.indexOf(versionConfig.renderer);
if (nIndex != -1) rendererIndex = nIndex;
}
javaVMSpinner.setSelection(jvm_index);
rendererSpinner.setSelection(rnd_index);
}
dialog.show();
mJvmSpinner.setSelection(jvmIndex);
mRendererSpinner.setSelection(rendererIndex);
mDialog.show();
return true;
}
}
}