Merge pull request #7791 from JosJuice/android-show-files

Android: Show files in the directory picker
This commit is contained in:
JosJuice 2019-02-16 18:11:20 +01:00 committed by GitHub
commit 286aafd4ed
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -4,10 +4,7 @@ import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.content.FileProvider;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import org.dolphinemu.dolphinemu.R;
@ -15,9 +12,15 @@ import org.dolphinemu.dolphinemu.R;
import com.nononsenseapps.filepicker.FilePickerFragment;
import java.io.File;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
public class CustomFilePickerFragment extends FilePickerFragment
{
private static final Set<String> extensions = new HashSet<>(Arrays.asList(
"gcm", "tgc", "iso", "ciso", "gcz", "wbfs", "wad", "dol", "elf"));
@NonNull
@Override
public Uri toUri(@NonNull final File file)
@ -41,4 +44,33 @@ public class CustomFilePickerFragment extends FilePickerFragment
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() ||
extensions.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);
}
}