summaryrefslogtreecommitdiff
path: root/app/src/main/java/de/danoeh/antennapod/adapter/DataFolderAdapter.java
diff options
context:
space:
mode:
authorByteHamster <info@bytehamster.com>2020-07-16 16:59:45 +0200
committerByteHamster <info@bytehamster.com>2020-07-16 16:59:45 +0200
commit663c715e3f675b23424290ffc3a7ad0d91d3796a (patch)
tree1a0a1ddfdc6a2e13d2afc2a2adeebca8d8f2ab08 /app/src/main/java/de/danoeh/antennapod/adapter/DataFolderAdapter.java
parent1ee5281e7a8f1b0864b1d13dcbbce58887d80e58 (diff)
parent607999064398eba9bd37b9a93c3c8ac19d00a9de (diff)
downloadAntennaPod-663c715e3f675b23424290ffc3a7ad0d91d3796a.zip
Merge branch 'master' into develop
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.java64
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);