diff --git a/astrid/plugin-src/com/todoroo/astrid/files/AACRecordingActivity.java b/astrid/plugin-src/com/todoroo/astrid/files/AACRecordingActivity.java
index c4916bd6c..b78d06a94 100644
--- a/astrid/plugin-src/com/todoroo/astrid/files/AACRecordingActivity.java
+++ b/astrid/plugin-src/com/todoroo/astrid/files/AACRecordingActivity.java
@@ -1,5 +1,6 @@
package com.todoroo.astrid.files;
+import java.io.File;
import java.io.IOException;
import android.app.Activity;
@@ -84,8 +85,8 @@ public class AACRecordingActivity extends Activity implements AACRecorderCallbac
public void encodingFinished() {
try {
StringBuilder filePathBuilder = new StringBuilder();
- filePathBuilder.append(getExternalFilesDir("audio").toString())
- .append("/")
+ filePathBuilder.append(getExternalFilesDir(FileMetadata.AUDIO_DIRECTORY).toString())
+ .append(File.separator)
.append(taskId)
.append("_")
.append(DateUtilities.now())
diff --git a/astrid/plugin-src/com/todoroo/astrid/files/FileExplore.java b/astrid/plugin-src/com/todoroo/astrid/files/FileExplore.java
index 7858eabdb..a6be32093 100644
--- a/astrid/plugin-src/com/todoroo/astrid/files/FileExplore.java
+++ b/astrid/plugin-src/com/todoroo/astrid/files/FileExplore.java
@@ -9,6 +9,7 @@ import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.Dialog;
import android.content.DialogInterface;
+import android.content.DialogInterface.OnCancelListener;
import android.content.Intent;
import android.os.Bundle;
import android.os.Environment;
@@ -212,6 +213,13 @@ public class FileExplore extends Activity {
break;
}
dialog = builder.show();
+ dialog.setCancelable(true);
+ dialog.setOnCancelListener(new OnCancelListener() {
+ @Override
+ public void onCancel(DialogInterface d) {
+ finish();
+ }
+ });
return dialog;
}
diff --git a/astrid/plugin-src/com/todoroo/astrid/files/FileMetadata.java b/astrid/plugin-src/com/todoroo/astrid/files/FileMetadata.java
index e64099a2f..4f8c85ed1 100644
--- a/astrid/plugin-src/com/todoroo/astrid/files/FileMetadata.java
+++ b/astrid/plugin-src/com/todoroo/astrid/files/FileMetadata.java
@@ -11,6 +11,9 @@ public class FileMetadata {
/** metadata key */
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 */
public static final int FILE_TYPE_AUDIO = 0;
public static final int FILE_TYPE_IMG = 1;
diff --git a/astrid/plugin-src/com/todoroo/astrid/files/FilesControlSet.java b/astrid/plugin-src/com/todoroo/astrid/files/FilesControlSet.java
index 28843b283..d6898a5f6 100644
--- a/astrid/plugin-src/com/todoroo/astrid/files/FilesControlSet.java
+++ b/astrid/plugin-src/com/todoroo/astrid/files/FilesControlSet.java
@@ -124,10 +124,13 @@ public class FilesControlSet extends PopupControlSet {
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface d, int which) {
- metadataService.delete(m);
- files.remove(m);
- refreshDisplayView();
- finalList.removeView(fileRow);
+ File f = new File(m.getValue(FileMetadata.FILE_PATH));
+ if (f.delete()) {
+ metadataService.delete(m);
+ files.remove(m);
+ refreshDisplayView();
+ finalList.removeView(fileRow);
+ }
}
}, null);
}
diff --git a/astrid/res/values/strings-premium.xml b/astrid/res/values/strings-premium.xml
index 53d17ac0e..0aba2a908 100644
--- a/astrid/res/values/strings-premium.xml
+++ b/astrid/res/values/strings-premium.xml
@@ -20,4 +20,5 @@
Up
Choose a file
Permissions error! Please make sure you have not blocked Astrid from accessing the SD card.
+ Error copying file for attachment
diff --git a/astrid/src/com/todoroo/astrid/activity/TaskEditFragment.java b/astrid/src/com/todoroo/astrid/activity/TaskEditFragment.java
index eb8b2617a..75321435d 100755
--- a/astrid/src/com/todoroo/astrid/activity/TaskEditFragment.java
+++ b/astrid/src/com/todoroo/astrid/activity/TaskEditFragment.java
@@ -1010,6 +1010,26 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener {
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
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
@@ -1124,10 +1144,7 @@ ViewPager.OnPageChangeListener, EditNoteActivity.UpdatesChangedListener {
metadataService.save(audioMetadata);
filesControlSet.refreshMetadata();
} else if (requestCode == REQUEST_CODE_ATTACH_FILE && resultCode == Activity.RESULT_OK) {
- String selectedFile = data.getStringExtra(FileExplore.EXTRA_FILE_SELECTED);
- Metadata fileMetadata = FileMetadata.createNewFileMetadata(model.getId(), selectedFile, FileMetadata.FILE_TYPE_OTHER);
- metadataService.save(fileMetadata);
- filesControlSet.refreshMetadata();
+ attachFile(data.getStringExtra(FileExplore.EXTRA_FILE_SELECTED));
}
// respond to sharing logoin