summaryrefslogtreecommitdiff
path: root/Source/Android/app/src/main/java
diff options
context:
space:
mode:
authorCharles Lombardo <clombardo169@gmail.com>2023-03-15 03:32:20 -0400
committerCharles Lombardo <clombardo169@gmail.com>2023-03-15 17:35:48 -0400
commit917a0c2287d1898c368a2c5f131ffd5f50ce2d32 (patch)
treee27c3e037845b1f97976c3d09d623e68db4aea8f /Source/Android/app/src/main/java
parent7b7ee13162eaa1fd2547c42644bc48c5c3bbe84e (diff)
Android: Convert SettingViewHolder 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/viewholder/SettingViewHolder.java111
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SettingViewHolder.kt98
2 files changed, 98 insertions, 111 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SettingViewHolder.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SettingViewHolder.java
deleted file mode 100644
index 5217e4f889..0000000000
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SettingViewHolder.java
+++ /dev/null
@@ -1,111 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-package org.dolphinemu.dolphinemu.features.settings.ui.viewholder;
-
-import android.content.Context;
-import android.graphics.Paint;
-import android.graphics.Typeface;
-import android.view.View;
-import android.widget.TextView;
-import android.widget.Toast;
-
-import androidx.annotation.Nullable;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.google.android.material.dialog.MaterialAlertDialogBuilder;
-
-import org.dolphinemu.dolphinemu.DolphinApplication;
-import org.dolphinemu.dolphinemu.R;
-import org.dolphinemu.dolphinemu.features.settings.model.view.SettingsItem;
-import org.dolphinemu.dolphinemu.features.settings.ui.SettingsAdapter;
-
-public abstract class SettingViewHolder extends RecyclerView.ViewHolder
- implements View.OnClickListener, View.OnLongClickListener
-{
- private SettingsAdapter mAdapter;
-
- public SettingViewHolder(View itemView, SettingsAdapter adapter)
- {
- super(itemView);
-
- mAdapter = adapter;
-
- itemView.setOnClickListener(this);
- itemView.setOnLongClickListener(this);
- }
-
- protected SettingsAdapter getAdapter()
- {
- return mAdapter;
- }
-
- protected void setStyle(TextView textView, SettingsItem settingsItem)
- {
- boolean overridden = settingsItem.isOverridden();
- textView.setTypeface(null, overridden ? Typeface.BOLD : Typeface.NORMAL);
-
- if (!settingsItem.isEditable())
- textView.setPaintFlags(textView.getPaintFlags() | Paint.STRIKE_THRU_TEXT_FLAG);
- }
-
- protected static void showNotRuntimeEditableError()
- {
- Toast.makeText(DolphinApplication.getAppContext(), R.string.setting_not_runtime_editable,
- Toast.LENGTH_SHORT).show();
- }
-
- protected static void showIplNotAvailableError()
- {
- Toast.makeText(DolphinApplication.getAppContext(), R.string.ipl_not_found, Toast.LENGTH_SHORT)
- .show();
- }
-
- /**
- * Called by the adapter to set this ViewHolder's child views to display the list item
- * it must now represent.
- *
- * @param item The list item that should be represented by this ViewHolder.
- */
- public abstract void bind(SettingsItem item);
-
- /**
- * Called when this ViewHolder's view is clicked on. Implementations should usually pass
- * this event up to the adapter.
- *
- * @param clicked The view that was clicked on.
- */
- public abstract void onClick(View clicked);
-
- @Nullable
- protected abstract SettingsItem getItem();
-
- public boolean onLongClick(View clicked)
- {
- SettingsItem item = getItem();
-
- if (item == null || !item.canClear())
- return false;
-
- if (!item.isEditable())
- {
- showNotRuntimeEditableError();
- return true;
- }
-
- Context context = clicked.getContext();
-
- new MaterialAlertDialogBuilder(context)
- .setMessage(R.string.setting_clear_confirm)
- .setPositiveButton(R.string.ok, (dialog, whichButton) ->
- {
- getAdapter().clearSetting(item);
- bind(item);
- Toast.makeText(context, R.string.setting_cleared, Toast.LENGTH_SHORT).show();
- dialog.dismiss();
- })
- .setNegativeButton(R.string.cancel, (dialog, whichButton) -> dialog.dismiss())
- .show();
-
- return true;
- }
-}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SettingViewHolder.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SettingViewHolder.kt
new file mode 100644
index 0000000000..0767840154
--- /dev/null
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SettingViewHolder.kt
@@ -0,0 +1,98 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+package org.dolphinemu.dolphinemu.features.settings.ui.viewholder
+
+import android.content.DialogInterface
+import android.graphics.Paint
+import android.graphics.Typeface
+import android.view.View
+import android.view.View.OnLongClickListener
+import android.widget.TextView
+import android.widget.Toast
+import androidx.recyclerview.widget.RecyclerView
+import com.google.android.material.dialog.MaterialAlertDialogBuilder
+import org.dolphinemu.dolphinemu.DolphinApplication
+import org.dolphinemu.dolphinemu.R
+import org.dolphinemu.dolphinemu.features.settings.model.view.SettingsItem
+import org.dolphinemu.dolphinemu.features.settings.ui.SettingsAdapter
+
+abstract class SettingViewHolder(itemView: View, protected val adapter: SettingsAdapter) :
+ RecyclerView.ViewHolder(itemView), View.OnClickListener, OnLongClickListener {
+
+ init {
+ itemView.setOnClickListener(this)
+ itemView.setOnLongClickListener(this)
+ }
+
+ protected fun setStyle(textView: TextView, settingsItem: SettingsItem) {
+ val overridden = settingsItem.isOverridden
+ textView.setTypeface(null, if (overridden) Typeface.BOLD else Typeface.NORMAL)
+
+ if (!settingsItem.isEditable) textView.paintFlags =
+ textView.paintFlags or Paint.STRIKE_THRU_TEXT_FLAG
+ }
+
+ /**
+ * Called by the adapter to set this ViewHolder's child views to display the list item
+ * it must now represent.
+ *
+ * @param item The list item that should be represented by this ViewHolder.
+ */
+ abstract fun bind(item: SettingsItem)
+
+ /**
+ * Called when this ViewHolder's view is clicked on. Implementations should usually pass
+ * this event up to the adapter.
+ *
+ * @param clicked The view that was clicked on.
+ */
+ abstract override fun onClick(clicked: View)
+
+ protected abstract val item: SettingsItem?
+
+ override fun onLongClick(clicked: View): Boolean {
+ val item = item
+
+ if (item == null || !item.canClear()) return false
+
+ if (!item.isEditable) {
+ showNotRuntimeEditableError()
+ return true
+ }
+
+ val context = clicked.context
+
+ MaterialAlertDialogBuilder(context)
+ .setMessage(R.string.setting_clear_confirm)
+ .setPositiveButton(R.string.ok) { dialog: DialogInterface, _: Int ->
+ adapter.clearSetting(item)
+ bind(item)
+ Toast.makeText(
+ context,
+ R.string.setting_cleared,
+ Toast.LENGTH_SHORT
+ ).show()
+ dialog.dismiss()
+ }
+ .setNegativeButton(R.string.cancel) { dialog: DialogInterface, _: Int -> dialog.dismiss() }
+ .show()
+
+ return true
+ }
+
+ protected fun showIplNotAvailableError() {
+ Toast.makeText(
+ DolphinApplication.getAppContext(),
+ R.string.ipl_not_found,
+ Toast.LENGTH_SHORT
+ ).show()
+ }
+
+ protected fun showNotRuntimeEditableError() {
+ Toast.makeText(
+ DolphinApplication.getAppContext(),
+ R.string.setting_not_runtime_editable,
+ Toast.LENGTH_SHORT
+ ).show()
+ }
+}