summaryrefslogtreecommitdiff
path: root/Source/Android/app/src/main/java
diff options
context:
space:
mode:
authorCharles Lombardo <clombardo169@gmail.com>2023-06-10 13:44:16 -0400
committerCharles Lombardo <clombardo169@gmail.com>2023-06-11 00:53:26 -0400
commit7e7cd6ff7604322ff17eabeeabc93bc6d97bbcc2 (patch)
treeeee82e94de5f8ac833155b9f9e841dd8f82e16e2 /Source/Android/app/src/main/java
parent35bb663c2abfba0208931b85d779ed5a0084c7e8 (diff)
Android: Convert CustomFilePickerFragment to Kotlin
Diffstat (limited to 'Source/Android/app/src/main/java')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/CustomFilePickerFragment.java90
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/CustomFilePickerFragment.kt73
2 files changed, 73 insertions, 90 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/CustomFilePickerFragment.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/CustomFilePickerFragment.java
deleted file mode 100644
index 933b4ad2ff..0000000000
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/CustomFilePickerFragment.java
+++ /dev/null
@@ -1,90 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-or-later
-
-package org.dolphinemu.dolphinemu.fragments;
-
-import android.net.Uri;
-import android.os.Bundle;
-import android.view.View;
-import android.widget.TextView;
-
-import androidx.annotation.NonNull;
-import androidx.core.content.FileProvider;
-
-import com.nononsenseapps.filepicker.FilePickerFragment;
-
-import org.dolphinemu.dolphinemu.R;
-
-import java.io.File;
-import java.util.HashSet;
-
-public class CustomFilePickerFragment extends FilePickerFragment
-{
- public static final String KEY_EXTENSIONS = "KEY_EXTENSIONS";
-
- private HashSet<String> mExtensions;
-
- public void setExtensions(HashSet<String> extensions)
- {
- Bundle b = getArguments();
- if (b == null)
- b = new Bundle();
-
- b.putSerializable(KEY_EXTENSIONS, extensions);
- setArguments(b);
- }
-
- @NonNull
- @Override
- public Uri toUri(@NonNull final File file)
- {
- return FileProvider
- .getUriForFile(getContext(),
- getContext().getApplicationContext().getPackageName() + ".filesprovider",
- file);
- }
-
- @Override public void onActivityCreated(Bundle savedInstanceState)
- {
- super.onActivityCreated(savedInstanceState);
-
- mExtensions = (HashSet<String>) getArguments().getSerializable(KEY_EXTENSIONS);
-
- if (mode == MODE_DIR)
- {
- TextView ok = getActivity().findViewById(R.id.nnf_button_ok);
- ok.setText(R.string.select_dir);
-
- TextView cancel = getActivity().findViewById(R.id.nnf_button_cancel);
- cancel.setVisibility(View.GONE);
- }
- }
-
- @Override
- protected boolean isItemVisible(@NonNull final File file)
- {
- // Some users jump to the conclusion that Dolphin isn't able to detect their
- // files if the files don't show up in the file picker when mode == MODE_DIR.
- // To avoid this, show files even when the user needs to select a directory.
-
- return (showHiddenItems || !file.isHidden()) &&
- (file.isDirectory() ||
- mExtensions.contains(fileExtension(file.getName()).toLowerCase()));
- }
-
- @Override
- public boolean isCheckable(@NonNull final File file)
- {
- // We need to make a small correction to the isCheckable logic due to
- // overriding isItemVisible to show files when mode == MODE_DIR.
- // AbstractFilePickerFragment always treats files as checkable when
- // allowExistingFile == true, but we don't want files to be checkable when mode == MODE_DIR.
-
- return super.isCheckable(file) && !(mode == MODE_DIR && file.isFile());
- }
-
- private static String fileExtension(@NonNull String filename)
- {
- int i = filename.lastIndexOf('.');
- return i < 0 ? "" : filename.substring(i + 1);
- }
-}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/CustomFilePickerFragment.kt b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/CustomFilePickerFragment.kt
new file mode 100644
index 0000000000..aa74fb6f8a
--- /dev/null
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/CustomFilePickerFragment.kt
@@ -0,0 +1,73 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+package org.dolphinemu.dolphinemu.fragments
+
+import android.net.Uri
+import android.os.Bundle
+import android.view.View
+import android.widget.TextView
+import androidx.core.content.FileProvider
+import com.nononsenseapps.filepicker.FilePickerFragment
+import org.dolphinemu.dolphinemu.R
+import org.dolphinemu.dolphinemu.utils.SerializableHelper.serializable
+import java.io.File
+import java.util.Locale
+
+class CustomFilePickerFragment : FilePickerFragment() {
+ private var extensions: HashSet<String>? = null
+
+ fun setExtensions(extensions: HashSet<String>?) {
+ var b = arguments
+ if (b == null)
+ b = Bundle()
+ b.putSerializable(KEY_EXTENSIONS, extensions)
+ arguments = b
+ }
+
+ override fun toUri(file: File): Uri {
+ return FileProvider.getUriForFile(
+ requireContext(),
+ "${requireContext().applicationContext.packageName}.filesprovider",
+ file
+ )
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+
+ extensions = requireArguments().serializable(KEY_EXTENSIONS) as HashSet<String>?
+
+ if (mode == MODE_DIR) {
+ val ok = requireActivity().findViewById<TextView>(R.id.nnf_button_ok)
+ ok.setText(R.string.select_dir)
+
+ val cancel = requireActivity().findViewById<TextView>(R.id.nnf_button_cancel)
+ cancel.visibility = View.GONE
+ }
+ }
+
+ override fun isItemVisible(file: File): Boolean {
+ // Some users jump to the conclusion that Dolphin isn't able to detect their
+ // files if the files don't show up in the file picker when mode == MODE_DIR.
+ // To avoid this, show files even when the user needs to select a directory.
+ return (showHiddenItems || !file.isHidden) &&
+ (file.isDirectory || extensions!!.contains(fileExtension(file.name).lowercase(Locale.getDefault())))
+ }
+
+ override fun isCheckable(file: File): Boolean {
+ // We need to make a small correction to the isCheckable logic due to
+ // overriding isItemVisible to show files when mode == MODE_DIR.
+ // AbstractFilePickerFragment always treats files as checkable when
+ // allowExistingFile == true, but we don't want files to be checkable when mode == MODE_DIR.
+ return super.isCheckable(file) && !(mode == MODE_DIR && file.isFile)
+ }
+
+ companion object {
+ const val KEY_EXTENSIONS = "KEY_EXTENSIONS"
+
+ private fun fileExtension(filename: String): String {
+ val i = filename.lastIndexOf('.')
+ return if (i < 0) "" else filename.substring(i + 1)
+ }
+ }
+}