summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYuli Huang <yuli@google.com>2012-05-02 00:50:56 +0800
committerYuli Huang <yuli@google.com>2012-05-02 18:33:29 +0800
commit3db691c36312afb934463f0549a33a7eb58bf696 (patch)
tree2280e3b6d5b48635ac4e0c416f697a45a131b21a
parentc3d5fcfbbb0cd6bd14cc9930fff36356b0024371 (diff)
downloadandroid_packages_apps_Snap-3db691c36312afb934463f0549a33a7eb58bf696.tar.gz
android_packages_apps_Snap-3db691c36312afb934463f0549a33a7eb58bf696.tar.bz2
android_packages_apps_Snap-3db691c36312afb934463f0549a33a7eb58bf696.zip
Fix 'Edit' and 'Crop' behaviors.
1. Make Gallery show edited local photo after resuming, similar to how it shows cropped local photo after resuming. 2. Fix inconsistency between cropping local/PWA photo. bug:6168430 Change-Id: Ia350e0c67f05969ad42f56b9693c09c3b6433d3c
-rw-r--r--src/com/android/gallery3d/app/PhotoDataAdapter.java2
-rw-r--r--src/com/android/gallery3d/app/PhotoPage.java43
-rw-r--r--src/com/android/gallery3d/photoeditor/PhotoEditor.java2
-rw-r--r--src/com/android/gallery3d/ui/MenuExecutor.java50
4 files changed, 48 insertions, 49 deletions
diff --git a/src/com/android/gallery3d/app/PhotoDataAdapter.java b/src/com/android/gallery3d/app/PhotoDataAdapter.java
index 86ef04d17..d5a4efd6c 100644
--- a/src/com/android/gallery3d/app/PhotoDataAdapter.java
+++ b/src/com/android/gallery3d/app/PhotoDataAdapter.java
@@ -598,7 +598,6 @@ public class PhotoDataAdapter implements PhotoPage.Model {
}
} else {
entry = new ImageEntry();
- entry.rotation = item.getFullImageRotation();
mImageCache.put(version, entry);
}
}
@@ -658,7 +657,6 @@ public class PhotoDataAdapter implements PhotoPage.Model {
private static class ImageEntry {
public int requestedBits = 0;
- public int rotation;
public BitmapRegionDecoder fullImage;
public ScreenNail screenNail;
public Future<ScreenNail> screenNailTask;
diff --git a/src/com/android/gallery3d/app/PhotoPage.java b/src/com/android/gallery3d/app/PhotoPage.java
index a237cbac3..d7936e24f 100644
--- a/src/com/android/gallery3d/app/PhotoPage.java
+++ b/src/com/android/gallery3d/app/PhotoPage.java
@@ -43,7 +43,6 @@ import com.android.gallery3d.data.MediaObject;
import com.android.gallery3d.data.MediaSet;
import com.android.gallery3d.data.MtpDevice;
import com.android.gallery3d.data.Path;
-import com.android.gallery3d.data.SnailItem;
import com.android.gallery3d.data.SnailSource;
import com.android.gallery3d.picasasource.PicasaSource;
import com.android.gallery3d.ui.DetailsHelper;
@@ -75,6 +74,7 @@ public class PhotoPage extends ActivityState implements
private static final int REQUEST_SLIDESHOW = 1;
private static final int REQUEST_CROP = 2;
private static final int REQUEST_CROP_PICASA = 3;
+ private static final int REQUEST_EDIT = 4;
public static final String KEY_MEDIA_SET_PATH = "media-set-path";
public static final String KEY_MEDIA_ITEM_PATH = "media-item-path";
@@ -520,6 +520,14 @@ public class PhotoPage extends ActivityState implements
: REQUEST_CROP);
return true;
}
+ case R.id.action_edit: {
+ Intent intent = new Intent(Intent.ACTION_EDIT)
+ .setData(manager.getContentUri(path))
+ .setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
+ ((Activity) mActivity).startActivityForResult(Intent.createChooser(intent, null),
+ REQUEST_EDIT);
+ return true;
+ }
case R.id.action_details: {
if (mShowDetails) {
hideDetails();
@@ -534,7 +542,6 @@ public class PhotoPage extends ActivityState implements
case R.id.action_rotate_ccw:
case R.id.action_rotate_cw:
case R.id.action_show_on_map:
- case R.id.action_edit:
mSelectionManager.deSelectAll();
mSelectionManager.toggle(path);
mMenuExecutor.onMenuClicked(item, needsConfirm, null);
@@ -633,26 +640,34 @@ public class PhotoPage extends ActivityState implements
}
}
+ private void setCurrentPhotoByIntent(Intent intent) {
+ if (intent == null) return;
+ Path path = mApplication.getDataManager()
+ .findPathByUri(intent.getData(), intent.getType());
+ if (path != null) {
+ mModel.setCurrentPhoto(path, mCurrentIndex);
+ }
+ }
+
@Override
protected void onStateResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
+ case REQUEST_EDIT:
+ setCurrentPhotoByIntent(data);
+ break;
case REQUEST_CROP:
if (resultCode == Activity.RESULT_OK) {
- if (data == null) break;
- Path path = mApplication.getDataManager()
- .findPathByUri(data.getData(), data.getType());
- if (path != null) {
- mModel.setCurrentPhoto(path, mCurrentIndex);
- }
+ setCurrentPhotoByIntent(data);
}
break;
case REQUEST_CROP_PICASA: {
- Context context = mActivity.getAndroidContext();
- // TODO: Use crop_saved instead of photo_saved after its new translation is done.
- String message = resultCode == Activity.RESULT_OK ? context.getString(
- R.string.photo_saved, context.getString(R.string.folder_download))
- : context.getString(R.string.crop_not_saved);
- Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
+ if (resultCode == Activity.RESULT_OK) {
+ Context context = mActivity.getAndroidContext();
+ // TODO: Use crop_saved instead of photo_saved after its new translation is done.
+ String message = context.getString(R.string.photo_saved,
+ context.getString(R.string.folder_download));
+ Toast.makeText(context, message, Toast.LENGTH_SHORT).show();
+ }
break;
}
case REQUEST_SLIDESHOW: {
diff --git a/src/com/android/gallery3d/photoeditor/PhotoEditor.java b/src/com/android/gallery3d/photoeditor/PhotoEditor.java
index 19e49c4a1..4359cf6ed 100644
--- a/src/com/android/gallery3d/photoeditor/PhotoEditor.java
+++ b/src/com/android/gallery3d/photoeditor/PhotoEditor.java
@@ -195,10 +195,12 @@ public class PhotoEditor extends Activity {
@Override
public void run() {
+ // Discard unsaved photo for the result.
finish();
}
}, R.string.save_photo).show();
} else {
+ setResult(RESULT_OK, new Intent().setData(saveUri));
finish();
}
}
diff --git a/src/com/android/gallery3d/ui/MenuExecutor.java b/src/com/android/gallery3d/ui/MenuExecutor.java
index a052c500d..636da3985 100644
--- a/src/com/android/gallery3d/ui/MenuExecutor.java
+++ b/src/com/android/gallery3d/ui/MenuExecutor.java
@@ -27,7 +27,6 @@ import android.os.Handler;
import android.os.Message;
import android.view.Menu;
import android.view.MenuItem;
-import android.widget.Toast;
import com.android.gallery3d.R;
import com.android.gallery3d.app.CropImage;
@@ -175,9 +174,15 @@ public class MenuExecutor {
return ids.get(0);
}
+ private Intent getIntentBySingleSelectedPath(String action) {
+ DataManager manager = mActivity.getDataManager();
+ Path path = getSingleSelectedPath();
+ String mimeType = getMimeType(manager.getMediaType(path));
+ return new Intent(action).setDataAndType(manager.getContentUri(path), mimeType);
+ }
+
private void onMenuClicked(int action, ProgressListener listener) {
int title;
- DataManager manager = mActivity.getDataManager();
switch (action) {
case R.id.action_select_all:
if (mSelectionManager.inSelectAllMode()) {
@@ -187,21 +192,20 @@ public class MenuExecutor {
}
return;
case R.id.action_crop: {
- Path path = getSingleSelectedPath();
- String mimeType = getMimeType(manager.getMediaType(path));
- Intent intent = new Intent(CropImage.ACTION_CROP)
- .setDataAndType(manager.getContentUri(path), mimeType);
+ Intent intent = getIntentBySingleSelectedPath(CropImage.ACTION_CROP);
((Activity) mActivity).startActivity(intent);
return;
}
+ case R.id.action_edit: {
+ Intent intent = getIntentBySingleSelectedPath(Intent.ACTION_EDIT)
+ .setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
+ ((Activity) mActivity).startActivity(Intent.createChooser(intent, null));
+ return;
+ }
case R.id.action_setas: {
- Path path = getSingleSelectedPath();
- int type = manager.getMediaType(path);
- Intent intent = new Intent(Intent.ACTION_ATTACH_DATA);
- String mimeType = getMimeType(type);
- intent.setDataAndType(manager.getContentUri(path), mimeType);
- intent.putExtra("mimeType", mimeType);
- intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
+ Intent intent = getIntentBySingleSelectedPath(Intent.ACTION_ATTACH_DATA)
+ .addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
+ intent.putExtra("mimeType", intent.getType());
Activity activity = (Activity) mActivity;
activity.startActivity(Intent.createChooser(
intent, activity.getString(R.string.set_as)));
@@ -219,9 +223,6 @@ public class MenuExecutor {
case R.id.action_show_on_map:
title = R.string.show_on_map;
break;
- case R.id.action_edit:
- title = R.string.edit;
- break;
case R.id.action_import:
title = R.string.Import;
break;
@@ -310,23 +311,6 @@ public class MenuExecutor {
result = obj.Import();
break;
}
- case R.id.action_edit: {
- Activity activity = (Activity) mActivity;
- MediaItem item = (MediaItem) manager.getMediaObject(path);
- try {
- activity.startActivity(Intent.createChooser(
- new Intent(Intent.ACTION_EDIT)
- .setDataAndType(item.getContentUri(), item.getMimeType())
- .setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION),
- null));
- } catch (Throwable t) {
- Log.w(TAG, "failed to start edit activity: ", t);
- Toast.makeText(activity,
- activity.getString(R.string.activity_not_found),
- Toast.LENGTH_SHORT).show();
- }
- break;
- }
default:
throw new AssertionError();
}