Copy files when attaching, code cleanup

pull/14/head
Sam Bosley 14 years ago
parent a45ffb0c79
commit a1f7c3603c

@ -1,5 +1,6 @@
package com.todoroo.astrid.files; package com.todoroo.astrid.files;
import java.io.File;
import java.io.IOException; import java.io.IOException;
import android.app.Activity; import android.app.Activity;
@ -84,8 +85,8 @@ public class AACRecordingActivity extends Activity implements AACRecorderCallbac
public void encodingFinished() { public void encodingFinished() {
try { try {
StringBuilder filePathBuilder = new StringBuilder(); StringBuilder filePathBuilder = new StringBuilder();
filePathBuilder.append(getExternalFilesDir("audio").toString()) filePathBuilder.append(getExternalFilesDir(FileMetadata.AUDIO_DIRECTORY).toString())
.append("/") .append(File.separator)
.append(taskId) .append(taskId)
.append("_") .append("_")
.append(DateUtilities.now()) .append(DateUtilities.now())

@ -9,6 +9,7 @@ import android.app.AlertDialog;
import android.app.AlertDialog.Builder; import android.app.AlertDialog.Builder;
import android.app.Dialog; import android.app.Dialog;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.DialogInterface.OnCancelListener;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.os.Environment; import android.os.Environment;
@ -212,6 +213,13 @@ public class FileExplore extends Activity {
break; break;
} }
dialog = builder.show(); dialog = builder.show();
dialog.setCancelable(true);
dialog.setOnCancelListener(new OnCancelListener() {
@Override
public void onCancel(DialogInterface d) {
finish();
}
});
return dialog; return dialog;
} }

@ -11,6 +11,9 @@ public class FileMetadata {
/** metadata key */ /** metadata key */
public static final String METADATA_KEY = "file"; //$NON-NLS-1$ public static final String METADATA_KEY = "file"; //$NON-NLS-1$
public static final String AUDIO_DIRECTORY = "audio"; //$NON-NLS-1$
public static final String FILES_DIRECTORY = "attachments"; //$NON-NLS-1$
/** Constants for file types */ /** Constants for file types */
public static final int FILE_TYPE_AUDIO = 0; public static final int FILE_TYPE_AUDIO = 0;
public static final int FILE_TYPE_IMG = 1; public static final int FILE_TYPE_IMG = 1;

@ -124,11 +124,14 @@ public class FilesControlSet extends PopupControlSet {
new DialogInterface.OnClickListener() { new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface d, int which) { public void onClick(DialogInterface d, int which) {
File f = new File(m.getValue(FileMetadata.FILE_PATH));
if (f.delete()) {
metadataService.delete(m); metadataService.delete(m);
files.remove(m); files.remove(m);
refreshDisplayView(); refreshDisplayView();
finalList.removeView(fileRow); finalList.removeView(fileRow);
} }
}
}, null); }, null);
} }
}); });

@ -20,4 +20,5 @@
<string name="file_browser_up">Up</string> <string name="file_browser_up">Up</string>
<string name="file_browser_title">Choose a file</string> <string name="file_browser_title">Choose a file</string>
<string name="file_browser_err_permissions">Permissions error! Please make sure you have not blocked Astrid from accessing the SD card.</string> <string name="file_browser_err_permissions">Permissions error! Please make sure you have not blocked Astrid from accessing the SD card.</string>
<string name="file_err_copy">Error copying file for attachment</string>
</resources> </resources>

@ -1010,6 +1010,26 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener {
startActivityForResult(recordAudio, REQUEST_CODE_RECORD); startActivityForResult(recordAudio, REQUEST_CODE_RECORD);
} }
private void attachFile(String file) {
File src = new File(file);
if (!src.exists()) {
Toast.makeText(getActivity(), R.string.file_err_copy, Toast.LENGTH_LONG);
return;
}
File dst = new File(getActivity().getExternalFilesDir(FileMetadata.FILES_DIRECTORY) + File.separator + src.getName());
try {
AndroidUtilities.copyFile(src, dst);
} catch (Exception e) {
Toast.makeText(getActivity(), R.string.file_err_copy, Toast.LENGTH_LONG);
return;
}
Metadata fileMetadata = FileMetadata.createNewFileMetadata(model.getId(), dst.getAbsolutePath(), FileMetadata.FILE_TYPE_OTHER);
metadataService.save(fileMetadata);
filesControlSet.refreshMetadata();
}
@Override @Override
public boolean onOptionsItemSelected(MenuItem item) { public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) { switch (item.getItemId()) {
@ -1124,10 +1144,7 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener {
metadataService.save(audioMetadata); metadataService.save(audioMetadata);
filesControlSet.refreshMetadata(); filesControlSet.refreshMetadata();
} else if (requestCode == REQUEST_CODE_ATTACH_FILE && resultCode == Activity.RESULT_OK) { } else if (requestCode == REQUEST_CODE_ATTACH_FILE && resultCode == Activity.RESULT_OK) {
String selectedFile = data.getStringExtra(FileExplore.EXTRA_FILE_SELECTED); attachFile(data.getStringExtra(FileExplore.EXTRA_FILE_SELECTED));
Metadata fileMetadata = FileMetadata.createNewFileMetadata(model.getId(), selectedFile, FileMetadata.FILE_TYPE_OTHER);
metadataService.save(fileMetadata);
filesControlSet.refreshMetadata();
} }
// respond to sharing logoin // respond to sharing logoin

Loading…
Cancel
Save