mirror of
https://github.com/AngelAuraMC/Amethyst-Android.git
synced 2025-09-15 15:48:26 -04:00
Refactor PerVersionConfigDialog.java
This commit is contained in:
parent
098c4c7f89
commit
2a37553815
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user