summaryrefslogtreecommitdiff
path: root/Source/Android/app/src/main/java
diff options
context:
space:
mode:
authorJosJuice <josjuice@gmail.com>2020-08-05 19:47:45 +0200
committerJosJuice <josjuice@gmail.com>2020-08-05 19:50:11 +0200
commita427eafa7beeb0b4f489b7188c312a8ad5bb8510 (patch)
tree6dc5cde5bf079830c6745ceda5d7e327e11192b0 /Source/Android/app/src/main/java
parent25ebc3c07c6310924d662b2209f9ba5d08006ea6 (diff)
Android: Persist Settings using ViewModel
Just for maintainability. This is a shorter and more standard solution compared to our current one where the Fragment persists the Settings and passes it to the Activity.
Diffstat (limited to 'Source/Android/app/src/main/java')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivity.java13
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityPresenter.java10
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityView.java9
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.java11
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java13
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentView.java9
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsViewModel.java15
7 files changed, 23 insertions, 57 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivity.java
index 33626d32dc..5d76d69363 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivity.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivity.java
@@ -10,6 +10,7 @@ import android.provider.Settings;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.fragment.app.FragmentTransaction;
+import androidx.lifecycle.ViewModelProvider;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import androidx.appcompat.app.AppCompatActivity;
@@ -31,7 +32,7 @@ public final class SettingsActivity extends AppCompatActivity implements Setting
private static final String ARG_MENU_TAG = "menu_tag";
private static final String ARG_GAME_ID = "game_id";
private static final String FRAGMENT_TAG = "settings";
- private SettingsActivityPresenter mPresenter = new SettingsActivityPresenter(this);
+ private SettingsActivityPresenter mPresenter;
private ProgressDialog dialog;
@@ -62,6 +63,8 @@ public final class SettingsActivity extends AppCompatActivity implements Setting
Intent launcher = getIntent();
String gameID = launcher.getStringExtra(ARG_GAME_ID);
MenuTag menuTag = (MenuTag) launcher.getSerializableExtra(ARG_MENU_TAG);
+
+ mPresenter = new SettingsActivityPresenter(this, getSettings());
mPresenter.onCreate(savedInstanceState, menuTag, gameID, getApplicationContext());
}
@@ -241,13 +244,7 @@ public final class SettingsActivity extends AppCompatActivity implements Setting
@Override
public org.dolphinemu.dolphinemu.features.settings.model.Settings getSettings()
{
- return mPresenter.getSettings();
- }
-
- @Override
- public void setSettings(org.dolphinemu.dolphinemu.features.settings.model.Settings settings)
- {
- mPresenter.setSettings(settings);
+ return new ViewModelProvider(this).get(SettingsViewModel.class).getSettings();
}
@Override
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityPresenter.java
index a66391d8bb..71c47cbe01 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityPresenter.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityPresenter.java
@@ -21,7 +21,7 @@ public final class SettingsActivityPresenter
private SettingsActivityView mView;
- private Settings mSettings = new Settings();
+ private Settings mSettings;
private int mStackCount;
@@ -35,9 +35,10 @@ public final class SettingsActivityPresenter
private final Set<String> modifiedSettings = new HashSet<>();
- SettingsActivityPresenter(SettingsActivityView view)
+ SettingsActivityPresenter(SettingsActivityView view, Settings settings)
{
mView = view;
+ mSettings = settings;
}
public void onCreate(Bundle savedInstanceState, MenuTag menuTag, String gameId, Context context)
@@ -121,11 +122,6 @@ public final class SettingsActivityPresenter
}
}
- public void setSettings(Settings settings)
- {
- mSettings = settings;
- }
-
public Settings getSettings()
{
return mSettings;
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityView.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityView.java
index 3ad0c6b9cd..266cb499bb 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityView.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityView.java
@@ -29,15 +29,6 @@ public interface SettingsActivityView
Settings getSettings();
/**
- * Used to provide the Activity with Settings HashMaps if a Fragment already
- * has one; for example, if a rotation occurs, the Fragment will not be killed,
- * but the Activity will, so the Activity needs to have its HashMaps resupplied.
- *
- * @param settings The ArrayList of all the Settings HashMaps.
- */
- void setSettings(Settings settings);
-
- /**
* Called when an asynchronous load operation completes.
*
* @param settings The (possibly null) result of the ini load operation.
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.java
index 3c1767b45e..69444b90c0 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.java
@@ -89,7 +89,6 @@ public final class SettingsFragment extends Fragment implements SettingsFragment
super.onAttach(context);
mActivity = (SettingsActivityView) context;
- mPresenter.onAttach();
}
@Override
@@ -158,16 +157,6 @@ public final class SettingsFragment extends Fragment implements SettingsFragment
}
@Override
- public void passSettingsToActivity(
- org.dolphinemu.dolphinemu.features.settings.model.Settings settings)
- {
- if (mActivity != null)
- {
- mActivity.setSettings(settings);
- }
- }
-
- @Override
public void showSettingsList(ArrayList<SettingsItem> settingsList)
{
mAdapter.setSettings(settingsList);
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 fd3d943def..5c0ce066a4 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
@@ -82,19 +82,6 @@ public final class SettingsFragmentPresenter
setSettings(settings);
}
- /**
- * If the screen is rotated, the Activity will forget the settings map. This fragment
- * won't, though; so rather than have the Activity reload from disk, have the fragment pass
- * the settings map back to the Activity.
- */
- public void onAttach()
- {
- if (mSettings != null)
- {
- mView.passSettingsToActivity(mSettings);
- }
- }
-
public void putSetting(Setting setting)
{
mSettings.getSection(setting.getSection()).putSetting(setting);
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentView.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentView.java
index 2ea80394de..6de8b0f110 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentView.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentView.java
@@ -23,15 +23,6 @@ public interface SettingsFragmentView
void onSettingsFileLoaded(Settings settings);
/**
- * Pass a settings HashMap to the containing activity, so that it can
- * share the HashMap with other SettingsFragments; useful so that rotations
- * do not require an additional load operation.
- *
- * @param settings An ArrayList containing all the settings HashMaps.
- */
- void passSettingsToActivity(Settings settings);
-
- /**
* Pass an ArrayList to the View so that it can be displayed on screen.
*
* @param settingsList The result of converting the HashMap to an ArrayList
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsViewModel.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsViewModel.java
new file mode 100644
index 0000000000..4ca0d05dcd
--- /dev/null
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsViewModel.java
@@ -0,0 +1,15 @@
+package org.dolphinemu.dolphinemu.features.settings.ui;
+
+import org.dolphinemu.dolphinemu.features.settings.model.Settings;
+
+import androidx.lifecycle.ViewModel;
+
+public class SettingsViewModel extends ViewModel
+{
+ private final Settings mSettings = new Settings();
+
+ public Settings getSettings()
+ {
+ return mSettings;
+ }
+}