mirror of
https://github.com/AngelAuraMC/Amethyst-Android.git
synced 2025-09-17 08:35:37 -04:00
Changes
- Add profile enabler-disabler - Change the lifecycle a bit - Fix: recreating PojavLauncherActivity causes crashes in Laun cherPreferences
This commit is contained in:
parent
14a460a22c
commit
095b62a100
@ -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<String> vlst = (ArrayList<String>) 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);
|
||||
|
@ -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() {
|
||||
|
@ -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()) {
|
||||
|
@ -54,6 +54,10 @@ public class ProfileEditor implements ExtraListener<ArrayList<String>> {
|
||||
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<ArrayList<String>> {
|
||||
}
|
||||
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<String,String>)ExtraCore.getValue("release_table")).get("release");
|
||||
case "latest-snapshot":
|
||||
selectedVersionId = ((Map<String,String>)ExtraCore.getValue("release_table")).get("snapshot");
|
||||
else if(prof.lastVersionId != null) {
|
||||
Map<String,String> releaseTable = (Map<String,String>)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<ArrayList<String>> {
|
||||
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<ArrayList<String>> {
|
||||
return false;
|
||||
}
|
||||
public interface EditSaveCallback {
|
||||
void onSave(String name, boolean isNew);
|
||||
void onSave(String name, boolean isNew, boolean isRemoving);
|
||||
}
|
||||
}
|
||||
|
@ -289,6 +289,9 @@
|
||||
<string name="profiles_editing">Editing profile</string>
|
||||
<string name="profiles_profile_name">Name</string>
|
||||
<string name="profiles_profile_version">Version</string>
|
||||
<string name="option_enable_profiles">Profiles</string>
|
||||
<string name="option_enable_profiles_descritption">Use Minecraft Launcher profiles instead of the regular version list. Supports icons!</string>
|
||||
<string name="vbo_hack_title">Disable VBOs</string>
|
||||
<string name="vbo_hack_description">Help with compatibility on some old versions</string>
|
||||
<string name="global_delete">Delete</string>
|
||||
</resources>
|
||||
|
@ -18,6 +18,11 @@
|
||||
android:defaultValue="false"
|
||||
android:key="vbo_disable_hack"
|
||||
/>
|
||||
<CheckBoxPreference
|
||||
android:defaultValue="false"
|
||||
android:key="enable_profiles"
|
||||
android:title="@string/option_enable_profiles"
|
||||
android:summary="@string/option_enable_profiles_descritption"/>
|
||||
|
||||
</PreferenceCategory>
|
||||
</PreferenceScreen>
|
Loading…
x
Reference in New Issue
Block a user