diff options
author | ByteHamster <info@bytehamster.com> | 2020-08-15 19:56:21 +0200 |
---|---|---|
committer | ByteHamster <info@bytehamster.com> | 2020-08-15 19:56:34 +0200 |
commit | b25e0933ab606ac45ef9c26a745f25845d3af3fc (patch) | |
tree | 0344f78cbc1bbf1148ea07c63bdd1212a412a2e7 /app/src/main/java/de/danoeh/antennapod/adapter/DataFolderAdapter.java | |
parent | 3c5e1138ca1c616dd7add9d567442cc0d9a510ac (diff) | |
parent | d8674e8050fd98961f7eaa9fa844eb03d8bbfb48 (diff) | |
download | AntennaPod-b25e0933ab606ac45ef9c26a745f25845d3af3fc.zip |
Merge branch 'develop' into add-local-feeds
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/adapter/DataFolderAdapter.java')
-rw-r--r-- | app/src/main/java/de/danoeh/antennapod/adapter/DataFolderAdapter.java | 64 |
1 files changed, 27 insertions, 37 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/DataFolderAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/DataFolderAdapter.java index 64560df56..bcad1b5a4 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/DataFolderAdapter.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/DataFolderAdapter.java @@ -1,6 +1,5 @@ package de.danoeh.antennapod.adapter; -import android.app.Dialog; import android.content.Context; import android.text.format.Formatter; import android.view.LayoutInflater; @@ -9,29 +8,25 @@ import android.view.ViewGroup; import android.widget.ProgressBar; import android.widget.RadioButton; import android.widget.TextView; - import androidx.annotation.NonNull; import androidx.core.content.ContextCompat; +import androidx.core.util.Consumer; import androidx.recyclerview.widget.RecyclerView; - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - import de.danoeh.antennapod.R; import de.danoeh.antennapod.core.preferences.UserPreferences; import de.danoeh.antennapod.core.util.StorageUtils; -import de.danoeh.antennapod.dialog.ChooseDataFolderDialog; +import java.io.File; +import java.util.ArrayList; +import java.util.List; public class DataFolderAdapter extends RecyclerView.Adapter<DataFolderAdapter.ViewHolder> { - private final ChooseDataFolderDialog.RunnableWithString selectionHandler; + private final Consumer<String> selectionHandler; private final String currentPath; private final List<StoragePath> entries; private final String freeSpaceString; - private Dialog dialog; - public DataFolderAdapter(Context context, ChooseDataFolderDialog.RunnableWithString selectionHandler) { + public DataFolderAdapter(Context context, @NonNull Consumer<String> selectionHandler) { this.entries = getStorageEntries(context); this.currentPath = getCurrentPath(); this.selectionHandler = selectionHandler; @@ -56,8 +51,10 @@ public class DataFolderAdapter extends RecyclerView.Adapter<DataFolderAdapter.Vi holder.path.setText(storagePath.getShortPath()); holder.size.setText(String.format(freeSpaceString, freeSpace, totalSpace)); holder.progressBar.setProgress(storagePath.getUsagePercentage()); - holder.root.setOnClickListener((View v) -> selectAndDismiss(storagePath)); - holder.radioButton.setOnClickListener((View v) -> selectAndDismiss(storagePath)); + View.OnClickListener selectListener = v -> selectionHandler.accept(storagePath.getFullPath()); + holder.root.setOnClickListener(selectListener); + holder.radioButton.setOnClickListener(selectListener); + if (storagePath.getFullPath().equals(currentPath)) { holder.radioButton.toggle(); } @@ -65,20 +62,14 @@ public class DataFolderAdapter extends RecyclerView.Adapter<DataFolderAdapter.Vi @Override public int getItemCount() { - if (currentPath == null) { - return 0; - } else { - return entries.size(); - } - } - - public void setDialog(Dialog dialog) { - this.dialog = dialog; + return entries.size(); } private String getCurrentPath() { File dataFolder = UserPreferences.getDataFolder(null); - if (dataFolder != null) return dataFolder.getAbsolutePath(); + if (dataFolder != null) { + return dataFolder.getAbsolutePath(); + } return null; } @@ -86,28 +77,27 @@ public class DataFolderAdapter extends RecyclerView.Adapter<DataFolderAdapter.Vi File[] mediaDirs = ContextCompat.getExternalFilesDirs(context, null); final List<StoragePath> entries = new ArrayList<>(mediaDirs.length); for (File dir : mediaDirs) { - if (isNotWritable(dir)) continue; - + if (!isWritable(dir)) { + continue; + } entries.add(new StoragePath(dir.getAbsolutePath())); } + if (entries.isEmpty() && isWritable(context.getFilesDir())) { + entries.add(new StoragePath(context.getFilesDir().getAbsolutePath())); + } return entries; } - private boolean isNotWritable(File dir) { - return dir == null || !dir.exists() || !dir.canRead() || !dir.canWrite(); - } - - private void selectAndDismiss(StoragePath storagePath) { - selectionHandler.run(storagePath.getFullPath()); - dialog.dismiss(); + private boolean isWritable(File dir) { + return dir != null && dir.exists() && dir.canRead() && dir.canWrite(); } static class ViewHolder extends RecyclerView.ViewHolder { - private View root; - private TextView path; - private TextView size; - private RadioButton radioButton; - private ProgressBar progressBar; + private final View root; + private final TextView path; + private final TextView size; + private final RadioButton radioButton; + private final ProgressBar progressBar; ViewHolder(View itemView) { super(itemView); |