diff --git a/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java b/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java index 9bdcf9d1c..108e36bd2 100755 --- a/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java +++ b/src/main/java/com/todoroo/astrid/activity/TaskEditFragment.java @@ -8,7 +8,6 @@ package com.todoroo.astrid.activity; import android.app.Activity; import android.content.Context; import android.content.DialogInterface; -import android.content.Intent; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.support.v4.graphics.drawable.DrawableCompat; @@ -25,9 +24,7 @@ import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.astrid.dao.UserActivityDao; import com.todoroo.astrid.data.Task; -import com.todoroo.astrid.data.TaskAttachment; import com.todoroo.astrid.data.UserActivity; -import com.todoroo.astrid.files.AACRecordingActivity; import com.todoroo.astrid.files.FilesControlSet; import com.todoroo.astrid.notes.CommentsController; import com.todoroo.astrid.service.TaskDeleter; @@ -52,7 +49,6 @@ import javax.inject.Inject; import butterknife.Bind; import butterknife.ButterKnife; -import static android.app.Activity.RESULT_OK; import static org.tasks.date.DateTimeUtils.newDateTime; public final class TaskEditFragment extends InjectingFragment implements Toolbar.OnMenuItemClickListener { @@ -73,7 +69,6 @@ public final class TaskEditFragment extends InjectingFragment implements Toolbar private static final String EXTRA_TASK = "extra_task"; private static final String EXTRA_IS_NEW_TASK = "extra_is_new_task"; - private static final int REQUEST_CODE_RECORD = 30; // TODO: move this to file control set @Inject TaskService taskService; @Inject UserActivityDao userActivityDao; @@ -143,9 +138,6 @@ public final class TaskEditFragment extends InjectingFragment implements Toolbar AndroidUtilities.hideKeyboard(getActivity()); switch (item.getItemId()) { - case R.id.menu_record_note: - startRecordingAudio(); - return true; case R.id.menu_delete: deleteButtonClick(); return true; @@ -276,21 +268,6 @@ public final class TaskEditFragment extends InjectingFragment implements Toolbar .show(); } - private void startRecordingAudio() { - Intent recordAudio = new Intent(getActivity(), AACRecordingActivity.class); - startActivityForResult(recordAudio, REQUEST_CODE_RECORD); - } - - @Override - public void onActivityResult(int requestCode, int resultCode, Intent data) { - if (requestCode == REQUEST_CODE_RECORD && resultCode == RESULT_OK) { - String recordedAudioPath = data.getStringExtra(AACRecordingActivity.RESULT_OUTFILE); - String recordedAudioName = data.getStringExtra(AACRecordingActivity.RESULT_FILENAME); - getFilesControlSet().createNewFileAttachment(recordedAudioPath, recordedAudioName, TaskAttachment.FILE_TYPE_AUDIO + "m4a"); //$NON-NLS-1$ - } else { - super.onActivityResult(requestCode, resultCode, data); - } - } @Override public void onSaveInstanceState(Bundle outState) { diff --git a/src/main/java/com/todoroo/astrid/files/AACRecordingActivity.java b/src/main/java/com/todoroo/astrid/files/AACRecordingActivity.java index a53e1956b..04b3499a1 100644 --- a/src/main/java/com/todoroo/astrid/files/AACRecordingActivity.java +++ b/src/main/java/com/todoroo/astrid/files/AACRecordingActivity.java @@ -29,7 +29,6 @@ import butterknife.OnClick; public class AACRecordingActivity extends InjectingAppCompatActivity implements AACRecorderCallbacks { public static final String RESULT_OUTFILE = "outfile"; //$NON-NLS-1$ - public static final String RESULT_FILENAME = "filename"; //$NON-NLS-1$ private final AtomicReference nameRef = new AtomicReference<>(); private AACRecorder recorder; @@ -88,7 +87,6 @@ public class AACRecordingActivity extends InjectingAppCompatActivity implements public void encodingFinished() { Intent result = new Intent(); result.putExtra(RESULT_OUTFILE, tempFile); - result.putExtra(RESULT_FILENAME, nameRef.get()); setResult(RESULT_OK, result); finish(); } diff --git a/src/main/java/com/todoroo/astrid/files/FilesControlSet.java b/src/main/java/com/todoroo/astrid/files/FilesControlSet.java index 9c8f87a98..b350760da 100644 --- a/src/main/java/com/todoroo/astrid/files/FilesControlSet.java +++ b/src/main/java/com/todoroo/astrid/files/FilesControlSet.java @@ -129,9 +129,9 @@ public class FilesControlSet extends TaskEditControlFragment { if (requestCode == REQUEST_ADD_ATTACHMENT) { if (resultCode == Activity.RESULT_OK) { String path = data.getStringExtra(AddAttachmentActivity.EXTRA_PATH); + String type = data.getStringExtra(AddAttachmentActivity.EXTRA_TYPE); File file = new File(path); - String extension = path.substring(path.lastIndexOf('.') + 1); - createNewFileAttachment(path, file.getName(), TaskAttachment.FILE_TYPE_IMAGE + extension); + createNewFileAttachment(path, file.getName(), type); } } else { super.onActivityResult(requestCode, resultCode, data); diff --git a/src/main/java/org/tasks/activities/AddAttachmentActivity.java b/src/main/java/org/tasks/activities/AddAttachmentActivity.java index b395ee50b..c04a6cf1b 100644 --- a/src/main/java/org/tasks/activities/AddAttachmentActivity.java +++ b/src/main/java/org/tasks/activities/AddAttachmentActivity.java @@ -11,10 +11,12 @@ import android.webkit.MimeTypeMap; import android.widget.Toast; import com.todoroo.andlib.utility.AndroidUtilities; -import org.tasks.files.FileExplore; +import com.todoroo.astrid.data.TaskAttachment; +import com.todoroo.astrid.files.AACRecordingActivity; import org.tasks.R; import org.tasks.dialogs.AddAttachmentDialog; +import org.tasks.files.FileExplore; import org.tasks.injection.InjectingAppCompatActivity; import org.tasks.preferences.Preferences; @@ -31,11 +33,14 @@ import timber.log.Timber; public class AddAttachmentActivity extends InjectingAppCompatActivity implements DialogInterface.OnCancelListener, AddAttachmentDialog.AddAttachmentCallback { private static final String FRAG_TAG_ATTACHMENT_DIALOG = "frag_tag_attachment_dialog"; + private static final int REQUEST_CAMERA = 12120; private static final int REQUEST_GALLERY = 12121; private static final int REQUEST_STORAGE = 12122; + private static final int REQUEST_CODE_RECORD = 12123; public static final String EXTRA_PATH = "extra_path"; + public static final String EXTRA_TYPE = "extra_type"; @Inject Preferences preferences; @@ -63,6 +68,11 @@ public class AddAttachmentActivity extends InjectingAppCompatActivity implements startActivityForResult(new Intent(this, CameraActivity.class), REQUEST_CAMERA); } + @Override + public void recordNote() { + startActivityForResult(new Intent(this, AACRecordingActivity.class), REQUEST_CODE_RECORD); + } + @Override public void pickFromGallery() { Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI) {{ @@ -84,9 +94,22 @@ public class AddAttachmentActivity extends InjectingAppCompatActivity implements if (resultCode == RESULT_OK) { Uri uri = data.getParcelableExtra(CameraActivity.EXTRA_URI); final File file = new File(uri.getPath()); + String path = file.getPath(); Timber.i("Saved %s", file.getAbsolutePath()); + final String extension = path.substring(path.lastIndexOf('.') + 1); setResult(RESULT_OK, new Intent() {{ putExtra(EXTRA_PATH, file.getAbsolutePath()); + putExtra(EXTRA_TYPE, TaskAttachment.FILE_TYPE_IMAGE + extension); + }}); + } + finish(); + } else if (requestCode == REQUEST_CODE_RECORD) { + if (resultCode == RESULT_OK) { + final String recordedAudioPath = data.getStringExtra(AACRecordingActivity.RESULT_OUTFILE); + final String extension = recordedAudioPath.substring(recordedAudioPath.lastIndexOf('.') + 1); + setResult(RESULT_OK, new Intent() {{ + putExtra(EXTRA_PATH, recordedAudioPath); + putExtra(EXTRA_TYPE, TaskAttachment.FILE_TYPE_AUDIO + extension); }}); } finish(); @@ -95,7 +118,7 @@ public class AddAttachmentActivity extends InjectingAppCompatActivity implements Uri uri = data.getData(); ContentResolver contentResolver = getContentResolver(); MimeTypeMap mime = MimeTypeMap.getSingleton(); - String extension = mime.getExtensionFromMimeType(contentResolver.getType(uri)); + final String extension = mime.getExtensionFromMimeType(contentResolver.getType(uri)); final File tempFile = getFilename(extension); Timber.i("Writing %s to %s", uri, tempFile); try { @@ -106,6 +129,7 @@ public class AddAttachmentActivity extends InjectingAppCompatActivity implements } setResult(RESULT_OK, new Intent() {{ putExtra(EXTRA_PATH, tempFile.getAbsolutePath()); + putExtra(EXTRA_TYPE, TaskAttachment.FILE_TYPE_IMAGE + extension); }}); } finish(); @@ -115,8 +139,10 @@ public class AddAttachmentActivity extends InjectingAppCompatActivity implements final String destination = copyToAttachmentDirectory(path); if (destination != null) { Timber.i("Copied %s to %s", path, destination); + final String extension = destination.substring(path.lastIndexOf('.') + 1); setResult(RESULT_OK, new Intent() {{ putExtra(EXTRA_PATH, destination); + putExtra(EXTRA_TYPE, TaskAttachment.FILE_TYPE_IMAGE + extension); }}); } } diff --git a/src/main/java/org/tasks/dialogs/AddAttachmentDialog.java b/src/main/java/org/tasks/dialogs/AddAttachmentDialog.java index be9fda101..6f2bef8b2 100644 --- a/src/main/java/org/tasks/dialogs/AddAttachmentDialog.java +++ b/src/main/java/org/tasks/dialogs/AddAttachmentDialog.java @@ -19,6 +19,8 @@ public class AddAttachmentDialog extends InjectingDialogFragment { public interface AddAttachmentCallback { void takePicture(); + void recordNote(); + void pickFromGallery(); void pickFromStorage(); @@ -43,6 +45,13 @@ public class AddAttachmentDialog extends InjectingDialogFragment { } }); } + entries.add(getString(R.string.premium_record_audio)); + actions.add(new Runnable() { + @Override + public void run() { + callback.recordNote(); + } + }); if (device.hasGallery()) { entries.add(getString(R.string.pick_from_gallery)); actions.add(new Runnable() { diff --git a/src/main/res/menu/task_edit_fragment.xml b/src/main/res/menu/task_edit_fragment.xml index 9d9481d2e..494c72b36 100644 --- a/src/main/res/menu/task_edit_fragment.xml +++ b/src/main/res/menu/task_edit_fragment.xml @@ -2,11 +2,6 @@ -