From 47a4a43774fa1dd5ebad9f0da3be116c5df872a1 Mon Sep 17 00:00:00 2001 From: SSimco <37044560+SSimco@users.noreply.github.com> Date: Sun, 13 Oct 2024 20:01:12 +0300 Subject: [PATCH] Updated layout --- .../main/java/info/cemu/Cemu/gameview/GameAdapter.java | 6 +++++- .../info/cemu/Cemu/gameview/GameDetailsFragment.java | 2 +- .../java/info/cemu/Cemu/gameview/GamesFragment.java | 10 ++++++++++ .../cemu/Cemu/nativeinterface/NativeGameTitles.java | 3 +++ .../graphicpacks/GraphicPackRecyclerViewItem.java | 10 +++++----- src/android/app/src/main/res/layout/layout_button.xml | 3 ++- .../src/main/res/layout/layout_controller_input.xml | 1 + .../app/src/main/res/layout/layout_graphic_pack.xml | 6 +++--- .../app/src/main/res/layout/layout_simple_button.xml | 2 +- .../src/main/res/layout/layout_single_selection.xml | 1 + 10 files changed, 32 insertions(+), 12 deletions(-) diff --git a/src/android/app/src/main/java/info/cemu/Cemu/gameview/GameAdapter.java b/src/android/app/src/main/java/info/cemu/Cemu/gameview/GameAdapter.java index 82a02251..3e701931 100644 --- a/src/android/app/src/main/java/info/cemu/Cemu/gameview/GameAdapter.java +++ b/src/android/app/src/main/java/info/cemu/Cemu/gameview/GameAdapter.java @@ -14,6 +14,7 @@ import androidx.recyclerview.widget.DiffUtil; import androidx.recyclerview.widget.ListAdapter; import androidx.recyclerview.widget.RecyclerView; +import java.util.ArrayList; import java.util.List; import java.util.Locale; import java.util.stream.Collectors; @@ -58,7 +59,10 @@ public class GameAdapter extends ListAdapter { @Override public void submitList(@Nullable List list) { orignalGameList = list; - if (filterText == null || filterText.isBlank() || orignalGameList == null) { + if (orignalGameList == null) { + orignalGameList = new ArrayList<>(); + } + if (filterText == null || filterText.isBlank()) { super.submitList(orignalGameList); return; } diff --git a/src/android/app/src/main/java/info/cemu/Cemu/gameview/GameDetailsFragment.java b/src/android/app/src/main/java/info/cemu/Cemu/gameview/GameDetailsFragment.java index 15660308..7edd028e 100644 --- a/src/android/app/src/main/java/info/cemu/Cemu/gameview/GameDetailsFragment.java +++ b/src/android/app/src/main/java/info/cemu/Cemu/gameview/GameDetailsFragment.java @@ -37,7 +37,7 @@ public class GameDetailsFragment extends Fragment { binding.titleDlc.setText(String.valueOf(game.dlc())); binding.titleTimePlayed.setText(getTimePlayed(game)); binding.titleLastPlayed.setText(getLastPlayedDate(game)); - binding.titleId.setText(String.valueOf(game.titleId())); + binding.titleId.setText(String.format("%016x", game.titleId())); binding.titleRegion.setText(getRegionName(game)); NavigationUI.setupWithNavController(binding.gameDetailsToolbar, NavHostFragment.findNavController(this), new AppBarConfiguration.Builder().build()); return binding.getRoot(); diff --git a/src/android/app/src/main/java/info/cemu/Cemu/gameview/GamesFragment.java b/src/android/app/src/main/java/info/cemu/Cemu/gameview/GamesFragment.java index 9a21bcf9..0658dbf3 100644 --- a/src/android/app/src/main/java/info/cemu/Cemu/gameview/GamesFragment.java +++ b/src/android/app/src/main/java/info/cemu/Cemu/gameview/GamesFragment.java @@ -24,11 +24,14 @@ import androidx.recyclerview.widget.RecyclerView; import com.google.android.material.dialog.MaterialAlertDialogBuilder; +import java.util.HashSet; + import info.cemu.Cemu.R; import info.cemu.Cemu.databinding.FragmentGamesBinding; import info.cemu.Cemu.emulation.EmulationActivity; import info.cemu.Cemu.nativeinterface.NativeGameTitles; import info.cemu.Cemu.nativeinterface.NativeGameTitles.Game; +import info.cemu.Cemu.nativeinterface.NativeSettings; import info.cemu.Cemu.settings.SettingsActivity; import info.cemu.Cemu.settings.SettingsFragment; @@ -38,10 +41,12 @@ public class GamesFragment extends Fragment { private GameViewModel gameViewModel; private boolean refreshing = false; private final Handler handler = new Handler(Looper.getMainLooper()); + private HashSet currentGamePaths = new HashSet<>(); @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); + currentGamePaths = new HashSet<>(NativeSettings.getGamesPaths()); gameAdapter = new GameAdapter(game -> { Intent intent = new Intent(getContext(), EmulationActivity.class); intent.putExtra(EmulationActivity.LAUNCH_PATH, game.path()); @@ -56,6 +61,11 @@ public class GamesFragment extends Fragment { @Override public void onResume() { super.onResume(); + var gamePaths = new HashSet<>(NativeSettings.getGamesPaths()); + if (!currentGamePaths.equals(gamePaths)) { + currentGamePaths = gamePaths; + NativeGameTitles.reloadGameTitles(); + } } @Override diff --git a/src/android/app/src/main/java/info/cemu/Cemu/nativeinterface/NativeGameTitles.java b/src/android/app/src/main/java/info/cemu/Cemu/nativeinterface/NativeGameTitles.java index 4f076fc4..aff0ce80 100644 --- a/src/android/app/src/main/java/info/cemu/Cemu/nativeinterface/NativeGameTitles.java +++ b/src/android/app/src/main/java/info/cemu/Cemu/nativeinterface/NativeGameTitles.java @@ -39,6 +39,9 @@ public class NativeGameTitles { if (!isFavorite && other.isFavorite) { return 1; } + if (name.equals(other.name)) { + return Long.compare(titleId, other.titleId); + } return name.compareTo(other.name); } } diff --git a/src/android/app/src/main/java/info/cemu/Cemu/settings/graphicpacks/GraphicPackRecyclerViewItem.java b/src/android/app/src/main/java/info/cemu/Cemu/settings/graphicpacks/GraphicPackRecyclerViewItem.java index 3238baa8..7e3ad143 100644 --- a/src/android/app/src/main/java/info/cemu/Cemu/settings/graphicpacks/GraphicPackRecyclerViewItem.java +++ b/src/android/app/src/main/java/info/cemu/Cemu/settings/graphicpacks/GraphicPackRecyclerViewItem.java @@ -7,7 +7,7 @@ import android.widget.TextView; import androidx.recyclerview.widget.RecyclerView; -import com.google.android.material.checkbox.MaterialCheckBox; +import com.google.android.material.materialswitch.MaterialSwitch; import info.cemu.Cemu.R; import info.cemu.Cemu.guibasecomponents.RecyclerViewItem; @@ -16,13 +16,13 @@ import info.cemu.Cemu.nativeinterface.NativeGraphicPacks; public class GraphicPackRecyclerViewItem implements RecyclerViewItem { private static class GraphicPackViewHolder extends RecyclerView.ViewHolder { TextView name; - MaterialCheckBox enableCheckBox; + MaterialSwitch enableToggle; TextView description; public GraphicPackViewHolder(View itemView) { super(itemView); name = itemView.findViewById(R.id.graphic_pack_name); - enableCheckBox = itemView.findViewById(R.id.graphic_pack_enable_checkbox); + enableToggle = itemView.findViewById(R.id.graphic_pack_enable_toggle); description = itemView.findViewById(R.id.graphic_pack_description); } } @@ -48,7 +48,7 @@ public class GraphicPackRecyclerViewItem implements RecyclerViewItem { } else { graphicPackViewHolder.description.setText(R.string.graphic_pack_no_description); } - graphicPackViewHolder.enableCheckBox.setChecked(graphicPack.isActive()); - graphicPackViewHolder.enableCheckBox.addOnCheckedStateChangedListener((materialCheckBox, i) -> graphicPack.setActive(materialCheckBox.isChecked())); + graphicPackViewHolder.enableToggle.setChecked(graphicPack.isActive()); + graphicPackViewHolder.enableToggle.setOnCheckedChangeListener((materialCheckBox, isChecked) -> graphicPack.setActive(isChecked)); } } diff --git a/src/android/app/src/main/res/layout/layout_button.xml b/src/android/app/src/main/res/layout/layout_button.xml index d60ac3cb..1276e73b 100644 --- a/src/android/app/src/main/res/layout/layout_button.xml +++ b/src/android/app/src/main/res/layout/layout_button.xml @@ -12,8 +12,9 @@ + android:padding="8dp"> diff --git a/src/android/app/src/main/res/layout/layout_graphic_pack.xml b/src/android/app/src/main/res/layout/layout_graphic_pack.xml index 744a130e..8a059059 100644 --- a/src/android/app/src/main/res/layout/layout_graphic_pack.xml +++ b/src/android/app/src/main/res/layout/layout_graphic_pack.xml @@ -12,9 +12,9 @@ android:contentDescription="@string/graphic_pack_name" android:textSize="24sp" /> - diff --git a/src/android/app/src/main/res/layout/layout_simple_button.xml b/src/android/app/src/main/res/layout/layout_simple_button.xml index e0f23783..bc74c2ab 100644 --- a/src/android/app/src/main/res/layout/layout_simple_button.xml +++ b/src/android/app/src/main/res/layout/layout_simple_button.xml @@ -13,7 +13,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="8dp" - android:padding="16dp" + android:padding="8dp" android:text="Button text" android:textAppearance="?attr/textAppearanceHeadline6" tools:ignore="HardcodedText" /> diff --git a/src/android/app/src/main/res/layout/layout_single_selection.xml b/src/android/app/src/main/res/layout/layout_single_selection.xml index 9a61b79a..5045823d 100644 --- a/src/android/app/src/main/res/layout/layout_single_selection.xml +++ b/src/android/app/src/main/res/layout/layout_single_selection.xml @@ -3,6 +3,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" + android:foreground="?selectableItemBackground" android:orientation="vertical" android:padding="8dp">