Overhaul config menu to make code easier to expand upon

This also fixes a few minor syntax errors that were the reault of
duplication code across individual menu options.
This commit is contained in:
LoungeKatt 2013-12-28 07:43:28 -05:00
parent acef71f184
commit 684c07c5ce
2 changed files with 143 additions and 209 deletions

View File

@ -102,52 +102,10 @@ public class ConfigureFragment extends Fragment {
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
mPrefs.edit().putBoolean("stretch_view", isChecked).commit();
File config = new File(home_directory, "emu.cfg");
try {
StringBuilder rebuildFile = new StringBuilder();
if (config.exists()) {
Scanner scanner = new Scanner(config);
String currentLine;
while (scanner.hasNextLine()) {
currentLine = scanner.nextLine();
if (StringUtils.containsIgnoreCase(currentLine,
"rend.WideScreen")) {
rebuildFile.append("rend.WideScreen="
+ String.valueOf(isChecked ? 1 : 0)
+ "\n");
} else {
rebuildFile.append(currentLine + "\n");
}
}
scanner.close();
config.delete();
// Investigate alternatives to not re-read
} else {
rebuildFile.append("[config]" + "\n");
rebuildFile.append("Dynarec.Enabled=1" + "\n");
rebuildFile.append("Dynarec.idleskip=1" + "\n");
rebuildFile.append("Dynarec.unstable-opt=0" + "\n");
rebuildFile.append("Dreamcast.Cable=3" + "\n");
rebuildFile.append("Dreamcast.RTC=2018927206" + "\n");
rebuildFile.append("Dreamcast.Region=3" + "\n");
rebuildFile.append("Dreamcast.Broadcast=4" + "\n");
rebuildFile.append("aica.LimitFPS=1" + "\n");
rebuildFile.append("aica.NoBatch=0" + "\n");
rebuildFile.append("rend.UseMipmaps=1" + "\n");
rebuildFile.append("rend.WideScreen="
+ String.valueOf(isChecked ? 1 : 0) + "\n");
rebuildFile.append("pvr.Subdivide=0" + "\n");
rebuildFile.append("ta.skip=" + frameskip + "\n");
rebuildFile.append("pvr.rend="
+ String.valueOf(pvrrender ? 1 : 0) + "\n");
rebuildFile.append("image=null" + "\n");
}
FileOutputStream fos = new FileOutputStream(config);
fos.write(rebuildFile.toString().getBytes());
fos.close();
widescreen = isChecked;
} catch (Exception e) {
Log.d("reicast", "Exception: " + e);
if (!executeAppendConfig("rend.WideScreen",
String.valueOf(isChecked ? 1 : 0))) {
executeWriteConfig();
}
}
};
@ -185,7 +143,7 @@ public class ConfigureFragment extends Fragment {
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
progressChanged = progress;
mainFrames.setText(progress);
mainFrames.setText(String.valueOf(progress));
}
public void onStartTrackingTouch(SeekBar seekBar) {
@ -194,25 +152,84 @@ public class ConfigureFragment extends Fragment {
public void onStopTrackingTouch(SeekBar seekBar) {
mPrefs.edit().putInt("frame_skip", progressChanged).commit();
frameskip = progressChanged;
if (!executeAppendConfig("ta.skip",
String.valueOf(progressChanged))) {
executeWriteConfig();
}
}
});
OnCheckedChangeListener pvr_rendering = new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
mPrefs.edit().putBoolean("pvr_render", isChecked).commit();
pvrrender = isChecked;
if (!executeAppendConfig("pvr.rend",
String.valueOf(isChecked ? 1 : 0))) {
executeWriteConfig();
}
}
};
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR1) {
Switch pvr_render = (Switch) getView().findViewById(
R.id.render_option);
boolean rendered = mPrefs.getBoolean("pvr_render", pvrrender);
if (rendered) {
pvr_render.setChecked(true);
} else {
pvr_render.setChecked(false);
}
pvr_render.setOnCheckedChangeListener(pvr_rendering);
} else {
CheckBox pvr_render = (CheckBox) getView().findViewById(
R.id.render_option);
boolean rendered = mPrefs.getBoolean("pvr_render", pvrrender);
if (rendered) {
pvr_render.setChecked(true);
} else {
pvr_render.setChecked(false);
}
pvr_render.setOnCheckedChangeListener(pvr_rendering);
}
}
private boolean executeAppendConfig(String identifier, String value) {
File config = new File(home_directory, "emu.cfg");
if (config.exists()) {
try {
StringBuilder rebuildFile = new StringBuilder();
if (config.exists()) {
Scanner scanner = new Scanner(config);
String currentLine;
while (scanner.hasNextLine()) {
currentLine = scanner.nextLine();
if (StringUtils.containsIgnoreCase(currentLine,
"ta.skip")) {
rebuildFile.append("ta.skip=" + progressChanged
+ "\n");
if (StringUtils.containsIgnoreCase(currentLine, identifier)) {
rebuildFile.append(identifier + "=" + value + "\n");
} else {
rebuildFile.append(currentLine + "\n");
}
}
scanner.close();
config.delete();
} else {
FileOutputStream fos = new FileOutputStream(config);
fos.write(rebuildFile.toString().getBytes());
fos.close();
return true;
} catch (Exception e) {
Log.d("reicast", "Exception: " + e);
}
}
return false;
}
private void executeWriteConfig() {
try {
File config = new File(home_directory, "emu.cfg");
if (config.exists()) {
config.delete();
}
StringBuilder rebuildFile = new StringBuilder();
rebuildFile.append("[config]" + "\n");
rebuildFile.append("Dynarec.Enabled=1" + "\n");
rebuildFile.append("Dynarec.idleskip=1" + "\n");
@ -227,95 +244,15 @@ public class ConfigureFragment extends Fragment {
rebuildFile.append("rend.WideScreen="
+ String.valueOf(widescreen ? 1 : 0) + "\n");
rebuildFile.append("pvr.Subdivide=0" + "\n");
rebuildFile.append("ta.skip=" + progressChanged + "\n");
rebuildFile.append("pvr.rend="
+ String.valueOf(pvrrender ? 1 : 0) + "\n");
rebuildFile.append("ta.skip=" + String.valueOf(frameskip) + "\n");
rebuildFile.append("pvr.rend=" + String.valueOf(pvrrender ? 1 : 0)
+ "\n");
rebuildFile.append("image=null" + "\n");
}
FileOutputStream fos = new FileOutputStream(config);
fos.write(rebuildFile.toString().getBytes());
fos.close();
frameskip = progressChanged;
} catch (Exception e) {
Log.d("reicast", "Exception: " + e);
}
}
});
OnCheckedChangeListener pvr_rendering = new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
mPrefs.edit().putBoolean("pvr_render", isChecked).commit();
File config = new File(home_directory, "emu.cfg");
try {
StringBuilder rebuildFile = new StringBuilder();
if (config.exists()) {
Scanner scanner = new Scanner(config);
String currentLine;
while (scanner.hasNextLine()) {
currentLine = scanner.nextLine();
if (StringUtils.containsIgnoreCase(currentLine,
"pvr.rend")) {
rebuildFile.append("pvr.rend="
+ String.valueOf(isChecked ? 1 : 0)
+ "\n");
} else {
rebuildFile.append(currentLine + "\n");
}
}
scanner.close();
config.delete();
// Investigate alternatives to not re-read
} else {
rebuildFile.append("[config]" + "\n");
rebuildFile.append("Dynarec.Enabled=1" + "\n");
rebuildFile.append("Dynarec.idleskip=1" + "\n");
rebuildFile.append("Dynarec.unstable-opt=0" + "\n");
rebuildFile.append("Dreamcast.Cable=3" + "\n");
rebuildFile.append("Dreamcast.RTC=2018927206" + "\n");
rebuildFile.append("Dreamcast.Region=3" + "\n");
rebuildFile.append("Dreamcast.Broadcast=4" + "\n");
rebuildFile.append("aica.LimitFPS=1" + "\n");
rebuildFile.append("aica.NoBatch=0" + "\n");
rebuildFile.append("rend.UseMipmaps=1" + "\n");
rebuildFile.append("rend.WideScreen=" + widescreen
+ "\n");
rebuildFile.append("pvr.Subdivide=0" + "\n");
rebuildFile.append("ta.skip=" + frameskip + "\n");
rebuildFile.append("pvr.rend="
+ String.valueOf(isChecked ? 1 : 0) + "\n");
rebuildFile.append("image=null" + "\n");
}
FileOutputStream fos = new FileOutputStream(config);
fos.write(rebuildFile.toString().getBytes());
fos.close();
pvrrender = isChecked;
} catch (Exception e) {
Log.d("reicast", "Exception: " + e);
}
}
};
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR1) {
Switch pvr_render = (Switch) getView().findViewById(
R.id.stretch_option);
boolean rendered = mPrefs.getBoolean("pvr_render", pvrrender);
if (rendered) {
pvr_render.setChecked(true);
} else {
pvr_render.setChecked(false);
}
pvr_render.setOnCheckedChangeListener(pvr_rendering);
} else {
CheckBox pvr_render = (CheckBox) getView().findViewById(
R.id.stretch_option);
boolean rendered = mPrefs.getBoolean("pvr_render", pvrrender);
if (rendered) {
pvr_render.setChecked(true);
} else {
pvr_render.setChecked(false);
}
pvr_render.setOnCheckedChangeListener(pvr_rendering);
}
}
}

