From b23787e5a44ca1f5b3ca98ff4cc959922438ce5c Mon Sep 17 00:00:00 2001 From: Mathias Boulay Date: Sun, 27 Aug 2023 17:36:09 +0200 Subject: [PATCH] Fix[profiles]: properly reload profiles on resume --- .../java/com/kdt/mcgui/mcVersionSpinner.java | 5 ++++ .../fragments/MainMenuFragment.java | 7 +++++- .../pojavlaunch/profiles/ProfileAdapter.java | 25 ++++++++++++++----- 3 files changed, 30 insertions(+), 7 deletions(-) diff --git a/app_pojavlauncher/src/main/java/com/kdt/mcgui/mcVersionSpinner.java b/app_pojavlauncher/src/main/java/com/kdt/mcgui/mcVersionSpinner.java index d0cd464c2..ae2e66f88 100644 --- a/app_pojavlauncher/src/main/java/com/kdt/mcgui/mcVersionSpinner.java +++ b/app_pojavlauncher/src/main/java/com/kdt/mcgui/mcVersionSpinner.java @@ -77,6 +77,11 @@ public class mcVersionSpinner extends ExtendedTextView { mProfileAdapter.setViewProfile(this, (String) mProfileAdapter.getItem(position), false); } + /** Reload profiles from the file, forcing the spinner to consider the new data */ + public void reloadProfiles(){ + mProfileAdapter.reloadProfiles(); + } + /** Initialize various behaviors */ private void init(){ // Setup various attributes diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/MainMenuFragment.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/MainMenuFragment.java index 25d04d01a..701a7a76b 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/MainMenuFragment.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/MainMenuFragment.java @@ -13,6 +13,8 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; +import com.kdt.mcgui.mcVersionSpinner; + import net.kdt.pojavlaunch.CustomControlsActivity; import net.kdt.pojavlaunch.R; import net.kdt.pojavlaunch.Tools; @@ -24,6 +26,8 @@ import net.kdt.pojavlaunch.value.launcherprofiles.LauncherProfiles; public class MainMenuFragment extends Fragment { public static final String TAG = "MainMenuFragment"; + private mcVersionSpinner mVersionSpinner; + public MainMenuFragment(){ super(R.layout.fragment_launcher); } @@ -37,6 +41,7 @@ public class MainMenuFragment extends Fragment { ImageButton mEditProfileButton = view.findViewById(R.id.edit_profile_button); Button mPlayButton = view.findViewById(R.id.play_button); + mVersionSpinner = view.findViewById(R.id.mc_version_spinner); mNewsButton.setOnClickListener(v -> Tools.openURL(requireActivity(), Tools.URL_HOME)); mCustomControlButton.setOnClickListener(v -> startActivity(new Intent(requireContext(), CustomControlsActivity.class))); @@ -60,7 +65,7 @@ public class MainMenuFragment extends Fragment { @Override public void onResume() { super.onResume(); - LauncherProfiles.load(); + mVersionSpinner.reloadProfiles(); } private void runInstallerWithConfirmation(boolean isCustomArgs) { diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/profiles/ProfileAdapter.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/profiles/ProfileAdapter.java index b2f0e02f3..91295d5b2 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/profiles/ProfileAdapter.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/profiles/ProfileAdapter.java @@ -31,15 +31,11 @@ public class ProfileAdapter extends BaseAdapter { private Map mProfiles; private final MinecraftProfile dummy = new MinecraftProfile(); private List mProfileList; - private final ProfileAdapterExtra[] mExtraEntires; + private ProfileAdapterExtra[] mExtraEntires; public ProfileAdapter(Context context, ProfileAdapterExtra[] extraEntries) { ProfileIconCache.initDefault(context); - LauncherProfiles.load(); - mProfiles = new HashMap<>(LauncherProfiles.mainProfileJson.profiles); - if(extraEntries == null) mExtraEntires = new ProfileAdapterExtra[0]; - else mExtraEntires = extraEntries; - mProfileList = new ArrayList<>(Arrays.asList(mProfiles.keySet().toArray(new String[0]))); + reloadProfiles(extraEntries); } /* * Gets how much profiles are loaded in the adapter right now @@ -67,6 +63,8 @@ public class ProfileAdapter extends BaseAdapter { return null; } + + public int resolveProfileIndex(String name) { return mProfileList.indexOf(name); } @@ -134,4 +132,19 @@ public class ProfileAdapter extends BaseAdapter { extendedTextView.setText(extra.name); extendedTextView.setBackgroundColor(Color.TRANSPARENT); } + + /** Reload profiles from the file */ + public void reloadProfiles(){ + LauncherProfiles.load(); + mProfiles = new HashMap<>(LauncherProfiles.mainProfileJson.profiles); + mProfileList = new ArrayList<>(Arrays.asList(mProfiles.keySet().toArray(new String[0]))); + notifyDataSetChanged(); + } + + /** Reload profiles from the file, with additional extra entries */ + public void reloadProfiles(ProfileAdapterExtra[] extraEntries) { + if(extraEntries == null) mExtraEntires = new ProfileAdapterExtra[0]; + else mExtraEntires = extraEntries; + this.reloadProfiles(); + } }