summaryrefslogtreecommitdiff
path: root/Source/Android/app/src/main/java/org
diff options
context:
space:
mode:
authorzackhow <zackhow@gmail.com>2018-10-04 20:01:05 -0400
committerzackhow <zackhow@gmail.com>2018-10-07 12:57:27 -0400
commite52be87bf1e4fbe94f644a035bfd3880aec101bc (patch)
treecb829929c58f461b19cbc2799479175ed91325a1 /Source/Android/app/src/main/java/org
parent58b0a284a85637a2a0f1f6e896fdc3a596487c36 (diff)
Android: Require user to enable savestate menus
With the nature of android updates invalidating save states, it's best to hide these options unless enabled by the user. The option to use savestates can now be enabled via the General settings menu.
Diffstat (limited to 'Source/Android/app/src/main/java/org')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java23
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java5
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java1
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/MenuFragment.java17
4 files changed, 46 insertions, 0 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java
index bfb891bc8d..226e022988 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java
@@ -33,6 +33,9 @@ import com.squareup.picasso.Picasso;
import org.dolphinemu.dolphinemu.NativeLibrary;
import org.dolphinemu.dolphinemu.R;
+import org.dolphinemu.dolphinemu.features.settings.model.BooleanSetting;
+import org.dolphinemu.dolphinemu.features.settings.model.Settings;
+import org.dolphinemu.dolphinemu.features.settings.utils.SettingsFile;
import org.dolphinemu.dolphinemu.fragments.EmulationFragment;
import org.dolphinemu.dolphinemu.fragments.MenuFragment;
import org.dolphinemu.dolphinemu.fragments.SaveLoadStateFragment;
@@ -65,6 +68,8 @@ public final class EmulationActivity extends AppCompatActivity
private SharedPreferences mPreferences;
private ControllerMappingHelper mControllerMappingHelper;
+ private Settings mSettings;
+
// So that MainActivity knows which view to invalidate before the return animation.
private int mPosition;
@@ -212,6 +217,8 @@ public final class EmulationActivity extends AppCompatActivity
mPlatform = gameToEmulate.getIntExtra(EXTRA_PLATFORM, 0);
mScreenPath = gameToEmulate.getStringExtra(EXTRA_SCREEN_PATH);
mPosition = gameToEmulate.getIntExtra(EXTRA_GRID_POSITION, -1);
+ mSettings = new Settings();
+ mSettings.loadSettings(null);
activityRecreated = false;
}
else
@@ -476,6 +483,17 @@ public final class EmulationActivity extends AppCompatActivity
getMenuInflater().inflate(R.menu.menu_emulation_wii, menu);
}
+ BooleanSetting enableSaveStates =
+ (BooleanSetting) mSettings.getSection(Settings.SECTION_INI_CORE)
+ .getSetting(SettingsFile.KEY_ENABLE_SAVE_STATES);
+ if (enableSaveStates != null && enableSaveStates.getValue())
+ {
+ menu.findItem(R.id.menu_quicksave).setVisible(true);
+ menu.findItem(R.id.menu_quickload).setVisible(true);
+ menu.findItem(R.id.menu_emulation_save_root).setVisible(true);
+ menu.findItem(R.id.menu_emulation_load_root).setVisible(true);
+ }
+
// Populate the checkbox value for joystick center on touch
menu.findItem(R.id.menu_emulation_joystick_rel_center)
.setChecked(mPreferences.getBoolean("joystickRelCenter", true));
@@ -929,4 +947,9 @@ public final class EmulationActivity extends AppCompatActivity
{
return activityRecreated;
}
+
+ public Settings getSettings()
+ {
+ return mSettings;
+ }
}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java
index 1aaf8eb4a3..b3585f8512 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java
@@ -211,6 +211,7 @@ public final class SettingsFragmentPresenter
Setting speedLimit = null;
Setting audioStretch = null;
Setting analytics = null;
+ Setting enableSaveState;
SettingSection coreSection = mSettings.getSection(Settings.SECTION_INI_CORE);
SettingSection analyticsSection = mSettings.getSection(Settings.SECTION_ANALYTICS);
@@ -221,6 +222,7 @@ public final class SettingsFragmentPresenter
speedLimit = coreSection.getSetting(SettingsFile.KEY_SPEED_LIMIT);
audioStretch = coreSection.getSetting(SettingsFile.KEY_AUDIO_STRETCH);
analytics = analyticsSection.getSetting(SettingsFile.KEY_ANALYTICS_ENABLED);
+ enableSaveState = coreSection.getSetting(SettingsFile.KEY_ENABLE_SAVE_STATES);
// TODO: Having different emuCoresEntries/emuCoresValues for each architecture is annoying.
// The proper solution would be to have one emuCoresEntries and one emuCoresValues
@@ -257,6 +259,9 @@ public final class SettingsFragmentPresenter
R.string.speed_limit, 0, 200, "%", 100, speedLimit));
sl.add(new CheckBoxSetting(SettingsFile.KEY_AUDIO_STRETCH, Settings.SECTION_INI_CORE,
R.string.audio_stretch, R.string.audio_stretch_description, false, audioStretch));
+ sl.add(new CheckBoxSetting(SettingsFile.KEY_ENABLE_SAVE_STATES, Settings.SECTION_INI_CORE,
+ R.string.enable_save_states, R.string.enable_save_states_description, false,
+ enableSaveState));
sl.add(new CheckBoxSetting(SettingsFile.KEY_ANALYTICS_ENABLED, Settings.SECTION_ANALYTICS,
R.string.analytics, 0, false, analytics));
}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java
index e86b68af69..1d74e68ab7 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java
@@ -49,6 +49,7 @@ public final class SettingsFile
public static final String KEY_OVERRIDE_GAME_CUBE_LANGUAGE = "OverrideGCLang";
public static final String KEY_SLOT_A_DEVICE = "SlotA";
public static final String KEY_SLOT_B_DEVICE = "SlotB";
+ public static final String KEY_ENABLE_SAVE_STATES = "EnableSaveStates";
public static final String KEY_ANALYTICS_ENABLED = "Enabled";
public static final String KEY_ANALYTICS_PERMISSION_ASKED = "PermissionAsked";
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/MenuFragment.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/MenuFragment.java
index fab99e6e70..7296946346 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/MenuFragment.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/MenuFragment.java
@@ -13,6 +13,9 @@ import android.widget.TextView;
import org.dolphinemu.dolphinemu.R;
import org.dolphinemu.dolphinemu.activities.EmulationActivity;
+import org.dolphinemu.dolphinemu.features.settings.model.BooleanSetting;
+import org.dolphinemu.dolphinemu.features.settings.model.Settings;
+import org.dolphinemu.dolphinemu.features.settings.utils.SettingsFile;
public final class MenuFragment extends Fragment implements View.OnClickListener
{
@@ -53,6 +56,20 @@ public final class MenuFragment extends Fragment implements View.OnClickListener
View rootView = inflater.inflate(R.layout.fragment_ingame_menu, container, false);
LinearLayout options = (LinearLayout) rootView.findViewById(R.id.layout_options);
+
+ BooleanSetting enableSaveStates =
+ (BooleanSetting) ((EmulationActivity) getActivity()).getSettings()
+ .getSection(Settings.SECTION_INI_CORE)
+ .getSetting(SettingsFile.KEY_ENABLE_SAVE_STATES);
+
+ if (enableSaveStates != null && enableSaveStates.getValue())
+ {
+ options.findViewById(R.id.menu_quicksave).setVisibility(View.VISIBLE);
+ options.findViewById(R.id.menu_quickload).setVisibility(View.VISIBLE);
+ options.findViewById(R.id.menu_emulation_save_root).setVisibility(View.VISIBLE);
+ options.findViewById(R.id.menu_emulation_load_root).setVisibility(View.VISIBLE);
+ }
+
for (int childIndex = 0; childIndex < options.getChildCount(); childIndex++)
{
Button button = (Button) options.getChildAt(childIndex);