summaryrefslogtreecommitdiff
path: root/Source/Android/app/src/main/java
diff options
context:
space:
mode:
authorCharles Lombardo <clombardo169@gmail.com>2023-03-15 05:03:33 -0400
committerCharles Lombardo <clombardo169@gmail.com>2023-03-15 17:35:48 -0400
commit4cbbe15e777e23ce25753297fcc90e6ddff247f8 (patch)
tree9cdbe8622c8f9925029ecc9e89d584c0e3820074 /Source/Android/app/src/main/java
parentcea882181da017d3ab0ba33d148e56e4d2637c1d (diff)
Android: Convert SettingsFragment to Kotlin
Diffstat (limited to 'Source/Android/app/src/main/java')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.java295
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.kt242
2 files changed, 242 insertions, 295 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.java
deleted file mode 100644
index 1a7905565d..0000000000
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.java
+++ /dev/null
@@ -1,295 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-package org.dolphinemu.dolphinemu.features.settings.ui;
-
-import android.content.Context;
-import android.os.Bundle;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-
-import androidx.annotation.NonNull;
-import androidx.annotation.Nullable;
-import androidx.core.graphics.Insets;
-import androidx.core.view.ViewCompat;
-import androidx.core.view.WindowInsetsCompat;
-import androidx.fragment.app.DialogFragment;
-import androidx.fragment.app.Fragment;
-import androidx.recyclerview.widget.LinearLayoutManager;
-import androidx.recyclerview.widget.RecyclerView;
-
-import org.dolphinemu.dolphinemu.R;
-import org.dolphinemu.dolphinemu.databinding.FragmentSettingsBinding;
-import org.dolphinemu.dolphinemu.features.settings.model.Settings;
-import org.dolphinemu.dolphinemu.features.settings.model.view.SettingsItem;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Map;
-
-public final class SettingsFragment extends Fragment implements SettingsFragmentView
-{
- private static final String ARGUMENT_MENU_TAG = "menu_tag";
- private static final String ARGUMENT_GAME_ID = "game_id";
-
- private SettingsFragmentPresenter mPresenter;
- private SettingsActivityView mActivity;
-
- private SettingsAdapter mAdapter;
-
- private int mOldControllerSettingsWarningHeight = 0;
-
- private static final Map<MenuTag, Integer> titles = new HashMap<>();
-
- static
- {
- titles.put(MenuTag.SETTINGS, R.string.settings);
- titles.put(MenuTag.CONFIG, R.string.config);
- titles.put(MenuTag.CONFIG_GENERAL, R.string.general_submenu);
- titles.put(MenuTag.CONFIG_INTERFACE, R.string.interface_submenu);
- titles.put(MenuTag.CONFIG_AUDIO, R.string.audio_submenu);
- titles.put(MenuTag.CONFIG_PATHS, R.string.paths_submenu);
- titles.put(MenuTag.CONFIG_GAME_CUBE, R.string.gamecube_submenu);
- titles.put(MenuTag.CONFIG_SERIALPORT1, R.string.serialport1_submenu);
- titles.put(MenuTag.CONFIG_WII, R.string.wii_submenu);
- titles.put(MenuTag.CONFIG_ADVANCED, R.string.advanced_submenu);
- titles.put(MenuTag.DEBUG, R.string.debug_submenu);
- titles.put(MenuTag.GRAPHICS, R.string.graphics_settings);
- titles.put(MenuTag.ENHANCEMENTS, R.string.enhancements_submenu);
- titles.put(MenuTag.STEREOSCOPY, R.string.stereoscopy_submenu);
- titles.put(MenuTag.HACKS, R.string.hacks_submenu);
- titles.put(MenuTag.STATISTICS, R.string.statistics_submenu);
- titles.put(MenuTag.ADVANCED_GRAPHICS, R.string.advanced_graphics_submenu);
- titles.put(MenuTag.CONFIG_LOG, R.string.log_submenu);
- titles.put(MenuTag.GCPAD_TYPE, R.string.gcpad_settings);
- titles.put(MenuTag.WIIMOTE, R.string.wiimote_settings);
- titles.put(MenuTag.WIIMOTE_EXTENSION, R.string.wiimote_extensions);
- titles.put(MenuTag.GCPAD_1, R.string.controller_0);
- titles.put(MenuTag.GCPAD_2, R.string.controller_1);
- titles.put(MenuTag.GCPAD_3, R.string.controller_2);
- titles.put(MenuTag.GCPAD_4, R.string.controller_3);
- titles.put(MenuTag.WIIMOTE_1, R.string.wiimote_0);
- titles.put(MenuTag.WIIMOTE_2, R.string.wiimote_1);
- titles.put(MenuTag.WIIMOTE_3, R.string.wiimote_2);
- titles.put(MenuTag.WIIMOTE_4, R.string.wiimote_3);
- titles.put(MenuTag.WIIMOTE_EXTENSION_1, R.string.wiimote_extension_0);
- titles.put(MenuTag.WIIMOTE_EXTENSION_2, R.string.wiimote_extension_1);
- titles.put(MenuTag.WIIMOTE_EXTENSION_3, R.string.wiimote_extension_2);
- titles.put(MenuTag.WIIMOTE_EXTENSION_4, R.string.wiimote_extension_3);
- titles.put(MenuTag.WIIMOTE_GENERAL_1, R.string.wiimote_general);
- titles.put(MenuTag.WIIMOTE_GENERAL_2, R.string.wiimote_general);
- titles.put(MenuTag.WIIMOTE_GENERAL_3, R.string.wiimote_general);
- titles.put(MenuTag.WIIMOTE_GENERAL_4, R.string.wiimote_general);
- titles.put(MenuTag.WIIMOTE_MOTION_SIMULATION_1, R.string.wiimote_motion_simulation);
- titles.put(MenuTag.WIIMOTE_MOTION_SIMULATION_2, R.string.wiimote_motion_simulation);
- titles.put(MenuTag.WIIMOTE_MOTION_SIMULATION_3, R.string.wiimote_motion_simulation);
- titles.put(MenuTag.WIIMOTE_MOTION_SIMULATION_4, R.string.wiimote_motion_simulation);
- titles.put(MenuTag.WIIMOTE_MOTION_INPUT_1, R.string.wiimote_motion_input);
- titles.put(MenuTag.WIIMOTE_MOTION_INPUT_2, R.string.wiimote_motion_input);
- titles.put(MenuTag.WIIMOTE_MOTION_INPUT_3, R.string.wiimote_motion_input);
- titles.put(MenuTag.WIIMOTE_MOTION_INPUT_4, R.string.wiimote_motion_input);
- }
-
- private FragmentSettingsBinding mBinding;
-
- public static Fragment newInstance(MenuTag menuTag, String gameId, Bundle extras)
- {
- SettingsFragment fragment = new SettingsFragment();
-
- Bundle arguments = new Bundle();
- if (extras != null)
- {
- arguments.putAll(extras);
- }
-
- arguments.putSerializable(ARGUMENT_MENU_TAG, menuTag);
- arguments.putString(ARGUMENT_GAME_ID, gameId);
-
- fragment.setArguments(arguments);
- return fragment;
- }
-
- @Override
- public void onAttach(@NonNull Context context)
- {
- super.onAttach(context);
-
- mActivity = (SettingsActivityView) context;
- }
-
- @Override
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
-
- Bundle args = getArguments();
- MenuTag menuTag = (MenuTag) args.getSerializable(ARGUMENT_MENU_TAG);
- String gameId = getArguments().getString(ARGUMENT_GAME_ID);
-
- mPresenter = new SettingsFragmentPresenter(this, getContext());
- mAdapter = new SettingsAdapter(this, getContext());
-
- mPresenter.onCreate(menuTag, gameId, args);
- }
-
- @NonNull
- @Override
- public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
- @Nullable Bundle savedInstanceState)
- {
- mBinding = FragmentSettingsBinding.inflate(inflater, container, false);
- return mBinding.getRoot();
- }
-
- @Override
- public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState)
- {
- Bundle args = getArguments();
- MenuTag menuTag = (MenuTag) args.getSerializable(ARGUMENT_MENU_TAG);
-
- if (titles.containsKey(menuTag))
- {
- mActivity.setToolbarTitle(getString(titles.get(menuTag)));
- }
-
- LinearLayoutManager manager = new LinearLayoutManager(getActivity());
-
- RecyclerView recyclerView = mBinding.listSettings;
-
- recyclerView.setAdapter(mAdapter);
- recyclerView.setLayoutManager(manager);
-
- SettingsDividerItemDecoration divider = new SettingsDividerItemDecoration(requireActivity());
- recyclerView.addItemDecoration(divider);
-
- setInsets();
-
- SettingsActivityView activity = (SettingsActivityView) getActivity();
- mPresenter.onViewCreated(menuTag, activity.getSettings());
- }
-
- @Override
- public void onDestroyView()
- {
- super.onDestroyView();
- mBinding = null;
- }
-
- @Override
- public void onDetach()
- {
- super.onDetach();
- mActivity = null;
-
- if (mAdapter != null)
- {
- mAdapter.closeDialog();
- }
- }
-
- @Override
- public void onSettingsFileLoaded(
- org.dolphinemu.dolphinemu.features.settings.model.Settings settings)
- {
- mPresenter.setSettings(settings);
- }
-
- @Override
- public void showSettingsList(ArrayList<SettingsItem> settingsList)
- {
- mAdapter.setSettings(settingsList);
- }
-
- @Override
- public void loadDefaultSettings()
- {
- mPresenter.loadDefaultSettings();
- }
-
- @Override
- public SettingsAdapter getAdapter()
- {
- return mAdapter;
- }
-
- @Override
- public void loadSubMenu(MenuTag menuKey)
- {
- mActivity.showSettingsFragment(menuKey, null, true, getArguments().getString(ARGUMENT_GAME_ID));
- }
-
- @Override
- public void showDialogFragment(DialogFragment fragment)
- {
- mActivity.showDialogFragment(fragment);
- }
-
- @Override
- public void showToastMessage(String message)
- {
- mActivity.showToastMessage(message);
- }
-
- @Override
- public Settings getSettings()
- {
- return mPresenter.getSettings();
- }
-
- @Override
- public void onSettingChanged()
- {
- mActivity.onSettingChanged();
- }
-
- @Override
- public void onControllerSettingsChanged()
- {
- mAdapter.notifyAllSettingsChanged();
- mPresenter.updateOldControllerSettingsWarningVisibility();
- }
-
- @Override
- public void onMenuTagAction(@NonNull MenuTag menuTag, int value)
- {
- mActivity.onMenuTagAction(menuTag, value);
- }
-
- public boolean hasMenuTagActionForValue(@NonNull MenuTag menuTag, int value)
- {
- return mActivity.hasMenuTagActionForValue(menuTag, value);
- }
-
- @Override
- public void setMappingAllDevices(boolean allDevices)
- {
- mActivity.setMappingAllDevices(allDevices);
- }
-
- @Override
- public boolean isMappingAllDevices()
- {
- return mActivity.isMappingAllDevices();
- }
-
- @Override
- public void setOldControllerSettingsWarningVisibility(boolean visible)
- {
- mOldControllerSettingsWarningHeight =
- mActivity.setOldControllerSettingsWarningVisibility(visible);
-
- // Trigger the insets listener we've registered
- mBinding.listSettings.requestApplyInsets();
- }
-
- private void setInsets()
- {
- ViewCompat.setOnApplyWindowInsetsListener(mBinding.listSettings, (v, windowInsets) ->
- {
- Insets insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars());
- int listSpacing = getResources().getDimensionPixelSize(R.dimen.spacing_list);
- v.setPadding(0, 0, 0, insets.bottom + listSpacing + mOldControllerSettingsWarningHeight);
- return windowInsets;
- });
- }
-}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.kt
new file mode 100644
index 0000000000..d9ffd9113f
--- /dev/null
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.kt
@@ -0,0 +1,242 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+package org.dolphinemu.dolphinemu.features.settings.ui
+
+import android.content.Context
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.core.view.ViewCompat
+import androidx.core.view.WindowInsetsCompat
+import androidx.core.view.updatePadding
+import androidx.fragment.app.DialogFragment
+import androidx.fragment.app.Fragment
+import androidx.fragment.app.FragmentActivity
+import androidx.recyclerview.widget.LinearLayoutManager
+import org.dolphinemu.dolphinemu.R
+import org.dolphinemu.dolphinemu.databinding.FragmentSettingsBinding
+import org.dolphinemu.dolphinemu.features.settings.model.Settings
+import org.dolphinemu.dolphinemu.features.settings.model.view.SettingsItem
+import org.dolphinemu.dolphinemu.utils.SerializableHelper.serializable
+import java.util.*
+import kotlin.collections.ArrayList
+
+class SettingsFragment : Fragment(), SettingsFragmentView {
+ private lateinit var presenter: SettingsFragmentPresenter
+ private var activityView: SettingsActivityView? = null
+
+ private lateinit var menuTag: MenuTag
+
+ override val fragmentActivity: FragmentActivity
+ get() = requireActivity()
+
+ override var adapter: SettingsAdapter? = null
+
+ private var oldControllerSettingsWarningHeight = 0
+
+ private var binding: FragmentSettingsBinding? = null
+
+ override fun onAttach(context: Context) {
+ super.onAttach(context)
+
+ activityView = context as SettingsActivityView
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+
+ menuTag = requireArguments().serializable(ARGUMENT_MENU_TAG)!!
+
+ val gameId = requireArguments().getString(ARGUMENT_GAME_ID)
+ presenter = SettingsFragmentPresenter(this, requireContext())
+ adapter = SettingsAdapter(this, requireContext())
+
+ presenter.onCreate(menuTag, gameId, requireArguments())
+ }
+
+ override fun onCreateView(
+ inflater: LayoutInflater,
+ container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View {
+ binding = FragmentSettingsBinding.inflate(inflater, container, false)
+ return binding!!.root
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ if (titles.containsKey(menuTag)) {
+ activityView!!.setToolbarTitle(getString(titles[menuTag]!!))
+ }
+
+ val manager = LinearLayoutManager(activity)
+
+ val recyclerView = binding!!.listSettings
+ recyclerView.adapter = adapter
+ recyclerView.layoutManager = manager
+
+ val divider = SettingsDividerItemDecoration(requireActivity())
+ recyclerView.addItemDecoration(divider)
+
+ setInsets()
+
+ val activity = activity as SettingsActivityView?
+ presenter.onViewCreated(menuTag, activity!!.settings)
+ }
+
+ override fun onDestroyView() {
+ super.onDestroyView()
+ binding = null
+ }
+
+ override fun onDetach() {
+ super.onDetach()
+ activityView = null
+
+ if (adapter != null) {
+ adapter!!.closeDialog()
+ }
+ }
+
+ override fun onSettingsFileLoaded(settings: Settings) {
+ presenter.settings = settings
+ }
+
+ override fun showSettingsList(settingsList: ArrayList<SettingsItem>) {
+ adapter!!.setSettings(settingsList)
+ }
+
+ override fun loadDefaultSettings() {
+ presenter.loadDefaultSettings()
+ }
+
+ override fun loadSubMenu(menuKey: MenuTag) {
+ activityView!!.showSettingsFragment(
+ menuKey,
+ null,
+ true,
+ requireArguments().getString(ARGUMENT_GAME_ID)!!
+ )
+ }
+
+ override fun showDialogFragment(fragment: DialogFragment) {
+ activityView!!.showDialogFragment(fragment)
+ }
+
+ override fun showToastMessage(message: String) {
+ activityView!!.showToastMessage(message)
+ }
+
+ override val settings: Settings?
+ get() = presenter.settings
+
+ override fun onSettingChanged() {
+ activityView!!.onSettingChanged()
+ }
+
+ override fun onControllerSettingsChanged() {
+ adapter!!.notifyAllSettingsChanged()
+ presenter.updateOldControllerSettingsWarningVisibility()
+ }
+
+ override fun onMenuTagAction(menuTag: MenuTag, value: Int) {
+ activityView!!.onMenuTagAction(menuTag, value)
+ }
+
+ override fun hasMenuTagActionForValue(menuTag: MenuTag, value: Int): Boolean {
+ return activityView!!.hasMenuTagActionForValue(menuTag, value)
+ }
+
+ override var isMappingAllDevices: Boolean
+ get() = activityView!!.isMappingAllDevices
+ set(allDevices) {
+ activityView!!.isMappingAllDevices = allDevices
+ }
+
+ override fun setOldControllerSettingsWarningVisibility(visible: Boolean) {
+ oldControllerSettingsWarningHeight =
+ activityView!!.setOldControllerSettingsWarningVisibility(visible)
+
+ // Trigger the insets listener we've registered
+ binding!!.listSettings.requestApplyInsets()
+ }
+
+ private fun setInsets() {
+ ViewCompat.setOnApplyWindowInsetsListener(binding!!.listSettings) { v: View, windowInsets: WindowInsetsCompat ->
+ val insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars())
+ val listSpacing = resources.getDimensionPixelSize(R.dimen.spacing_list)
+ v.updatePadding(bottom = insets.bottom + listSpacing + oldControllerSettingsWarningHeight)
+ windowInsets
+ }
+ }
+
+ companion object {
+ private const val ARGUMENT_MENU_TAG = "menu_tag"
+ private const val ARGUMENT_GAME_ID = "game_id"
+ private val titles: MutableMap<MenuTag, Int> = EnumMap(MenuTag::class.java)
+
+ init {
+ titles[MenuTag.SETTINGS] = R.string.settings
+ titles[MenuTag.CONFIG] = R.string.config
+ titles[MenuTag.CONFIG_GENERAL] = R.string.general_submenu
+ titles[MenuTag.CONFIG_INTERFACE] = R.string.interface_submenu
+ titles[MenuTag.CONFIG_AUDIO] = R.string.audio_submenu
+ titles[MenuTag.CONFIG_PATHS] = R.string.paths_submenu
+ titles[MenuTag.CONFIG_GAME_CUBE] = R.string.gamecube_submenu
+ titles[MenuTag.CONFIG_SERIALPORT1] = R.string.serialport1_submenu
+ titles[MenuTag.CONFIG_WII] = R.string.wii_submenu
+ titles[MenuTag.CONFIG_ADVANCED] = R.string.advanced_submenu
+ titles[MenuTag.DEBUG] = R.string.debug_submenu
+ titles[MenuTag.GRAPHICS] = R.string.graphics_settings
+ titles[MenuTag.ENHANCEMENTS] = R.string.enhancements_submenu
+ titles[MenuTag.STEREOSCOPY] = R.string.stereoscopy_submenu
+ titles[MenuTag.HACKS] = R.string.hacks_submenu
+ titles[MenuTag.STATISTICS] = R.string.statistics_submenu
+ titles[MenuTag.ADVANCED_GRAPHICS] = R.string.advanced_graphics_submenu
+ titles[MenuTag.CONFIG_LOG] = R.string.log_submenu
+ titles[MenuTag.GCPAD_TYPE] = R.string.gcpad_settings
+ titles[MenuTag.WIIMOTE] = R.string.wiimote_settings
+ titles[MenuTag.WIIMOTE_EXTENSION] = R.string.wiimote_extensions
+ titles[MenuTag.GCPAD_1] = R.string.controller_0
+ titles[MenuTag.GCPAD_2] = R.string.controller_1
+ titles[MenuTag.GCPAD_3] = R.string.controller_2
+ titles[MenuTag.GCPAD_4] = R.string.controller_3
+ titles[MenuTag.WIIMOTE_1] = R.string.wiimote_0
+ titles[MenuTag.WIIMOTE_2] = R.string.wiimote_1
+ titles[MenuTag.WIIMOTE_3] = R.string.wiimote_2
+ titles[MenuTag.WIIMOTE_4] = R.string.wiimote_3
+ titles[MenuTag.WIIMOTE_EXTENSION_1] = R.string.wiimote_extension_0
+ titles[MenuTag.WIIMOTE_EXTENSION_2] = R.string.wiimote_extension_1
+ titles[MenuTag.WIIMOTE_EXTENSION_3] = R.string.wiimote_extension_2
+ titles[MenuTag.WIIMOTE_EXTENSION_4] = R.string.wiimote_extension_3
+ titles[MenuTag.WIIMOTE_GENERAL_1] = R.string.wiimote_general
+ titles[MenuTag.WIIMOTE_GENERAL_2] = R.string.wiimote_general
+ titles[MenuTag.WIIMOTE_GENERAL_3] = R.string.wiimote_general
+ titles[MenuTag.WIIMOTE_GENERAL_4] = R.string.wiimote_general
+ titles[MenuTag.WIIMOTE_MOTION_SIMULATION_1] = R.string.wiimote_motion_simulation
+ titles[MenuTag.WIIMOTE_MOTION_SIMULATION_2] = R.string.wiimote_motion_simulation
+ titles[MenuTag.WIIMOTE_MOTION_SIMULATION_3] = R.string.wiimote_motion_simulation
+ titles[MenuTag.WIIMOTE_MOTION_SIMULATION_4] = R.string.wiimote_motion_simulation
+ titles[MenuTag.WIIMOTE_MOTION_INPUT_1] = R.string.wiimote_motion_input
+ titles[MenuTag.WIIMOTE_MOTION_INPUT_2] = R.string.wiimote_motion_input
+ titles[MenuTag.WIIMOTE_MOTION_INPUT_3] = R.string.wiimote_motion_input
+ titles[MenuTag.WIIMOTE_MOTION_INPUT_4] = R.string.wiimote_motion_input
+ }
+
+ @JvmStatic
+ fun newInstance(menuTag: MenuTag?, gameId: String?, extras: Bundle?): Fragment {
+ val fragment = SettingsFragment()
+
+ val arguments = Bundle()
+ if (extras != null) {
+ arguments.putAll(extras)
+ }
+
+ arguments.putSerializable(ARGUMENT_MENU_TAG, menuTag)
+ arguments.putString(ARGUMENT_GAME_ID, gameId)
+
+ fragment.arguments = arguments
+ return fragment
+ }
+ }
+}