View File

@ -65,32 +65,6 @@ public class MainActivity extends FragmentActivity implements
// the fragment_container FrameLayout
if (findViewById(R.id.fragment_container) != null) {
// However, if we're being restored from a previous state,
// then we don't need to do anything and should return or else
// we could end up with overlapping fragments.
if (savedInstanceState != null) {
return;
}
// Create a new Fragment to be placed in the activity layout
FileBrowser firstFragment = new FileBrowser();
Bundle args = new Bundle();
args.putBoolean("ImgBrowse", true);
args.putString("browse_entry", null);
// specify a path for selecting folder options
args.putBoolean("games_entry", false);
// specify if the desired path is for games or data
firstFragment.setArguments(args);
// In case this activity was started with special instructions from
// an
// Intent, pass the Intent's extras to the fragment as arguments
// firstFragment.setArguments(getIntent().getExtras());
// Add the fragment to the 'fragment_container' FrameLayout
getSupportFragmentManager().beginTransaction()
.add(R.id.fragment_container, firstFragment).commit();
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR1) {
navMenuTitles = getResources().getStringArray(
@ -155,12 +129,35 @@ public class MainActivity extends FragmentActivity implements
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
}
// if (savedInstanceState == null) {
// displayView(0);
//
// }
} else {
// However, if we're being restored from a previous state,
// then we don't need to do anything and should return or else
// we could end up with overlapping fragments.
if (savedInstanceState != null) {
return;
}
// Create a new Fragment to be placed in the activity layout
FileBrowser firstFragment = new FileBrowser();
Bundle args = new Bundle();
args.putBoolean("ImgBrowse", true);
args.putString("browse_entry", null);
// specify a path for selecting folder options
args.putBoolean("games_entry", false);
// specify if the desired path is for games or data
firstFragment.setArguments(args);
// In case this activity was started with special instructions from
// an
// Intent, pass the Intent's extras to the fragment as arguments
// firstFragment.setArguments(getIntent().getExtras());
// Add the fragment to the 'fragment_container' FrameLayout
getSupportFragmentManager().beginTransaction()
.add(R.id.fragment_container, firstFragment).commit();
}
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB_MR1) {
findViewById(R.id.config).setOnClickListener(new OnClickListener() {
public void onClick(View view) {