diff --git a/app_pojavlauncher/src/main/assets/plugins/RememberMyLogin.zip b/app_pojavlauncher/src/main/assets/plugins/RememberMyLogin.zip index 2048a769c..7f177b61f 100644 Binary files a/app_pojavlauncher/src/main/assets/plugins/RememberMyLogin.zip and b/app_pojavlauncher/src/main/assets/plugins/RememberMyLogin.zip differ diff --git a/app_pojavlauncher/src/main/assets/rt4.jar b/app_pojavlauncher/src/main/assets/rt4.jar index c87bb8dc5..22a89a25e 100644 Binary files a/app_pojavlauncher/src/main/assets/rt4.jar and b/app_pojavlauncher/src/main/assets/rt4.jar differ diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/DummyLauncher.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/DummyLauncher.java index 24d9e5b36..ac50360b8 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/DummyLauncher.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/DummyLauncher.java @@ -2,6 +2,7 @@ package net.kdt.pojavlaunch; import android.annotation.SuppressLint; import android.app.Dialog; +import android.content.DialogInterface; import android.content.Intent; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; @@ -15,7 +16,17 @@ import android.view.Window; import android.widget.Button; import android.widget.Toast; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentTransaction; + import com.google.android.material.floatingactionbutton.FloatingActionButton; +import com.kdt.mcgui.ProgressLayout; + +import net.kdt.pojavlaunch.extra.ExtraConstants; +import net.kdt.pojavlaunch.extra.ExtraCore; +import net.kdt.pojavlaunch.prefs.screens.LauncherPreferenceFragment; +import net.kdt.pojavlaunch.progresskeeper.ProgressKeeper; +import net.kdt.pojavlaunch.services.ProgressServiceKeeper; import java.io.File; import java.io.FileOutputStream; @@ -29,6 +40,8 @@ public class DummyLauncher extends BaseActivity { private Button playSD; private static final int FILE_SELECT_CODE_JSON = 0; private static final int FILE_SELECT_CODE_ZIP = 1; + private ProgressServiceKeeper mProgressServiceKeeper; + private ProgressLayout mProgressLayout; @Override protected void onCreate(Bundle savedInstanceState) { @@ -37,16 +50,30 @@ public class DummyLauncher extends BaseActivity { fab = findViewById(R.id.myFab); playHD = findViewById(R.id.playHD); playSD = findViewById(R.id.playSD); + mProgressLayout = findViewById(R.id.progress_layout); + + ProgressKeeper.addTaskCountListener((mProgressServiceKeeper = new ProgressServiceKeeper(this))); + ProgressKeeper.addTaskCountListener(mProgressLayout); + + mProgressLayout.observe(ProgressLayout.UNPACK_RUNTIME); + mProgressLayout.observe(ProgressLayout.INSTALL_MODPACK); playHD.setOnClickListener(view -> { Log.i("downthecrop","hello from play HD touch"); - // Launch MainActivity.java here and call runCraft() + if(mProgressLayout.hasProcesses()){ + Toast.makeText(this, R.string.tasks_ongoing, Toast.LENGTH_LONG).show(); + return; + } Intent intent = new Intent(DummyLauncher.this, MainActivity.class); startActivity(intent); }); playSD.setOnClickListener(view -> { Log.i("downthecrop","hello from play SD touch"); + if(mProgressLayout.hasProcesses()){ + Toast.makeText(this, R.string.tasks_ongoing, Toast.LENGTH_LONG).show(); + return; + } Intent intent = new Intent(DummyLauncher.this, JavaGUILauncherActivity.class); startActivity(intent); }); @@ -57,33 +84,8 @@ public class DummyLauncher extends BaseActivity { @SuppressLint("ClickableViewAccessibility") private void showBottomDialog() { - final Dialog dialog = new Dialog(this); - dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); - dialog.setContentView(R.layout.bottomsheetlayout); - dialog.show(); - dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT); - dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); - dialog.getWindow().setGravity(Gravity.BOTTOM); - - final Button loadConfig = dialog.findViewById(R.id.loadConfig); - final Button loadPlugin = dialog.findViewById(R.id.loadPlugin); - - loadConfig.setOnTouchListener((v, event) -> { - if (event.getAction() == MotionEvent.ACTION_DOWN) { - showFileChooser(FILE_SELECT_CODE_JSON); - return true; - } - return false; - }); - - loadPlugin.setOnTouchListener((v, event) -> { - if (event.getAction() == MotionEvent.ACTION_DOWN) { - showFileChooser(FILE_SELECT_CODE_ZIP); - return true; - } - return false; - }); - + MyDialogFragment dialog = new MyDialogFragment(); + dialog.show(getSupportFragmentManager(), "tag"); } private void showFileChooser(int requestCode) { @@ -149,4 +151,9 @@ public class DummyLauncher extends BaseActivity { super.onActivityResult(requestCode, resultCode, data); } + @Override + protected void onDestroy() { + super.onDestroy(); + ProgressKeeper.removeTaskCountListener(mProgressServiceKeeper); + } } \ No newline at end of file diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/MyDialogFragment.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/MyDialogFragment.java new file mode 100644 index 000000000..e7aa16703 --- /dev/null +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/MyDialogFragment.java @@ -0,0 +1,115 @@ +package net.kdt.pojavlaunch; + +import android.app.Dialog; +import android.content.Intent; +import android.graphics.Color; +import android.graphics.drawable.ColorDrawable; +import android.os.Bundle; +import android.util.Log; +import android.view.Gravity; +import android.view.MotionEvent; +import android.view.ViewGroup; +import android.view.Window; +import android.widget.Button; +import android.widget.Toast; + +import androidx.annotation.NonNull; +import androidx.fragment.app.DialogFragment; +import androidx.fragment.app.FragmentManager; +import androidx.fragment.app.FragmentTransaction; + +import net.kdt.pojavlaunch.extra.ExtraConstants; +import net.kdt.pojavlaunch.extra.ExtraCore; +import net.kdt.pojavlaunch.extra.ExtraListener; +import net.kdt.pojavlaunch.prefs.screens.LauncherPreferenceFragment; + +public class MyDialogFragment extends DialogFragment { + + private static final int FILE_SELECT_CODE_JSON = 0; + private static final int FILE_SELECT_CODE_ZIP = 1; + + @NonNull + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + final Dialog dialog = new Dialog(getActivity()); + dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); + dialog.setContentView(R.layout.bottomsheetlayout); + dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); + dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); + dialog.getWindow().setGravity(Gravity.BOTTOM); + + final Button loadConfig = dialog.findViewById(R.id.loadConfig); + final Button loadPlugin = dialog.findViewById(R.id.loadPlugin); + + loadConfig.setOnTouchListener((v, event) -> { + if (event.getAction() == MotionEvent.ACTION_DOWN) { + showFileChooser(FILE_SELECT_CODE_JSON); + return true; + } + return false; + }); + + loadPlugin.setOnTouchListener((v, event) -> { + if (event.getAction() == MotionEvent.ACTION_DOWN) { + showFileChooser(FILE_SELECT_CODE_ZIP); + return true; + } + return false; + }); + + + // Load the PreferenceFragment in the Dialog + FragmentManager fm = getChildFragmentManager(); + FragmentTransaction ft = fm.beginTransaction(); + LauncherPreferenceFragment prefFragment = new LauncherPreferenceFragment(); + ft.replace(R.id.prefContainer, prefFragment); + ft.commit(); + + ExtraCore.addExtraListener(ExtraConstants.BACK_PREFERENCE, mBackPreferenceListener); + + return dialog; + } + + /* Listener for the back button in settings */ + private final ExtraListener mBackPreferenceListener = (key, value) -> { + if(value.equals("true")) { + // This is a very messy way to do things but it works. + FragmentManager fm = getChildFragmentManager(); + FragmentTransaction ft = fm.beginTransaction(); + LauncherPreferenceFragment prefFragment = new LauncherPreferenceFragment(); + ft.replace(R.id.prefContainer, prefFragment); + ft.commit(); + } + return false; + }; + + private void showFileChooser(int requestCode) { + Intent intent = new Intent(Intent.ACTION_GET_CONTENT); + + switch(requestCode){ + case FILE_SELECT_CODE_JSON: + intent.setType("application/json"); + intent.addCategory(Intent.CATEGORY_OPENABLE); + break; + case FILE_SELECT_CODE_ZIP: + intent.setType("application/zip"); + intent.addCategory(Intent.CATEGORY_OPENABLE); + break; + default: + intent.setType("*/*"); + intent.addCategory(Intent.CATEGORY_OPENABLE); + } + + + + try { + startActivityForResult( + Intent.createChooser(intent, "Select a File to Upload"), + requestCode); + } catch (android.content.ActivityNotFoundException ex) { + // Potentially direct the user to the Market with a Dialog + Toast.makeText(this.getContext(), "Please install a File Manager.", + Toast.LENGTH_SHORT).show(); + } + } +} diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java index 390701184..155b71e36 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/Tools.java @@ -178,6 +178,8 @@ public final class Tools { getCacioJavaArgs(javaArgList, runtime.javaVersion == 8); javaArgList.add("-DpluginDir="+ Tools.DIR_DATA + "/plugins/"); + javaArgList.add("-DglfwWidth="+CallbackBridge.windowWidth); + javaArgList.add("-DglfwHeight="+CallbackBridge.windowHeight); javaArgList.add("-DconfigFile="+Tools.DIR_DATA + "/config.json"); javaArgList.add("-cp"); javaArgList.add(getLWJGL3ClassPath()+":"+Tools.DIR_DATA+"/rt4.jar"); diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/BackButtonPreference.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/BackButtonPreference.java index 7a6678586..22a4be7f1 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/BackButtonPreference.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/BackButtonPreference.java @@ -1,10 +1,13 @@ package net.kdt.pojavlaunch.prefs; +import android.app.Activity; import android.content.Context; import android.util.AttributeSet; +import android.util.Log; import androidx.preference.Preference; +import net.kdt.pojavlaunch.LauncherActivity; import net.kdt.pojavlaunch.R; import net.kdt.pojavlaunch.extra.ExtraConstants; import net.kdt.pojavlaunch.extra.ExtraCore; diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/screens/LauncherPreferenceVideoFragment.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/screens/LauncherPreferenceVideoFragment.java index 319121887..61d0e9b82 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/screens/LauncherPreferenceVideoFragment.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/prefs/screens/LauncherPreferenceVideoFragment.java @@ -22,7 +22,7 @@ public class LauncherPreferenceVideoFragment extends LauncherPreferenceFragment addPreferencesFromResource(R.xml.pref_video); //Disable notch checking behavior on android 8.1 and below. - findPreference("ignoreNotch").setVisible(Build.VERSION.SDK_INT >= Build.VERSION_CODES.P && PREF_NOTCH_SIZE > 0); + findPreference("ignoreNotch").setVisible(Build.VERSION.SDK_INT >= Build.VERSION_CODES.P); CustomSeekBarPreference seek5 = findPreference("resolutionRatio"); seek5.setMin(25); diff --git a/app_pojavlauncher/src/main/res/layout/activity_dummy_launcher.xml b/app_pojavlauncher/src/main/res/layout/activity_dummy_launcher.xml index 17e70e35b..42d002dae 100644 --- a/app_pojavlauncher/src/main/res/layout/activity_dummy_launcher.xml +++ b/app_pojavlauncher/src/main/res/layout/activity_dummy_launcher.xml @@ -61,4 +61,11 @@ app:layout_constraintEnd_toEndOf="@+id/imageView2" tools:srcCompat="@tools:sample/avatars" /> + + diff --git a/app_pojavlauncher/src/main/res/layout/bottomsheetlayout.xml b/app_pojavlauncher/src/main/res/layout/bottomsheetlayout.xml index c39ce1768..11640b8ac 100644 --- a/app_pojavlauncher/src/main/res/layout/bottomsheetlayout.xml +++ b/app_pojavlauncher/src/main/res/layout/bottomsheetlayout.xml @@ -13,7 +13,13 @@ + android:orientation="vertical"> + + @@ -197,16 +203,10 @@ android:textSize="16sp" /> + + - - - \ No newline at end of file