mirror of
https://github.com/izzy2lost/WeeU.git
synced 2026-07-06 00:19:59 -07:00
Added option to set the console language
This commit is contained in:
@@ -346,4 +346,17 @@ Java_info_cemu_Cemu_nativeinterface_NativeSettings_setAudioLatency([[maybe_unuse
|
||||
{
|
||||
g_config.data().audio_delay = latency;
|
||||
g_config.Save();
|
||||
}
|
||||
|
||||
extern "C" [[maybe_unused]] JNIEXPORT jint JNICALL
|
||||
Java_info_cemu_Cemu_nativeinterface_NativeSettings_getConsoleLanguage([[maybe_unused]] JNIEnv* env, [[maybe_unused]] jclass clazz)
|
||||
{
|
||||
return static_cast<jint>(g_config.data().console_language.GetValue());
|
||||
}
|
||||
|
||||
extern "C" [[maybe_unused]] JNIEXPORT void JNICALL
|
||||
Java_info_cemu_Cemu_nativeinterface_NativeSettings_setConsoleLanguage([[maybe_unused]] JNIEnv* env, [[maybe_unused]] jclass clazz, jint console_language)
|
||||
{
|
||||
g_config.data().console_language = static_cast<CafeConsoleLanguage>(console_language);
|
||||
g_config.Save();
|
||||
}
|
||||
@@ -133,4 +133,21 @@ public class NativeSettings {
|
||||
public static native boolean isNotificationFriendListEnabled();
|
||||
|
||||
public static native void setNotificationFriendListEnabled(boolean enabled);
|
||||
|
||||
public static final int CONSOLE_LANGUAGE_JAPANESE = 0;
|
||||
public static final int CONSOLE_LANGUAGE_ENGLISH = 1;
|
||||
public static final int CONSOLE_LANGUAGE_FRENCH = 2;
|
||||
public static final int CONSOLE_LANGUAGE_GERMAN = 3;
|
||||
public static final int CONSOLE_LANGUAGE_ITALIAN = 4;
|
||||
public static final int CONSOLE_LANGUAGE_SPANISH = 5;
|
||||
public static final int CONSOLE_LANGUAGE_CHINESE = 6;
|
||||
public static final int CONSOLE_LANGUAGE_KOREAN = 7;
|
||||
public static final int CONSOLE_LANGUAGE_DUTCH = 8;
|
||||
public static final int CONSOLE_LANGUAGE_PORTUGUESE = 9;
|
||||
public static final int CONSOLE_LANGUAGE_RUSSIAN = 10;
|
||||
public static final int CONSOLE_LANGUAGE_TAIWANESE = 11;
|
||||
|
||||
public static native int getConsoleLanguage();
|
||||
|
||||
public static native void setConsoleLanguage(int consoleLanguage);
|
||||
}
|
||||
|
||||
@@ -16,7 +16,6 @@ import androidx.navigation.fragment.NavHostFragment;
|
||||
import info.cemu.Cemu.R;
|
||||
import info.cemu.Cemu.databinding.LayoutGenericRecyclerViewBinding;
|
||||
import info.cemu.Cemu.features.DocumentsProvider;
|
||||
import info.cemu.Cemu.guibasecomponents.ButtonRecyclerViewItem;
|
||||
import info.cemu.Cemu.guibasecomponents.GenericRecyclerViewAdapter;
|
||||
import info.cemu.Cemu.guibasecomponents.SimpleButtonRecyclerViewItem;
|
||||
|
||||
@@ -27,12 +26,13 @@ public class SettingsFragment extends Fragment {
|
||||
GenericRecyclerViewAdapter genericRecyclerViewAdapter = new GenericRecyclerViewAdapter();
|
||||
|
||||
genericRecyclerViewAdapter.addRecyclerViewItem(new SimpleButtonRecyclerViewItem(getString(R.string.open_cemu_folder), this::openCemuFolder));
|
||||
genericRecyclerViewAdapter.addRecyclerViewItem(new ButtonRecyclerViewItem(getString(R.string.add_game_path), getString(R.string.games_folder_description), () -> NavHostFragment.findNavController(SettingsFragment.this).navigate(R.id.action_settingsFragment_to_gamePathsFragment)));
|
||||
genericRecyclerViewAdapter.addRecyclerViewItem(new SimpleButtonRecyclerViewItem(getString(R.string.input_settings), () -> NavHostFragment.findNavController(SettingsFragment.this).navigate(R.id.action_settingsFragment_to_inputSettingsFragment)));
|
||||
genericRecyclerViewAdapter.addRecyclerViewItem(new SimpleButtonRecyclerViewItem(getString(R.string.graphics_settings), () -> NavHostFragment.findNavController(SettingsFragment.this).navigate(R.id.action_settingsFragment_to_graphicSettingsFragment)));
|
||||
genericRecyclerViewAdapter.addRecyclerViewItem(new SimpleButtonRecyclerViewItem(getString(R.string.audio_settings), () -> NavHostFragment.findNavController(SettingsFragment.this).navigate(R.id.action_settingsFragment_to_audioSettingsFragment)));
|
||||
genericRecyclerViewAdapter.addRecyclerViewItem(new SimpleButtonRecyclerViewItem(getString(R.string.graphic_packs), () -> NavHostFragment.findNavController(SettingsFragment.this).navigate(R.id.action_settingsFragment_to_graphicPacksRootFragment)));
|
||||
genericRecyclerViewAdapter.addRecyclerViewItem(new SimpleButtonRecyclerViewItem(getString(R.string.overlay), () -> NavHostFragment.findNavController(SettingsFragment.this).navigate(R.id.action_settingsFragment_to_overlaySettingsFragment)));
|
||||
var navController = NavHostFragment.findNavController(this);
|
||||
genericRecyclerViewAdapter.addRecyclerViewItem(new SimpleButtonRecyclerViewItem(getString(R.string.general_settings), () -> navController.navigate(R.id.action_settingsFragment_to_generalSettingsFragment)));
|
||||
genericRecyclerViewAdapter.addRecyclerViewItem(new SimpleButtonRecyclerViewItem(getString(R.string.input_settings), () -> navController.navigate(R.id.action_settingsFragment_to_inputSettingsFragment)));
|
||||
genericRecyclerViewAdapter.addRecyclerViewItem(new SimpleButtonRecyclerViewItem(getString(R.string.graphics_settings), () -> navController.navigate(R.id.action_settingsFragment_to_graphicSettingsFragment)));
|
||||
genericRecyclerViewAdapter.addRecyclerViewItem(new SimpleButtonRecyclerViewItem(getString(R.string.audio_settings), () -> navController.navigate(R.id.action_settingsFragment_to_audioSettingsFragment)));
|
||||
genericRecyclerViewAdapter.addRecyclerViewItem(new SimpleButtonRecyclerViewItem(getString(R.string.graphic_packs), () -> navController.navigate(R.id.action_settingsFragment_to_graphicPacksRootFragment)));
|
||||
genericRecyclerViewAdapter.addRecyclerViewItem(new SimpleButtonRecyclerViewItem(getString(R.string.overlay), () -> navController.navigate(R.id.action_settingsFragment_to_overlaySettingsFragment)));
|
||||
binding.recyclerView.setAdapter(genericRecyclerViewAdapter);
|
||||
|
||||
return binding.getRoot();
|
||||
|
||||
+79
@@ -0,0 +1,79 @@
|
||||
package info.cemu.Cemu.settings.general;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.StringRes;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.navigation.fragment.NavHostFragment;
|
||||
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import info.cemu.Cemu.R;
|
||||
import info.cemu.Cemu.databinding.LayoutGenericRecyclerViewBinding;
|
||||
import info.cemu.Cemu.guibasecomponents.ButtonRecyclerViewItem;
|
||||
import info.cemu.Cemu.guibasecomponents.GenericRecyclerViewAdapter;
|
||||
import info.cemu.Cemu.guibasecomponents.SelectionAdapter;
|
||||
import info.cemu.Cemu.guibasecomponents.SingleSelectionRecyclerViewItem;
|
||||
import info.cemu.Cemu.nativeinterface.NativeSettings;
|
||||
|
||||
public class GeneralSettingsFragment extends Fragment {
|
||||
private static @StringRes() int consoleLanguageToResourceNameId(int channels) {
|
||||
return switch (channels) {
|
||||
case NativeSettings.CONSOLE_LANGUAGE_JAPANESE -> R.string.console_language_japanese;
|
||||
case NativeSettings.CONSOLE_LANGUAGE_ENGLISH -> R.string.console_language_english;
|
||||
case NativeSettings.CONSOLE_LANGUAGE_FRENCH -> R.string.console_language_french;
|
||||
case NativeSettings.CONSOLE_LANGUAGE_GERMAN -> R.string.console_language_german;
|
||||
case NativeSettings.CONSOLE_LANGUAGE_ITALIAN -> R.string.console_language_italian;
|
||||
case NativeSettings.CONSOLE_LANGUAGE_SPANISH -> R.string.console_language_spanish;
|
||||
case NativeSettings.CONSOLE_LANGUAGE_CHINESE -> R.string.console_language_chinese;
|
||||
case NativeSettings.CONSOLE_LANGUAGE_KOREAN -> R.string.console_language_korean;
|
||||
case NativeSettings.CONSOLE_LANGUAGE_DUTCH -> R.string.console_language_dutch;
|
||||
case NativeSettings.CONSOLE_LANGUAGE_PORTUGUESE -> R.string.console_language_portuguese;
|
||||
case NativeSettings.CONSOLE_LANGUAGE_RUSSIAN -> R.string.console_language_russian;
|
||||
case NativeSettings.CONSOLE_LANGUAGE_TAIWANESE -> R.string.console_language_taiwanese;
|
||||
default -> throw new IllegalArgumentException("Invalid console language: " + channels);
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
var binding = LayoutGenericRecyclerViewBinding.inflate(inflater, container, false);
|
||||
|
||||
GenericRecyclerViewAdapter genericRecyclerViewAdapter = new GenericRecyclerViewAdapter();
|
||||
|
||||
genericRecyclerViewAdapter.addRecyclerViewItem(new ButtonRecyclerViewItem(getString(R.string.add_game_path), getString(R.string.games_folder_description), () -> NavHostFragment.findNavController(GeneralSettingsFragment.this).navigate(R.id.action_generalSettingsFragment_to_gamePathsFragment)));
|
||||
|
||||
var consoleLanguageChoices = Stream.of(NativeSettings.CONSOLE_LANGUAGE_JAPANESE,
|
||||
NativeSettings.CONSOLE_LANGUAGE_ENGLISH,
|
||||
NativeSettings.CONSOLE_LANGUAGE_FRENCH,
|
||||
NativeSettings.CONSOLE_LANGUAGE_GERMAN,
|
||||
NativeSettings.CONSOLE_LANGUAGE_ITALIAN,
|
||||
NativeSettings.CONSOLE_LANGUAGE_SPANISH,
|
||||
NativeSettings.CONSOLE_LANGUAGE_CHINESE,
|
||||
NativeSettings.CONSOLE_LANGUAGE_KOREAN,
|
||||
NativeSettings.CONSOLE_LANGUAGE_DUTCH,
|
||||
NativeSettings.CONSOLE_LANGUAGE_PORTUGUESE,
|
||||
NativeSettings.CONSOLE_LANGUAGE_RUSSIAN,
|
||||
NativeSettings.CONSOLE_LANGUAGE_TAIWANESE)
|
||||
.map(channels -> new SelectionAdapter.ChoiceItem<>(t -> t.setText(consoleLanguageToResourceNameId(channels)), channels))
|
||||
.collect(Collectors.toList());
|
||||
int currentConsoleLanguage = NativeSettings.getConsoleLanguage();
|
||||
SelectionAdapter<Integer> consoleLanguageAdapter = new SelectionAdapter<>(consoleLanguageChoices, currentConsoleLanguage);
|
||||
SingleSelectionRecyclerViewItem<Integer> consoleLanguageSelection = new SingleSelectionRecyclerViewItem<>(getString(R.string.console_language),
|
||||
getString(consoleLanguageToResourceNameId(currentConsoleLanguage)), consoleLanguageAdapter,
|
||||
(consoleLanguage, selectionRecyclerViewItem) -> {
|
||||
NativeSettings.setConsoleLanguage(consoleLanguage);
|
||||
selectionRecyclerViewItem.setDescription(getString(consoleLanguageToResourceNameId(consoleLanguage)));
|
||||
});
|
||||
genericRecyclerViewAdapter.addRecyclerViewItem(consoleLanguageSelection);
|
||||
|
||||
binding.recyclerView.setAdapter(genericRecyclerViewAdapter);
|
||||
|
||||
return binding.getRoot();
|
||||
}
|
||||
}
|
||||
+3
-3
@@ -38,14 +38,14 @@ public class GraphicsSettingsFragment extends Fragment {
|
||||
};
|
||||
}
|
||||
|
||||
private static int scalingFilterToResourceNameId(int fullscreenScaling) {
|
||||
return switch (fullscreenScaling) {
|
||||
private static int scalingFilterToResourceNameId(int scalingFilter) {
|
||||
return switch (scalingFilter) {
|
||||
case NativeSettings.SCALING_FILTER_BILINEAR_FILTER -> R.string.bilinear;
|
||||
case NativeSettings.SCALING_FILTER_BICUBIC_FILTER -> R.string.bicubic;
|
||||
case NativeSettings.SCALING_FILTER_BICUBIC_HERMITE_FILTER -> R.string.hermite;
|
||||
case NativeSettings.SCALING_FILTER_NEAREST_NEIGHBOR_FILTER -> R.string.nearest_neighbor;
|
||||
default ->
|
||||
throw new IllegalArgumentException("Invalid fullscreen scaling mode: " + fullscreenScaling);
|
||||
throw new IllegalArgumentException("Invalid scaling filter: " + scalingFilter);
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -59,8 +59,8 @@
|
||||
android:id="@+id/action_settingsFragment_to_overlaySettingsFragment"
|
||||
app:destination="@id/overlaySettingsFragment" />
|
||||
<action
|
||||
android:id="@+id/action_settingsFragment_to_gamePathsFragment"
|
||||
app:destination="@id/gamePathsFragment" />
|
||||
android:id="@+id/action_settingsFragment_to_generalSettingsFragment"
|
||||
app:destination="@id/generalSettingsFragment" />
|
||||
</fragment>
|
||||
<fragment
|
||||
android:id="@+id/controllerInputsFragment"
|
||||
@@ -91,4 +91,13 @@
|
||||
android:name="info.cemu.Cemu.settings.gamespath.GamePathsFragment"
|
||||
android:label="@string/game_paths_settings"
|
||||
tools:layout="@layout/layout_generic_recycler_view" />
|
||||
<fragment
|
||||
android:id="@+id/generalSettingsFragment"
|
||||
android:name="info.cemu.Cemu.settings.general.GeneralSettingsFragment"
|
||||
android:label="@string/general_settings"
|
||||
tools:layout="@layout/layout_generic_recycler_view" >
|
||||
<action
|
||||
android:id="@+id/action_generalSettingsFragment_to_gamePathsFragment"
|
||||
app:destination="@id/gamePathsFragment" />
|
||||
</fragment>
|
||||
</navigation>
|
||||
@@ -224,4 +224,18 @@
|
||||
<string name="thread_quantum">Thread quantum</string>
|
||||
<string name="audio_latency">Latency</string>
|
||||
<string name="game_favorite">Favorite</string>
|
||||
<string name="general_settings">General settings</string>
|
||||
<string name="console_language_japanese">Japanese</string>
|
||||
<string name="console_language_english">English</string>
|
||||
<string name="console_language_french">French</string>
|
||||
<string name="console_language_german">German</string>
|
||||
<string name="console_language_italian">Italian</string>
|
||||
<string name="console_language_spanish">Spanish</string>
|
||||
<string name="console_language_chinese">Chinese</string>
|
||||
<string name="console_language_korean">Korean</string>
|
||||
<string name="console_language_dutch">Dutch</string>
|
||||
<string name="console_language_portuguese">Portuguese</string>
|
||||
<string name="console_language_russian">Russian</string>
|
||||
<string name="console_language_taiwanese">Taiwanese</string>
|
||||
<string name="console_language">Console language</string>
|
||||
</resources>
|
||||
Reference in New Issue
Block a user