summaryrefslogtreecommitdiff
path: root/Source/Android/app/src
diff options
context:
space:
mode:
authorCharles Lombardo <clombardo169@gmail.com>2023-03-15 03:33:06 -0400
committerCharles Lombardo <clombardo169@gmail.com>2023-03-15 17:35:48 -0400
commit92f39a98d641652a24348cef0b296e0182ad2bcd (patch)
treec0335c4383fc95c79fb95c66b5133b6b85134ebe /Source/Android/app/src
parent49e480ee533b8169c7f993187558b7102c340cee (diff)
Android: Convert SwitchSettingViewHolder to Kotlin
Diffstat (limited to 'Source/Android/app/src')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SwitchSettingViewHolder.java106
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SwitchSettingViewHolder.kt82
2 files changed, 82 insertions, 106 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SwitchSettingViewHolder.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SwitchSettingViewHolder.java
deleted file mode 100644
index 398711bea2..0000000000
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SwitchSettingViewHolder.java
+++ /dev/null
@@ -1,106 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-package org.dolphinemu.dolphinemu.features.settings.ui.viewholder;
-
-import android.view.View;
-
-import androidx.annotation.Nullable;
-
-import org.dolphinemu.dolphinemu.databinding.ListItemSettingSwitchBinding;
-import org.dolphinemu.dolphinemu.features.settings.model.BooleanSetting;
-import org.dolphinemu.dolphinemu.features.settings.model.view.SwitchSetting;
-import org.dolphinemu.dolphinemu.features.settings.model.view.SettingsItem;
-import org.dolphinemu.dolphinemu.features.settings.ui.SettingsAdapter;
-import org.dolphinemu.dolphinemu.utils.DirectoryInitialization;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Arrays;
-
-public final class SwitchSettingViewHolder extends SettingViewHolder
-{
- private SwitchSetting mItem;
- private boolean iplExists = false;
-
- private final ListItemSettingSwitchBinding mBinding;
-
- public SwitchSettingViewHolder(ListItemSettingSwitchBinding binding, SettingsAdapter adapter)
- {
- super(binding.getRoot(), adapter);
- mBinding = binding;
- }
-
- @Override
- public void bind(SettingsItem item)
- {
- mItem = (SwitchSetting) item;
-
- mBinding.textSettingName.setText(item.getName());
- mBinding.textSettingDescription.setText(item.getDescription());
-
- mBinding.settingSwitch.setChecked(mItem.isChecked());
- mBinding.settingSwitch.setEnabled(mItem.isEditable());
-
- // Check for IPL to make sure user can skip.
- if (mItem.getSetting() == BooleanSetting.MAIN_SKIP_IPL)
- {
- ArrayList<String> iplDirs = new ArrayList<>(Arrays.asList("USA", "JAP", "EUR"));
- for (String dir : iplDirs)
- {
- File iplFile = new File(DirectoryInitialization.getUserDirectory(),
- File.separator + "GC" + File.separator + dir + File.separator + "IPL.bin");
- if (iplFile.exists())
- {
- iplExists = true;
- break;
- }
- }
-
- mBinding.settingSwitch.setEnabled(iplExists || !mItem.isChecked());
- }
-
- mBinding.settingSwitch.setOnCheckedChangeListener((buttonView, isChecked) ->
- {
- // If a user has skip IPL disabled previously and deleted their IPL file, we need to allow
- // them to skip it or else their game will appear broken. However, once this is enabled, we
- // need to disable the option again to prevent the same issue from occurring.
- if (mItem.getSetting() == BooleanSetting.MAIN_SKIP_IPL && !iplExists && isChecked)
- {
- mBinding.settingSwitch.setEnabled(false);
- }
-
- getAdapter().onBooleanClick(mItem, mBinding.settingSwitch.isChecked());
-
- setStyle(mBinding.textSettingName, mItem);
- });
-
- setStyle(mBinding.textSettingName, mItem);
- }
-
- @Override
- public void onClick(View clicked)
- {
- if (!mItem.isEditable())
- {
- showNotRuntimeEditableError();
- return;
- }
-
- if (mItem.getSetting() == BooleanSetting.MAIN_SKIP_IPL && !iplExists)
- {
- if (mItem.isChecked())
- {
- showIplNotAvailableError();
- return;
- }
- }
-
- mBinding.settingSwitch.toggle();
- }
-
- @Nullable @Override
- protected SettingsItem getItem()
- {
- return mItem;
- }
-}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SwitchSettingViewHolder.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SwitchSettingViewHolder.kt
new file mode 100644
index 0000000000..fc575ead48
--- /dev/null
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SwitchSettingViewHolder.kt
@@ -0,0 +1,82 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+package org.dolphinemu.dolphinemu.features.settings.ui.viewholder
+
+import android.view.View
+import android.widget.CompoundButton
+import org.dolphinemu.dolphinemu.databinding.ListItemSettingSwitchBinding
+import org.dolphinemu.dolphinemu.features.settings.model.BooleanSetting
+import org.dolphinemu.dolphinemu.features.settings.model.view.SettingsItem
+import org.dolphinemu.dolphinemu.features.settings.model.view.SwitchSetting
+import org.dolphinemu.dolphinemu.features.settings.ui.SettingsAdapter
+import org.dolphinemu.dolphinemu.utils.DirectoryInitialization
+import java.io.File
+import java.util.*
+
+class SwitchSettingViewHolder(
+ private val binding: ListItemSettingSwitchBinding,
+ adapter: SettingsAdapter
+) : SettingViewHolder(binding.root, adapter) {
+ private lateinit var setting: SwitchSetting
+
+ override val item: SettingsItem
+ get() = setting
+
+ private var iplExists = false
+
+ override fun bind(item: SettingsItem) {
+ setting = item as SwitchSetting
+
+ binding.textSettingName.text = item.name
+ binding.textSettingDescription.text = item.description
+
+ binding.settingSwitch.isChecked = setting.isChecked
+ binding.settingSwitch.isEnabled = setting.isEditable
+
+ // Check for IPL to make sure user can skip.
+ if (setting.setting === BooleanSetting.MAIN_SKIP_IPL) {
+ val iplDirs = ArrayList(listOf("USA", "JAP", "EUR"))
+ for (dir in iplDirs) {
+ val iplFile = File(
+ DirectoryInitialization.getUserDirectory(),
+ File.separator + "GC" + File.separator + dir + File.separator + "IPL.bin"
+ )
+ if (iplFile.exists()) {
+ iplExists = true
+ break
+ }
+ }
+ binding.settingSwitch.isEnabled = iplExists || !setting.isChecked
+ }
+
+ binding.settingSwitch.setOnCheckedChangeListener { _: CompoundButton?, isChecked: Boolean ->
+ // If a user has skip IPL disabled previously and deleted their IPL file, we need to allow
+ // them to skip it or else their game will appear broken. However, once this is enabled, we
+ // need to disable the option again to prevent the same issue from occurring.
+ if (setting.setting === BooleanSetting.MAIN_SKIP_IPL && !iplExists && isChecked) {
+ binding.settingSwitch.isEnabled = false
+ }
+
+ adapter.onBooleanClick(setting, binding.settingSwitch.isChecked)
+
+ setStyle(binding.textSettingName, setting)
+ }
+ setStyle(binding.textSettingName, setting)
+ }
+
+ override fun onClick(clicked: View) {
+ if (!setting.isEditable) {
+ showNotRuntimeEditableError()
+ return
+ }
+
+ if (setting.setting === BooleanSetting.MAIN_SKIP_IPL && !iplExists) {
+ if (setting.isChecked) {
+ showIplNotAvailableError()
+ return
+ }
+ }
+
+ binding.settingSwitch.toggle()
+ }
+}