diff options
| author | JosJuice <josjuice@gmail.com> | 2020-08-05 19:47:45 +0200 |
|---|---|---|
| committer | JosJuice <josjuice@gmail.com> | 2020-08-05 19:50:11 +0200 |
| commit | a427eafa7beeb0b4f489b7188c312a8ad5bb8510 (patch) | |
| tree | 6dc5cde5bf079830c6745ceda5d7e327e11192b0 /Source/Android/app/src/main/java | |
| parent | 25ebc3c07c6310924d662b2209f9ba5d08006ea6 (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')
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; + } +} |
