summaryrefslogtreecommitdiffstats
path: root/src/com/android/gallery3d/filtershow/pipeline
diff options
context:
space:
mode:
authornicolasroard <nicolasroard@google.com>2013-10-11 16:22:14 -0700
committernicolasroard <nicolasroard@google.com>2013-10-11 17:30:06 -0700
commiteeed64b1fbdafe5c91ce36b3c5488c003fbb8fab (patch)
tree0de2a89b4d47886f0217f6631464b43e119c4633 /src/com/android/gallery3d/filtershow/pipeline
parentdfe30aa6d008c2aff9fa42a6706867bd2f147425 (diff)
downloadandroid_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.java16
-rw-r--r--src/com/android/gallery3d/filtershow/pipeline/ProcessingService.java27
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) {