summaryrefslogtreecommitdiff
path: root/app/src/main/java/de/danoeh/antennapod/dialog/ChooseDataFolderDialog.java
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/dialog/ChooseDataFolderDialog.java')
-rw-r--r--app/src/main/java/de/danoeh/antennapod/dialog/ChooseDataFolderDialog.java64
1 files changed, 7 insertions, 57 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/ChooseDataFolderDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/ChooseDataFolderDialog.java
index e8faa7c29..c185a5557 100644
--- a/app/src/main/java/de/danoeh/antennapod/dialog/ChooseDataFolderDialog.java
+++ b/app/src/main/java/de/danoeh/antennapod/dialog/ChooseDataFolderDialog.java
@@ -1,20 +1,11 @@
package de.danoeh.antennapod.dialog;
import android.content.Context;
-import android.os.Build;
-import android.support.v4.content.ContextCompat;
-import android.text.Html;
import com.afollestad.materialdialogs.MaterialDialog;
-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.Converter;
-import de.danoeh.antennapod.core.util.StorageUtils;
+import de.danoeh.antennapod.adapter.DataFolderAdapter;
public class ChooseDataFolderDialog {
@@ -31,39 +22,9 @@ public class ChooseDataFolderDialog {
private ChooseDataFolderDialog() {}
public static void showDialog(final Context context, RunnableWithString handlerFunc) {
- File dataFolder = UserPreferences.getDataFolder(null);
- if (dataFolder == null) {
- new MaterialDialog.Builder(context)
- .title(R.string.error_label)
- .content(R.string.external_storage_error_msg)
- .neutralText(android.R.string.ok)
- .show();
- return;
- }
- String dataFolderPath = dataFolder.getAbsolutePath();
- int selectedIndex = -1;
- int index = 0;
- File[] mediaDirs = ContextCompat.getExternalFilesDirs(context, null);
- final List<String> folders = new ArrayList<>(mediaDirs.length);
- final List<CharSequence> choices = new ArrayList<>(mediaDirs.length);
- for (File dir : mediaDirs) {
- if(dir == null || !dir.exists() || !dir.canRead() || !dir.canWrite()) {
- continue;
- }
- String path = dir.getAbsolutePath();
- folders.add(path);
- if(dataFolderPath.equals(path)) {
- selectedIndex = index;
- }
- int prefixIndex = path.indexOf("Android");
- String choice = (prefixIndex > 0) ? path.substring(0, prefixIndex) : path;
- long bytes = StorageUtils.getFreeSpaceAvailable(path);
- String item = String.format(
- "<small>%1$s [%2$s]</small>", choice, Converter.byteToString(bytes));
- choices.add(fromHtmlVersioned(item));
- index++;
- }
- if (choices.isEmpty()) {
+ DataFolderAdapter adapter = new DataFolderAdapter(context, handlerFunc);
+
+ if (adapter.getItemCount() == 0) {
new MaterialDialog.Builder(context)
.title(R.string.error_label)
.content(R.string.external_storage_error_msg)
@@ -71,27 +32,16 @@ public class ChooseDataFolderDialog {
.show();
return;
}
+
MaterialDialog dialog = new MaterialDialog.Builder(context)
.title(R.string.choose_data_directory)
.content(R.string.choose_data_directory_message)
- .items(choices)
- .itemsCallbackSingleChoice(selectedIndex, (dialog1, itemView, which, text) -> {
- String folder = folders.get(which);
- handlerFunc.run(folder);
- return true;
- })
+ .adapter(adapter, null)
.negativeText(R.string.cancel_label)
.cancelable(true)
.build();
+ adapter.setDialog(dialog);
dialog.show();
}
- @SuppressWarnings("deprecation")
- private static CharSequence fromHtmlVersioned(final String html) {
- if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
- return Html.fromHtml(html);
- }
- return Html.fromHtml(html, Html.FROM_HTML_MODE_LEGACY);
- }
-
} \ No newline at end of file