diff options
author | nicolasroard <nicolasroard@google.com> | 2013-10-11 16:22:14 -0700 |
---|---|---|
committer | nicolasroard <nicolasroard@google.com> | 2013-10-11 17:30:06 -0700 |
commit | eeed64b1fbdafe5c91ce36b3c5488c003fbb8fab (patch) | |
tree | 0de2a89b4d47886f0217f6631464b43e119c4633 /src/com/android/gallery3d/filtershow/pipeline | |
parent | dfe30aa6d008c2aff9fa42a6706867bd2f147425 (diff) | |
download | android_packages_apps_Gallery2-eeed64b1fbdafe5c91ce36b3c5488c003fbb8fab.tar.gz android_packages_apps_Gallery2-eeed64b1fbdafe5c91ce36b3c5488c003fbb8fab.tar.bz2 android_packages_apps_Gallery2-eeed64b1fbdafe5c91ce36b3c5488c003fbb8fab.zip |
Process correctly an export when called with EDIT intent
bug:11159123
Change-Id: I8c827d9f757c4fd00d21753753917b62d5ba0213
Diffstat (limited to 'src/com/android/gallery3d/filtershow/pipeline')
-rw-r--r-- | src/com/android/gallery3d/filtershow/pipeline/ImageSavingTask.java | 16 | ||||
-rw-r--r-- | src/com/android/gallery3d/filtershow/pipeline/ProcessingService.java | 27 |
2 files changed, 30 insertions, 13 deletions
diff --git a/src/com/android/gallery3d/filtershow/pipeline/ImageSavingTask.java b/src/com/android/gallery3d/filtershow/pipeline/ImageSavingTask.java index 5fa89ac6d..801aee46b 100644 --- a/src/com/android/gallery3d/filtershow/pipeline/ImageSavingTask.java +++ b/src/com/android/gallery3d/filtershow/pipeline/ImageSavingTask.java @@ -38,6 +38,7 @@ public class ImageSavingTask extends ProcessingTask { int quality; float sizeFactor; Bitmap previewImage; + boolean exit; } static class UpdateBitmap implements Update { @@ -51,10 +52,12 @@ public class ImageSavingTask extends ProcessingTask { static class UpdatePreviewSaved implements Update { Uri uri; + boolean exit; } static class URIResult implements Result { Uri uri; + boolean exit; } public ImageSavingTask(ProcessingService service) { @@ -64,7 +67,7 @@ public class ImageSavingTask extends ProcessingTask { public void saveImage(Uri sourceUri, Uri selectedUri, File destinationFile, ImagePreset preset, Bitmap previewImage, boolean flatten, - int quality, float sizeFactor) { + int quality, float sizeFactor, boolean exit) { SaveRequest request = new SaveRequest(); request.sourceUri = sourceUri; request.selectedUri = selectedUri; @@ -74,6 +77,7 @@ public class ImageSavingTask extends ProcessingTask { request.quality = quality; request.sizeFactor = sizeFactor; request.previewImage = previewImage; + request.exit = exit; postRequest(request); } @@ -85,6 +89,7 @@ public class ImageSavingTask extends ProcessingTask { Bitmap previewImage = request.previewImage; ImagePreset preset = request.preset; boolean flatten = request.flatten; + final boolean exit = request.exit; // We create a small bitmap showing the result that we can // give to the notification UpdateBitmap updateBitmap = new UpdateBitmap(); @@ -97,6 +102,7 @@ public class ImageSavingTask extends ProcessingTask { public void onPreviewSaved(Uri uri){ UpdatePreviewSaved previewSaved = new UpdatePreviewSaved(); previewSaved.uri = uri; + previewSaved.exit = exit; postUpdate(previewSaved); } @@ -109,23 +115,25 @@ public class ImageSavingTask extends ProcessingTask { } }); Uri uri = saveImage.processAndSaveImage(preset, flatten, - request.quality, request.sizeFactor); + request.quality, request.sizeFactor, request.exit); URIResult result = new URIResult(); result.uri = uri; + result.exit = request.exit; return result; } @Override public void onResult(Result message) { URIResult result = (URIResult) message; - mProcessingService.completeSaveImage(result.uri); + mProcessingService.completeSaveImage(result.uri, result.exit); } @Override public void onUpdate(Update message) { if (message instanceof UpdatePreviewSaved){ Uri uri = ((UpdatePreviewSaved) message).uri; - mProcessingService.completePreviewSaveImage(uri); + boolean exit = ((UpdatePreviewSaved) message).exit; + mProcessingService.completePreviewSaveImage(uri, exit); } if (message instanceof UpdateBitmap) { Bitmap bitmap = ((UpdateBitmap) message).bitmap; diff --git a/src/com/android/gallery3d/filtershow/pipeline/ProcessingService.java b/src/com/android/gallery3d/filtershow/pipeline/ProcessingService.java index 68574bd7e..b5b636ec2 100644 --- a/src/com/android/gallery3d/filtershow/pipeline/ProcessingService.java +++ b/src/com/android/gallery3d/filtershow/pipeline/ProcessingService.java @@ -52,6 +52,7 @@ public class ProcessingService extends Service { private static final String SAVING = "saving"; private static final String FLATTEN = "flatten"; private static final String SIZE_FACTOR = "sizeFactor"; + private static final String EXIT = "exit"; private ProcessingTaskController mProcessingTaskController; private ImageSavingTask mImageSavingTask; @@ -140,7 +141,8 @@ public class ProcessingService extends Service { } public static Intent getSaveIntent(Context context, ImagePreset preset, File destination, - Uri selectedImageUri, Uri sourceImageUri, boolean doFlatten, int quality, float sizeFactor) { + Uri selectedImageUri, Uri sourceImageUri, boolean doFlatten, int quality, + float sizeFactor, boolean needsExit) { Intent processIntent = new Intent(context, ProcessingService.class); processIntent.putExtra(ProcessingService.SOURCE_URI, sourceImageUri.toString()); @@ -154,6 +156,7 @@ public class ProcessingService extends Service { processIntent.putExtra(ProcessingService.PRESET, preset.getJsonString(ImagePreset.JASON_SAVED)); processIntent.putExtra(ProcessingService.SAVING, true); + processIntent.putExtra(ProcessingService.EXIT, needsExit); if (doFlatten) { processIntent.putExtra(ProcessingService.FLATTEN, true); } @@ -196,6 +199,7 @@ public class ProcessingService extends Service { int quality = intent.getIntExtra(QUALITY, 100); float sizeFactor = intent.getFloatExtra(SIZE_FACTOR, 1); boolean flatten = intent.getBooleanExtra(FLATTEN, false); + boolean exit = intent.getBooleanExtra(EXIT, false); Uri sourceUri = Uri.parse(source); Uri selectedUri = null; if (selected != null) { @@ -211,7 +215,7 @@ public class ProcessingService extends Service { mSaving = true; handleSaveRequest(sourceUri, selectedUri, destinationFile, preset, MasterImage.getImage().getHighresImage(), - flatten, quality, sizeFactor); + flatten, quality, sizeFactor, exit); } return START_REDELIVER_INTENT; } @@ -230,10 +234,9 @@ public class ProcessingService extends Service { public void handleSaveRequest(Uri sourceUri, Uri selectedUri, File destinationFile, ImagePreset preset, Bitmap previewImage, - boolean flatten, int quality, float sizeFactor) { + boolean flatten, int quality, float sizeFactor, boolean exit) { mNotifyMgr = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); - - mNotificationId++; + mNotifyMgr.cancelAll(); mBuilder = new Notification.Builder(this) @@ -248,7 +251,7 @@ public class ProcessingService extends Service { // Process the image mImageSavingTask.saveImage(sourceUri, selectedUri, destinationFile, - preset, previewImage, flatten, quality, sizeFactor); + preset, previewImage, flatten, quality, sizeFactor, exit); } public void updateNotificationWithBitmap(Bitmap bitmap) { @@ -261,19 +264,25 @@ public class ProcessingService extends Service { mNotifyMgr.notify(mNotificationId, mBuilder.build()); } - public void completePreviewSaveImage(Uri result) { - if (!mNeedsAlive && !mFiltershowActivity.isSimpleEditAction()) { + public void completePreviewSaveImage(Uri result, boolean exit) { + if (exit && !mNeedsAlive && !mFiltershowActivity.isSimpleEditAction()) { mFiltershowActivity.completeSaveImage(result); } } - public void completeSaveImage(Uri result) { + public void completeSaveImage(Uri result, boolean exit) { if (SHOW_IMAGE) { // TODO: we should update the existing image in Gallery instead Intent viewImage = new Intent(Intent.ACTION_VIEW, result); viewImage.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(viewImage); } + mNotifyMgr.cancel(mNotificationId); + if (!exit) { + stopForeground(true); + stopSelf(); + return; + } stopForeground(true); stopSelf(); if (mNeedsAlive) { |