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