diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/BaseLauncherActivity.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/BaseLauncherActivity.java index 6d064386c..00c1e5ea7 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/BaseLauncherActivity.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/BaseLauncherActivity.java @@ -118,7 +118,7 @@ public abstract class BaseLauncherActivity extends BaseActivity { } } }else{ - mTask.execute(mProfile.selectedProfile); + mTask.execute(mProfile.selectedVersion); } } @@ -201,7 +201,7 @@ public abstract class BaseLauncherActivity extends BaseActivity { @Override protected void onResume(){ super.onResume(); - + new RefreshVersionListTask(this).execute(); if(!LauncherPreferences.PREF_ENABLE_PROFILES) { ArrayList vlst = (ArrayList) ExtraCore.getValue("lac_version_list"); @@ -218,6 +218,31 @@ public abstract class BaseLauncherActivity extends BaseActivity { }; ExtraCore.addExtraListener("lac_version_list",versionListener); } + if(listRefreshListener != null) { + LauncherPreferences.DEFAULT_PREF.unregisterOnSharedPreferenceChangeListener(listRefreshListener); + } + listRefreshListener = (sharedPreferences, key) -> { + if(key.startsWith("vertype_")) { + System.out.println("Verlist update needed!"); + LauncherPreferences.PREF_VERTYPE_RELEASE = sharedPreferences.getBoolean("vertype_release",true); + LauncherPreferences.PREF_VERTYPE_SNAPSHOT = sharedPreferences.getBoolean("vertype_snapshot",false); + LauncherPreferences.PREF_VERTYPE_OLDALPHA = sharedPreferences.getBoolean("vertype_oldalpha",false); + LauncherPreferences.PREF_VERTYPE_OLDBETA = sharedPreferences.getBoolean("vertype_oldbeta",false); + new RefreshVersionListTask(this).execute(); + } + }; + LauncherPreferences.DEFAULT_PREF.registerOnSharedPreferenceChangeListener(listRefreshListener); + if(profileEnableListener != null) { + LauncherPreferences.DEFAULT_PREF.unregisterOnSharedPreferenceChangeListener(profileEnableListener); + } + profileEnableListener = ((sharedPreferences, key) -> { + if(key.equals("enable_profiles")) { + LauncherPreferences.PREF_ENABLE_PROFILES = sharedPreferences.getBoolean("enable_profiles",false); + this.recreate(); + profileEnableListener = null; + } + }); + LauncherPreferences.DEFAULT_PREF.registerOnSharedPreferenceChangeListener(profileEnableListener); System.out.println("call to onResume"); final int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION; final View decorView = getWindow().getDecorView(); @@ -226,20 +251,10 @@ public abstract class BaseLauncherActivity extends BaseActivity { } SharedPreferences.OnSharedPreferenceChangeListener listRefreshListener = null; + SharedPreferences.OnSharedPreferenceChangeListener profileEnableListener = null; @Override protected void onResumeFragments() { super.onResumeFragments(); - if(listRefreshListener == null) { - final BaseLauncherActivity thiz = this; - listRefreshListener = (sharedPreferences, key) -> { - if(key.startsWith("vertype_")) { - System.out.println("Verlist update needed!"); - new RefreshVersionListTask(thiz).execute(); - } - }; - } - LauncherPreferences.DEFAULT_PREF.registerOnSharedPreferenceChangeListener(listRefreshListener); - new RefreshVersionListTask(this).execute(); System.out.println("call to onResumeFragments"); mRuntimeConfigDialog = new MultiRTConfigDialog(); mRuntimeConfigDialog.prepare(this); diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/PojavLauncherActivity.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/PojavLauncherActivity.java index add0d2430..c698fa371 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/PojavLauncherActivity.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/PojavLauncherActivity.java @@ -87,6 +87,12 @@ public class PojavLauncherActivity extends BaseLauncherActivity public PojavLauncherActivity() { } + @Override + protected void onDestroy() { + ExtraCore.removeExtraListenerFromValue("back_preference", backPreferenceListener); + super.onDestroy(); + } + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -189,9 +195,12 @@ public class PojavLauncherActivity extends BaseLauncherActivity mVersionSelector.setAdapter(adapterVer); }else{ ProfileAdapter pad = new ProfileAdapter(this); - ProfileEditor dialog = new ProfileEditor(this,(name, isNew)->{ + ProfileEditor dialog = new ProfileEditor(this,(name, isNew, deleting)->{ LauncherProfiles.update(); if(isNew) { + mVersionSelector.setSelection(pad.resolveProfileIndex(name)); + } + if(deleting) { mVersionSelector.setSelection(0); } pad.notifyDataSetChanged(); @@ -206,6 +215,7 @@ public class PojavLauncherActivity extends BaseLauncherActivity String profileName = p1.getItemAtPosition(p3).toString(); if(profileName.equals(ProfileAdapter.CREATE_PROFILE_MAGIC)) { dialog.show(profileName); + mVersionSelector.setSelection(0); }else { mProfile.selectedProfile = p1.getItemAtPosition(p3).toString(); PojavProfile.setCurrentProfile(PojavLauncherActivity.this, mProfile); @@ -242,9 +252,6 @@ public class PojavLauncherActivity extends BaseLauncherActivity } }); changeLookAndFeel(PREF_HIDE_SIDEBAR); - } - private void setupProfileSelector() { - } private void selectTabPage(int pageIndex){ viewPager.setCurrentItem(pageIndex); @@ -270,6 +277,7 @@ public class PojavLauncherActivity extends BaseLauncherActivity } finally { basicVersionList = versions.toArray(new String[0]); + ExtraCore.setValue("lac_version_list",versions); } } private void pickAccount() { diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/LauncherPreferences.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/LauncherPreferences.java index e0f5fc330..38c524040 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/LauncherPreferences.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/LauncherPreferences.java @@ -68,6 +68,7 @@ public class LauncherPreferences PREF_SUSTAINED_PERFORMANCE = DEFAULT_PREF.getBoolean("sustainedPerformance", false); PREF_GLES_SHRINK_HACK = DEFAULT_PREF.getString("gl4es_shrink_hack", "0"); PREF_VBO_DISABLE_HACK = DEFAULT_PREF.getBoolean("vbo_disable_hack", false); + PREF_ENABLE_PROFILES = DEFAULT_PREF.getBoolean("enable_profiles", false); /* if (PREF_CUSTOM_JAVA_ARGS.isEmpty()) { diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/profiles/ProfileEditor.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/profiles/ProfileEditor.java index 8a181455f..d785a9e43 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/profiles/ProfileEditor.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/profiles/ProfileEditor.java @@ -54,6 +54,10 @@ public class ProfileEditor implements ExtraListener> { profileIconView = mainView.findViewById(R.id.vprof_editor_icon); bldr.setPositiveButton(R.string.global_save,this::save); bldr.setNegativeButton(android.R.string.cancel,(dialog,which)->destroy(dialog)); + bldr.setNeutralButton(R.string.global_delete,(dialogInterface, i) -> { + LauncherProfiles.mainProfileJson.profiles.remove(editingProfile); + this.cb.onSave(editingProfile,false, true); + }); bldr.setOnDismissListener(this::destroy); dialog = bldr.create(); } @@ -84,12 +88,20 @@ public class ProfileEditor implements ExtraListener> { } if(prof.lastVersionId != null && !"latest-release".equals(prof.lastVersionId) && !"latest-snapshot".equals(prof.lastVersionId)) selectedVersionId = prof.lastVersionId; - else if(prof.lastVersionId != null) switch (prof.lastVersionId) { - case "latest-release": - selectedVersionId = ((Map)ExtraCore.getValue("release_table")).get("release"); - case "latest-snapshot": - selectedVersionId = ((Map)ExtraCore.getValue("release_table")).get("snapshot"); + else if(prof.lastVersionId != null) { + Map releaseTable = (Map)ExtraCore.getValue("release_table"); + if(releaseTable != null) { + switch (prof.lastVersionId) { + case "latest-release": + selectedVersionId = releaseTable.get("release"); + case "latest-snapshot": + selectedVersionId = releaseTable.get("snapshot"); + } }else{ + selectedVersionId = null; + } + } + else{ if(PojavLauncherActivity.basicVersionList.length > 0) { selectedVersionId = PojavLauncherActivity.basicVersionList[0]; } @@ -115,7 +127,7 @@ public class ProfileEditor implements ExtraListener> { prof.name = profileNameView.getText().toString(); prof.lastVersionId = (String)versionSpinner.getSelectedItem(); LauncherProfiles.mainProfileJson.profiles.put(editingProfile,prof); - cb.onSave(editingProfile,isNew); + cb.onSave(editingProfile,isNew, false); destroy(dialog); } public void destroy(@NonNull DialogInterface dialog) { @@ -131,6 +143,6 @@ public class ProfileEditor implements ExtraListener> { return false; } public interface EditSaveCallback { - void onSave(String name, boolean isNew); + void onSave(String name, boolean isNew, boolean isRemoving); } } diff --git a/app_pojavlauncher/src/main/res/values/strings.xml b/app_pojavlauncher/src/main/res/values/strings.xml index 89c792766..f6f51f13b 100644 --- a/app_pojavlauncher/src/main/res/values/strings.xml +++ b/app_pojavlauncher/src/main/res/values/strings.xml @@ -289,6 +289,9 @@ Editing profile Name Version + Profiles + Use Minecraft Launcher profiles instead of the regular version list. Supports icons! Disable VBOs Help with compatibility on some old versions + Delete diff --git a/app_pojavlauncher/src/main/res/xml/pref_experimental.xml b/app_pojavlauncher/src/main/res/xml/pref_experimental.xml index f491e3cc6..b4286bc49 100644 --- a/app_pojavlauncher/src/main/res/xml/pref_experimental.xml +++ b/app_pojavlauncher/src/main/res/xml/pref_experimental.xml @@ -18,6 +18,11 @@ android:defaultValue="false" android:key="vbo_disable_hack" /> + \ No newline at end of file