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);
widescreen = isChecked;
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,50 +152,10 @@ public class ConfigureFragment extends Fragment {
public void onStopTrackingTouch(SeekBar seekBar) {
mPrefs.edit().putInt("frame_skip", progressChanged).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,
"ta.skip")) {
rebuildFile.append("ta.skip=" + progressChanged
+ "\n");
} else {
rebuildFile.append(currentLine + "\n");
}
}
scanner.close();
config.delete();
} 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(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("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);
frameskip = progressChanged;
if (!executeAppendConfig("ta.skip",
String.valueOf(progressChanged))) {
executeWriteConfig();
}
}
});
@ -247,58 +165,16 @@ public class ConfigureFragment extends Fragment {
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);
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.stretch_option);
R.id.render_option);
boolean rendered = mPrefs.getBoolean("pvr_render", pvrrender);
if (rendered) {
pvr_render.setChecked(true);
@ -308,7 +184,7 @@ public class ConfigureFragment extends Fragment {
pvr_render.setOnCheckedChangeListener(pvr_rendering);
} else {
CheckBox pvr_render = (CheckBox) getView().findViewById(
R.id.stretch_option);
R.id.render_option);
boolean rendered = mPrefs.getBoolean("pvr_render", pvrrender);
if (rendered) {
pvr_render.setChecked(true);
@ -318,4 +194,65 @@ public class ConfigureFragment extends Fragment {
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();
Scanner scanner = new Scanner(config);
String currentLine;
while (scanner.hasNextLine()) {
currentLine = scanner.nextLine();
if (StringUtils.containsIgnoreCase(currentLine, identifier)) {
rebuildFile.append(identifier + "=" + value + "\n");
} else {
rebuildFile.append(currentLine + "\n");
}
}
scanner.close();
config.delete();
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");
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(widescreen ? 1 : 0) + "\n");
rebuildFile.append("pvr.Subdivide=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();
} catch (Exception e) {
Log.d("reicast", "Exception: " + e);
}
}
}

View File

@ -64,6 +64,72 @@ public class MainActivity extends FragmentActivity implements
// Check that the activity is using the layout version with
// the fragment_container FrameLayout
if (findViewById(R.id.fragment_container) != null) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR1) {
navMenuTitles = getResources().getStringArray(
R.array.nav_drawer_items);
// nav drawer icons from resources
navMenuIcons = getResources().obtainTypedArray(
R.array.nav_drawer_icons);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.list_slidermenu);
navDrawerItems = new ArrayList<NavDrawerItem>();
// adding nav drawer items to array
// Browser
navDrawerItems.add(new NavDrawerItem(navMenuTitles[0], navMenuIcons
.getResourceId(0, -1)));
// Options
navDrawerItems.add(new NavDrawerItem(navMenuTitles[1], navMenuIcons
.getResourceId(1, -1)));
// Config
navDrawerItems.add(new NavDrawerItem(navMenuTitles[2], navMenuIcons
.getResourceId(2, -1)));
// About
navDrawerItems.add(new NavDrawerItem(navMenuTitles[3], navMenuIcons
.getResourceId(3, -1)));
// Recycle the typed array
navMenuIcons.recycle();
mDrawerList.setOnItemClickListener(new SlideMenuClickListener());
// setting the nav drawer list adapter
adapter = new NavDrawerListAdapter(getApplicationContext(),
navDrawerItems);
mDrawerList.setAdapter(adapter);
// enabling action bar app icon and behaving it as toggle button
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
R.drawable.ic_drawer, // nav menu toggle icon
R.string.app_name, // nav drawer open - description for
// accessibility
R.string.app_name // nav drawer close - description for
// accessibility
) {
public void onDrawerClosed(View view) {
getActionBar().setTitle(mTitle);
// calling onPrepareOptionsMenu() to show action bar
// icons
invalidateOptionsMenu();
}
public void onDrawerOpened(View drawerView) {
getActionBar().setTitle(mDrawerTitle);
// calling onPrepareOptionsMenu() to hide action bar
// icons
invalidateOptionsMenu();
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
}
// However, if we're being restored from a previous state,
// then we don't need to do anything and should return or else
@ -91,76 +157,7 @@ public class MainActivity extends FragmentActivity implements
.add(R.id.fragment_container, firstFragment).commit();
}
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR1) {
navMenuTitles = getResources().getStringArray(
R.array.nav_drawer_items);
// nav drawer icons from resources
navMenuIcons = getResources().obtainTypedArray(
R.array.nav_drawer_icons);
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerList = (ListView) findViewById(R.id.list_slidermenu);
navDrawerItems = new ArrayList<NavDrawerItem>();
// adding nav drawer items to array
// Browser
navDrawerItems.add(new NavDrawerItem(navMenuTitles[0], navMenuIcons
.getResourceId(0, -1)));
// Options
navDrawerItems.add(new NavDrawerItem(navMenuTitles[1], navMenuIcons
.getResourceId(1, -1)));
// Config
navDrawerItems.add(new NavDrawerItem(navMenuTitles[2], navMenuIcons
.getResourceId(2, -1)));
// About
navDrawerItems.add(new NavDrawerItem(navMenuTitles[3], navMenuIcons
.getResourceId(3, -1)));
// Recycle the typed array
navMenuIcons.recycle();
mDrawerList.setOnItemClickListener(new SlideMenuClickListener());
// setting the nav drawer list adapter
adapter = new NavDrawerListAdapter(getApplicationContext(),
navDrawerItems);
mDrawerList.setAdapter(adapter);
// enabling action bar app icon and behaving it as toggle button
getActionBar().setDisplayHomeAsUpEnabled(true);
getActionBar().setHomeButtonEnabled(true);
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout,
R.drawable.ic_drawer, // nav menu toggle icon
R.string.app_name, // nav drawer open - description for
// accessibility
R.string.app_name // nav drawer close - description for
// accessibility
) {
public void onDrawerClosed(View view) {
getActionBar().setTitle(mTitle);
// calling onPrepareOptionsMenu() to show action bar
// icons
invalidateOptionsMenu();
}
public void onDrawerOpened(View drawerView) {
getActionBar().setTitle(mDrawerTitle);
// calling onPrepareOptionsMenu() to hide action bar
// icons
invalidateOptionsMenu();
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
// if (savedInstanceState == null) {
// displayView(0);
//
// }
} else {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB_MR1) {
findViewById(R.id.config).setOnClickListener(new OnClickListener() {
public void onClick(View view) {