mirror of https://github.com/tasks/tasks
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
2.0 KiB
Java
74 lines
2.0 KiB
Java
/**
|
|
* Copyright (c) 2012 Todoroo Inc
|
|
*
|
|
* See the file "LICENSE" for the full license governing this code.
|
|
*/
|
|
package com.todoroo.astrid.backup;
|
|
|
|
import java.io.File;
|
|
import java.io.FilenameFilter;
|
|
|
|
import android.app.AlertDialog;
|
|
import android.content.Context;
|
|
import android.content.DialogInterface;
|
|
import android.util.Log;
|
|
|
|
import org.tasks.R;
|
|
import com.todoroo.andlib.utility.AndroidUtilities;
|
|
|
|
public class FilePickerBuilder extends AlertDialog.Builder implements DialogInterface.OnClickListener {
|
|
|
|
public interface OnFilePickedListener {
|
|
void onFilePicked(String filePath);
|
|
}
|
|
|
|
private final OnFilePickedListener callback;
|
|
private String[] files;
|
|
private String path;
|
|
private FilenameFilter filter;
|
|
|
|
public FilePickerBuilder(Context ctx, String title, File path, OnFilePickedListener callback) {
|
|
super(ctx);
|
|
filter = new FilenameFilter() {
|
|
@Override
|
|
public boolean accept(File dir, String s) {
|
|
File file = new File(dir, s);
|
|
return file.isFile();
|
|
}
|
|
};
|
|
this.callback = callback;
|
|
setTitle(title);
|
|
setPath(path);
|
|
}
|
|
|
|
public void setFilter(FilenameFilter filter) {
|
|
this.filter = filter;
|
|
}
|
|
|
|
private void setPath(File path) {
|
|
if (path != null && path.exists()) {
|
|
this.path = path.getAbsolutePath();
|
|
|
|
File[] filesAsFile = path.listFiles(filter);
|
|
AndroidUtilities.sortFilesByDateDesc(filesAsFile);
|
|
|
|
files = new String[filesAsFile.length];
|
|
for(int i = 0; i < files.length; i++) {
|
|
files[i] = filesAsFile[i].getName();
|
|
}
|
|
|
|
setItems(files, this);
|
|
} else {
|
|
Log.e("FilePicker", "Cannot access sdcard.");
|
|
setMessage(R.string.DLG_error_sdcard + "sdcard");
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void onClick(DialogInterface dialogInterface, int i) {
|
|
if (callback != null) {
|
|
callback.onFilePicked(path + "/" + files[i]);
|
|
}
|
|
}
|
|
}
|