diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/SearchModFragment.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/SearchModFragment.java index 128fb1a6a..70f235865 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/SearchModFragment.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/fragments/SearchModFragment.java @@ -1,16 +1,21 @@ package net.kdt.pojavlaunch.fragments; +import android.content.DialogInterface; import android.content.res.ColorStateList; import android.graphics.Color; import android.os.Bundle; +import android.util.Log; +import android.view.LayoutInflater; import android.view.View; import android.widget.Button; import android.widget.EditText; +import android.widget.ImageButton; import android.widget.ProgressBar; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.appcompat.app.AlertDialog; import androidx.core.math.MathUtils; import androidx.fragment.app.Fragment; import androidx.recyclerview.widget.LinearLayoutManager; @@ -36,9 +41,8 @@ public class SearchModFragment extends Fragment implements ModItemAdapter.Search } }; - private TextView mSelectedVersion; - private Button mSelectVersionButton; private EditText mSearchEditText; + private ImageButton mFilterButton; private RecyclerView mRecyclerview; private ModItemAdapter mModItemAdapter; private ProgressBar mSearchProgressBar; @@ -65,10 +69,9 @@ public class SearchModFragment extends Fragment implements ModItemAdapter.Search mOverlay = view.findViewById(R.id.search_mod_overlay); mSearchEditText = view.findViewById(R.id.search_mod_edittext); mSearchProgressBar = view.findViewById(R.id.search_mod_progressbar); - mSelectedVersion = view.findViewById(R.id.search_mod_selected_mc_version_textview); - mSelectVersionButton = view.findViewById(R.id.search_mod_mc_version_button); mRecyclerview = view.findViewById(R.id.search_mod_list); mStatusTextView = view.findViewById(R.id.search_mod_status_text); + mFilterButton = view.findViewById(R.id.search_mod_filter); mDefaultTextColor = mStatusTextView.getTextColors(); @@ -77,12 +80,6 @@ public class SearchModFragment extends Fragment implements ModItemAdapter.Search mRecyclerview.addOnScrollListener(mOverlayPositionListener); - // Setup the expendable list behavior - mSelectVersionButton.setOnClickListener(v -> VersionSelectorDialog.open(v.getContext(), true, (id, snapshot)->{ - mSelectedVersion.setText(id); - mSearchFilters.mcVersion = id; - })); - mSearchEditText.setOnEditorActionListener((v, actionId, event) -> { mSearchProgressBar.setVisibility(View.VISIBLE); mSearchFilters.name = mSearchEditText.getText().toString(); @@ -97,6 +94,7 @@ public class SearchModFragment extends Fragment implements ModItemAdapter.Search mRecyclerview.getPaddingRight(), mRecyclerview.getPaddingBottom()); }); + mFilterButton.setOnClickListener(v -> displayFilterDialog()); } @Override @@ -115,7 +113,7 @@ public class SearchModFragment extends Fragment implements ModItemAdapter.Search public void onSearchError(int error) { mSearchProgressBar.setVisibility(View.GONE); mStatusTextView.setVisibility(View.VISIBLE); - switch(error) { + switch (error) { case ERROR_INTERNAL: mStatusTextView.setTextColor(Color.RED); mStatusTextView.setText(R.string.search_modpack_error); @@ -126,4 +124,32 @@ public class SearchModFragment extends Fragment implements ModItemAdapter.Search break; } } + + private void displayFilterDialog() { + AlertDialog dialog = new AlertDialog.Builder(requireContext()) + .setView(R.layout.dialog_mod_filters) + .create(); + + // setup the view behavior + dialog.setOnShowListener(dialogInterface -> { + TextView mSelectedVersion = dialog.findViewById(R.id.search_mod_selected_mc_version_textview); + Button mSelectVersionButton = dialog.findViewById(R.id.search_mod_mc_version_button); + Button mApplyButton = dialog.findViewById(R.id.search_mod_apply_filters); + + // Setup the expendable list behavior + mSelectVersionButton.setOnClickListener(v -> VersionSelectorDialog.open(v.getContext(), true, (id, snapshot)-> mSelectedVersion.setText(id))); + + // Apply visually all the current settings + mSelectedVersion.setText(mSearchFilters.mcVersion); + + // Apply the new settings + mApplyButton.setOnClickListener(v -> { + mSearchFilters.mcVersion = mSelectedVersion.getText().toString(); + dialogInterface.dismiss(); + }); + }); + + + dialog.show(); + } } diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/ModItemAdapter.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/ModItemAdapter.java index 8e140ea1d..d80a1c9d6 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/ModItemAdapter.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/modloaders/modpacks/ModItemAdapter.java @@ -265,7 +265,7 @@ public class ModItemAdapter extends RecyclerView.Adapter + + diff --git a/app_pojavlauncher/src/main/res/layout/dialog_mod_filters.xml b/app_pojavlauncher/src/main/res/layout/dialog_mod_filters.xml new file mode 100644 index 000000000..2965427d1 --- /dev/null +++ b/app_pojavlauncher/src/main/res/layout/dialog_mod_filters.xml @@ -0,0 +1,60 @@ + + + + + + + + +