Move record a note to add attachment activity

pull/384/head
Alex Baker 10 years ago
parent 923c349d8a
commit 9e83129915

@ -8,7 +8,6 @@ package com.todoroo.astrid.activity;
import android.app.Activity; import android.app.Activity;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.os.Bundle; import android.os.Bundle;
import android.support.v4.graphics.drawable.DrawableCompat; 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.andlib.utility.DateUtilities;
import com.todoroo.astrid.dao.UserActivityDao; import com.todoroo.astrid.dao.UserActivityDao;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.data.TaskAttachment;
import com.todoroo.astrid.data.UserActivity; import com.todoroo.astrid.data.UserActivity;
import com.todoroo.astrid.files.AACRecordingActivity;
import com.todoroo.astrid.files.FilesControlSet; import com.todoroo.astrid.files.FilesControlSet;
import com.todoroo.astrid.notes.CommentsController; import com.todoroo.astrid.notes.CommentsController;
import com.todoroo.astrid.service.TaskDeleter; import com.todoroo.astrid.service.TaskDeleter;
@ -52,7 +49,6 @@ import javax.inject.Inject;
import butterknife.Bind; import butterknife.Bind;
import butterknife.ButterKnife; import butterknife.ButterKnife;
import static android.app.Activity.RESULT_OK;
import static org.tasks.date.DateTimeUtils.newDateTime; import static org.tasks.date.DateTimeUtils.newDateTime;
public final class TaskEditFragment extends InjectingFragment implements Toolbar.OnMenuItemClickListener { 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_TASK = "extra_task";
private static final String EXTRA_IS_NEW_TASK = "extra_is_new_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 TaskService taskService;
@Inject UserActivityDao userActivityDao; @Inject UserActivityDao userActivityDao;
@ -143,9 +138,6 @@ public final class TaskEditFragment extends InjectingFragment implements Toolbar
AndroidUtilities.hideKeyboard(getActivity()); AndroidUtilities.hideKeyboard(getActivity());
switch (item.getItemId()) { switch (item.getItemId()) {
case R.id.menu_record_note:
startRecordingAudio();
return true;
case R.id.menu_delete: case R.id.menu_delete:
deleteButtonClick(); deleteButtonClick();
return true; return true;
@ -276,21 +268,6 @@ public final class TaskEditFragment extends InjectingFragment implements Toolbar
.show(); .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 @Override
public void onSaveInstanceState(Bundle outState) { public void onSaveInstanceState(Bundle outState) {

@ -29,7 +29,6 @@ import butterknife.OnClick;
public class AACRecordingActivity extends InjectingAppCompatActivity implements AACRecorderCallbacks { public class AACRecordingActivity extends InjectingAppCompatActivity implements AACRecorderCallbacks {
public static final String RESULT_OUTFILE = "outfile"; //$NON-NLS-1$ public static final String RESULT_OUTFILE = "outfile"; //$NON-NLS-1$
public static final String RESULT_FILENAME = "filename"; //$NON-NLS-1$
private final AtomicReference<String> nameRef = new AtomicReference<>(); private final AtomicReference<String> nameRef = new AtomicReference<>();
private AACRecorder recorder; private AACRecorder recorder;
@ -88,7 +87,6 @@ public class AACRecordingActivity extends InjectingAppCompatActivity implements
public void encodingFinished() { public void encodingFinished() {
Intent result = new Intent(); Intent result = new Intent();
result.putExtra(RESULT_OUTFILE, tempFile); result.putExtra(RESULT_OUTFILE, tempFile);
result.putExtra(RESULT_FILENAME, nameRef.get());
setResult(RESULT_OK, result); setResult(RESULT_OK, result);
finish(); finish();
} }

@ -129,9 +129,9 @@ public class FilesControlSet extends TaskEditControlFragment {
if (requestCode == REQUEST_ADD_ATTACHMENT) { if (requestCode == REQUEST_ADD_ATTACHMENT) {
if (resultCode == Activity.RESULT_OK) { if (resultCode == Activity.RESULT_OK) {
String path = data.getStringExtra(AddAttachmentActivity.EXTRA_PATH); String path = data.getStringExtra(AddAttachmentActivity.EXTRA_PATH);
String type = data.getStringExtra(AddAttachmentActivity.EXTRA_TYPE);
File file = new File(path); File file = new File(path);
String extension = path.substring(path.lastIndexOf('.') + 1); createNewFileAttachment(path, file.getName(), type);
createNewFileAttachment(path, file.getName(), TaskAttachment.FILE_TYPE_IMAGE + extension);
} }
} else { } else {
super.onActivityResult(requestCode, resultCode, data); super.onActivityResult(requestCode, resultCode, data);

@ -11,10 +11,12 @@ import android.webkit.MimeTypeMap;
import android.widget.Toast; import android.widget.Toast;
import com.todoroo.andlib.utility.AndroidUtilities; 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.R;
import org.tasks.dialogs.AddAttachmentDialog; import org.tasks.dialogs.AddAttachmentDialog;
import org.tasks.files.FileExplore;
import org.tasks.injection.InjectingAppCompatActivity; import org.tasks.injection.InjectingAppCompatActivity;
import org.tasks.preferences.Preferences; import org.tasks.preferences.Preferences;
@ -31,11 +33,14 @@ import timber.log.Timber;
public class AddAttachmentActivity extends InjectingAppCompatActivity implements DialogInterface.OnCancelListener, AddAttachmentDialog.AddAttachmentCallback { 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 String FRAG_TAG_ATTACHMENT_DIALOG = "frag_tag_attachment_dialog";
private static final int REQUEST_CAMERA = 12120; private static final int REQUEST_CAMERA = 12120;
private static final int REQUEST_GALLERY = 12121; private static final int REQUEST_GALLERY = 12121;
private static final int REQUEST_STORAGE = 12122; 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_PATH = "extra_path";
public static final String EXTRA_TYPE = "extra_type";
@Inject Preferences preferences; @Inject Preferences preferences;
@ -63,6 +68,11 @@ public class AddAttachmentActivity extends InjectingAppCompatActivity implements
startActivityForResult(new Intent(this, CameraActivity.class), REQUEST_CAMERA); startActivityForResult(new Intent(this, CameraActivity.class), REQUEST_CAMERA);
} }
@Override
public void recordNote() {
startActivityForResult(new Intent(this, AACRecordingActivity.class), REQUEST_CODE_RECORD);
}
@Override @Override
public void pickFromGallery() { public void pickFromGallery() {
Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI) {{ 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) { if (resultCode == RESULT_OK) {
Uri uri = data.getParcelableExtra(CameraActivity.EXTRA_URI); Uri uri = data.getParcelableExtra(CameraActivity.EXTRA_URI);
final File file = new File(uri.getPath()); final File file = new File(uri.getPath());
String path = file.getPath();
Timber.i("Saved %s", file.getAbsolutePath()); Timber.i("Saved %s", file.getAbsolutePath());
final String extension = path.substring(path.lastIndexOf('.') + 1);
setResult(RESULT_OK, new Intent() {{ setResult(RESULT_OK, new Intent() {{
putExtra(EXTRA_PATH, file.getAbsolutePath()); 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(); finish();
@ -95,7 +118,7 @@ public class AddAttachmentActivity extends InjectingAppCompatActivity implements
Uri uri = data.getData(); Uri uri = data.getData();
ContentResolver contentResolver = getContentResolver(); ContentResolver contentResolver = getContentResolver();
MimeTypeMap mime = MimeTypeMap.getSingleton(); MimeTypeMap mime = MimeTypeMap.getSingleton();
String extension = mime.getExtensionFromMimeType(contentResolver.getType(uri)); final String extension = mime.getExtensionFromMimeType(contentResolver.getType(uri));
final File tempFile = getFilename(extension); final File tempFile = getFilename(extension);
Timber.i("Writing %s to %s", uri, tempFile); Timber.i("Writing %s to %s", uri, tempFile);
try { try {
@ -106,6 +129,7 @@ public class AddAttachmentActivity extends InjectingAppCompatActivity implements
} }
setResult(RESULT_OK, new Intent() {{ setResult(RESULT_OK, new Intent() {{
putExtra(EXTRA_PATH, tempFile.getAbsolutePath()); putExtra(EXTRA_PATH, tempFile.getAbsolutePath());
putExtra(EXTRA_TYPE, TaskAttachment.FILE_TYPE_IMAGE + extension);
}}); }});
} }
finish(); finish();
@ -115,8 +139,10 @@ public class AddAttachmentActivity extends InjectingAppCompatActivity implements
final String destination = copyToAttachmentDirectory(path); final String destination = copyToAttachmentDirectory(path);
if (destination != null) { if (destination != null) {
Timber.i("Copied %s to %s", path, destination); Timber.i("Copied %s to %s", path, destination);
final String extension = destination.substring(path.lastIndexOf('.') + 1);
setResult(RESULT_OK, new Intent() {{ setResult(RESULT_OK, new Intent() {{
putExtra(EXTRA_PATH, destination); putExtra(EXTRA_PATH, destination);
putExtra(EXTRA_TYPE, TaskAttachment.FILE_TYPE_IMAGE + extension);
}}); }});
} }
} }

@ -19,6 +19,8 @@ public class AddAttachmentDialog extends InjectingDialogFragment {
public interface AddAttachmentCallback { public interface AddAttachmentCallback {
void takePicture(); void takePicture();
void recordNote();
void pickFromGallery(); void pickFromGallery();
void pickFromStorage(); 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()) { if (device.hasGallery()) {
entries.add(getString(R.string.pick_from_gallery)); entries.add(getString(R.string.pick_from_gallery));
actions.add(new Runnable() { actions.add(new Runnable() {

@ -2,11 +2,6 @@
<menu xmlns:android="http://schemas.android.com/apk/res/android" <menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tasks="http://schemas.android.com/apk/res-auto"> xmlns:tasks="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/menu_record_note"
android:title="@string/premium_record_audio"
android:icon="@drawable/ic_mic_24dp"
tasks:showAsAction="ifRoom"/>
<item <item
android:id="@+id/menu_delete" android:id="@+id/menu_delete"
android:icon="@drawable/ic_delete_24dp" android:icon="@drawable/ic_delete_24dp"

Loading…
Cancel
Save