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