diff options
| author | Charles Lombardo <clombardo169@gmail.com> | 2023-03-01 17:15:41 -0500 |
|---|---|---|
| committer | Charles Lombardo <clombardo169@gmail.com> | 2023-03-01 17:32:19 -0500 |
| commit | 7efb672be6c91a41da8405e7e6d0677147a005e9 (patch) | |
| tree | b41afeaa5ce12ec6364fb5e08852643797641b9c /Source/Android/app/src/main/java/org | |
| parent | 36f1315513e9e12f81dc219882c3b15bc421797f (diff) | |
Android: Convert SkylanderSlotAdapter to Kotlin
Diffstat (limited to 'Source/Android/app/src/main/java/org')
2 files changed, 132 insertions, 160 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/skylanders/ui/SkylanderSlotAdapter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/skylanders/ui/SkylanderSlotAdapter.java deleted file mode 100644 index 65171ab112..0000000000 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/skylanders/ui/SkylanderSlotAdapter.java +++ /dev/null @@ -1,160 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-or-later
-
-package org.dolphinemu.dolphinemu.features.skylanders.ui;
-
-import android.content.Intent;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.AdapterView;
-import android.widget.ArrayAdapter;
-import android.widget.Toast;
-
-import androidx.annotation.NonNull;
-import androidx.appcompat.app.AlertDialog;
-import androidx.recyclerview.widget.RecyclerView;
-
-import com.google.android.material.dialog.MaterialAlertDialogBuilder;
-
-import org.dolphinemu.dolphinemu.R;
-import org.dolphinemu.dolphinemu.activities.EmulationActivity;
-import org.dolphinemu.dolphinemu.databinding.DialogCreateSkylanderBinding;
-import org.dolphinemu.dolphinemu.databinding.ListItemSkylanderSlotBinding;
-import org.dolphinemu.dolphinemu.features.skylanders.SkylanderConfig;
-import org.dolphinemu.dolphinemu.features.skylanders.model.SkylanderPair;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class SkylanderSlotAdapter extends RecyclerView.Adapter<SkylanderSlotAdapter.ViewHolder>
- implements AdapterView.OnItemClickListener
-{
- public static class ViewHolder extends RecyclerView.ViewHolder
- {
- public ListItemSkylanderSlotBinding binding;
-
- public ViewHolder(@NonNull ListItemSkylanderSlotBinding binding)
- {
- super(binding.getRoot());
- this.binding = binding;
- }
- }
-
- private final List<SkylanderSlot> mSlots;
- private final EmulationActivity mActivity;
-
- private DialogCreateSkylanderBinding mBinding;
-
- public SkylanderSlotAdapter(List<SkylanderSlot> slots, EmulationActivity context)
- {
- mSlots = slots;
- mActivity = context;
- }
-
- @NonNull
- @Override
- public SkylanderSlotAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType)
- {
- LayoutInflater inflater = LayoutInflater.from(parent.getContext());
- ListItemSkylanderSlotBinding binding =
- ListItemSkylanderSlotBinding.inflate(inflater, parent, false);
- return new ViewHolder(binding);
- }
-
- @Override
- public void onBindViewHolder(@NonNull ViewHolder holder, int position)
- {
- SkylanderSlot slot = mSlots.get(position);
- holder.binding.textSkylanderName.setText(slot.getLabel());
-
- holder.binding.buttonClearSkylander.setOnClickListener(v ->
- {
- SkylanderConfig.removeSkylander(slot.getPortalSlot());
- mActivity.clearSkylander(slot.getSlotNum());
- });
-
- holder.binding.buttonLoadSkylander.setOnClickListener(v ->
- {
- Intent loadSkylander = new Intent(Intent.ACTION_OPEN_DOCUMENT);
- loadSkylander.addCategory(Intent.CATEGORY_OPENABLE);
- loadSkylander.setType("*/*");
- mActivity.setSkylanderData(0, 0, "", position);
- mActivity.startActivityForResult(loadSkylander, EmulationActivity.REQUEST_SKYLANDER_FILE);
- });
-
- LayoutInflater inflater = LayoutInflater.from(mActivity);
- mBinding = DialogCreateSkylanderBinding.inflate(inflater);
-
- List<String> skylanderNames = new ArrayList<>(SkylanderConfig.REVERSE_LIST_SKYLANDERS.keySet());
- skylanderNames.sort(String::compareToIgnoreCase);
-
- mBinding.skylanderDropdown.setAdapter(
- new ArrayAdapter<>(mActivity, R.layout.support_simple_spinner_dropdown_item,
- skylanderNames));
- mBinding.skylanderDropdown.setOnItemClickListener(this);
-
- holder.binding.buttonCreateSkylander.setOnClickListener(v ->
- {
- if (mBinding.getRoot().getParent() != null)
- {
- ((ViewGroup) mBinding.getRoot().getParent()).removeAllViews();
- }
- AlertDialog createDialog = new MaterialAlertDialogBuilder(mActivity)
- .setTitle(R.string.create_skylander_title)
- .setView(mBinding.getRoot())
- .setPositiveButton(R.string.create_skylander, null)
- .setNegativeButton(R.string.cancel, null)
- .show();
- createDialog.getButton(android.app.AlertDialog.BUTTON_POSITIVE).setOnClickListener(
- v1 ->
- {
- if (!mBinding.skylanderId.getText().toString().isBlank() &&
- !mBinding.skylanderVar.getText().toString().isBlank())
- {
- Intent createSkylander = new Intent(Intent.ACTION_CREATE_DOCUMENT);
- createSkylander.addCategory(Intent.CATEGORY_OPENABLE);
- createSkylander.setType("*/*");
- int id = Integer.parseInt(mBinding.skylanderId.getText().toString());
- int var = Integer.parseInt(mBinding.skylanderVar.getText().toString());
- String name = SkylanderConfig.LIST_SKYLANDERS.get(new SkylanderPair(id, var));
- if (name != null)
- {
- createSkylander.putExtra(Intent.EXTRA_TITLE,
- name + ".sky");
- mActivity.setSkylanderData(id, var, name, position);
- }
- else
- {
- createSkylander.putExtra(Intent.EXTRA_TITLE,
- "Unknown(ID" + id + "Var" + var + ").sky");
- mActivity.setSkylanderData(id, var, "Unknown", position);
- }
- mActivity.startActivityForResult(createSkylander,
- EmulationActivity.REQUEST_CREATE_SKYLANDER);
- createDialog.dismiss();
- }
- else
- {
- Toast.makeText(mActivity, R.string.invalid_skylander,
- Toast.LENGTH_SHORT).show();
- }
- });
- });
-
- }
-
- @Override
- public int getItemCount()
- {
- return mSlots.size();
- }
-
- @Override
- public void onItemClick(AdapterView<?> parent, View view, int position, long id)
- {
- SkylanderPair skylanderIdVar =
- SkylanderConfig.REVERSE_LIST_SKYLANDERS.get(parent.getItemAtPosition(position));
- mBinding.skylanderId.setText(String.valueOf(skylanderIdVar.getId()));
- mBinding.skylanderVar.setText(String.valueOf(skylanderIdVar.getVar()));
- }
-}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/skylanders/ui/SkylanderSlotAdapter.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/skylanders/ui/SkylanderSlotAdapter.kt new file mode 100644 index 0000000000..bc23ca3f37 --- /dev/null +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/skylanders/ui/SkylanderSlotAdapter.kt @@ -0,0 +1,132 @@ +// SPDX-License-Identifier: GPL-2.0-or-later
+
+package org.dolphinemu.dolphinemu.features.skylanders.ui
+
+import android.app.AlertDialog
+import android.content.Intent
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.widget.AdapterView
+import android.widget.AdapterView.OnItemClickListener
+import android.widget.ArrayAdapter
+import android.widget.Toast
+import androidx.recyclerview.widget.RecyclerView
+import com.google.android.material.dialog.MaterialAlertDialogBuilder
+import org.dolphinemu.dolphinemu.R
+import org.dolphinemu.dolphinemu.activities.EmulationActivity
+import org.dolphinemu.dolphinemu.databinding.DialogCreateSkylanderBinding
+import org.dolphinemu.dolphinemu.databinding.ListItemSkylanderSlotBinding
+import org.dolphinemu.dolphinemu.features.skylanders.SkylanderConfig
+import org.dolphinemu.dolphinemu.features.skylanders.SkylanderConfig.removeSkylander
+import org.dolphinemu.dolphinemu.features.skylanders.model.SkylanderPair
+
+class SkylanderSlotAdapter(
+ private val slots: List<SkylanderSlot>,
+ private val activity: EmulationActivity
+) : RecyclerView.Adapter<SkylanderSlotAdapter.ViewHolder>(), OnItemClickListener {
+ class ViewHolder(var binding: ListItemSkylanderSlotBinding) :
+ RecyclerView.ViewHolder(binding.getRoot())
+
+ private lateinit var binding: DialogCreateSkylanderBinding
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
+ val inflater = LayoutInflater.from(parent.context)
+ val binding = ListItemSkylanderSlotBinding.inflate(inflater, parent, false)
+ return ViewHolder(binding)
+ }
+
+ override fun onBindViewHolder(holder: ViewHolder, position: Int) {
+ val slot = slots[position]
+ holder.binding.textSkylanderName.text = slot.label
+
+ holder.binding.buttonClearSkylander.setOnClickListener {
+ removeSkylander(slot.portalSlot)
+ activity.clearSkylander(slot.slotNum)
+ }
+
+ holder.binding.buttonLoadSkylander.setOnClickListener {
+ val loadSkylander = Intent(Intent.ACTION_OPEN_DOCUMENT)
+ loadSkylander.addCategory(Intent.CATEGORY_OPENABLE)
+ loadSkylander.type = "*/*"
+ activity.setSkylanderData(0, 0, "", position)
+ activity.startActivityForResult(
+ loadSkylander,
+ EmulationActivity.REQUEST_SKYLANDER_FILE
+ )
+ }
+
+ val inflater = LayoutInflater.from(activity)
+ binding = DialogCreateSkylanderBinding.inflate(inflater)
+
+ val nameList = SkylanderConfig.REVERSE_LIST_SKYLANDERS.keys.toMutableList()
+ nameList.sort()
+ val skylanderNames: ArrayList<String> = ArrayList(nameList)
+
+ binding.skylanderDropdown.setAdapter(
+ ArrayAdapter(
+ activity, R.layout.support_simple_spinner_dropdown_item,
+ skylanderNames
+ )
+ )
+ binding.skylanderDropdown.onItemClickListener = this
+
+ holder.binding.buttonCreateSkylander.setOnClickListener {
+ if (binding.getRoot().parent != null) {
+ (binding.getRoot().parent as ViewGroup).removeAllViews()
+ }
+ val createDialog = MaterialAlertDialogBuilder(activity)
+ .setTitle(R.string.create_skylander_title)
+ .setView(binding.getRoot())
+ .setPositiveButton(R.string.create_skylander, null)
+ .setNegativeButton(R.string.cancel, null)
+ .show()
+ createDialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener {
+ if (binding.skylanderId.text.toString().isNotBlank() &&
+ binding.skylanderVar.text.toString().isNotBlank()
+ ) {
+ val createSkylander = Intent(Intent.ACTION_CREATE_DOCUMENT)
+ createSkylander.addCategory(Intent.CATEGORY_OPENABLE)
+ createSkylander.type = "*/*"
+ val id = binding.skylanderId.text.toString().toInt()
+ val variant = binding.skylanderVar.text.toString().toInt()
+ val name = SkylanderConfig.LIST_SKYLANDERS[SkylanderPair(id, variant)]
+ if (name != null) {
+ createSkylander.putExtra(
+ Intent.EXTRA_TITLE,
+ "$name.sky"
+ )
+ activity.setSkylanderData(id, variant, name, position)
+ } else {
+ createSkylander.putExtra(
+ Intent.EXTRA_TITLE,
+ "Unknown(ID: " + id + "Variant: " + variant + ").sky"
+ )
+ activity.setSkylanderData(id, variant, "Unknown", position)
+ }
+ activity.startActivityForResult(
+ createSkylander,
+ EmulationActivity.REQUEST_CREATE_SKYLANDER
+ )
+ createDialog.dismiss()
+ } else {
+ Toast.makeText(
+ activity, R.string.invalid_skylander,
+ Toast.LENGTH_SHORT
+ ).show()
+ }
+ }
+ }
+ }
+
+ override fun getItemCount(): Int {
+ return slots.size
+ }
+
+ override fun onItemClick(parent: AdapterView<*>, view: View, position: Int, id: Long) {
+ val skylanderIdVar =
+ SkylanderConfig.REVERSE_LIST_SKYLANDERS[parent.getItemAtPosition(position)]
+ binding.skylanderId.setText(skylanderIdVar!!.id.toString())
+ binding.skylanderVar.setText(skylanderIdVar.variant.toString())
+ }
+}
|
