summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--res/values/strings.xml8
-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
5 files changed, 48 insertions, 57 deletions
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 3bff3ba5f..96176d5fb 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -147,10 +147,6 @@
[CHAR_LIMIT=20]-->
<string name="edit">Edit</string>
- <!-- String used in a toast message indicating there is no application
- available to handle a request [CHAR LIMIT=50] -->
- <string name="activity_not_found">No app is available to complete the action.</string>
-
<!-- String used as a title of a progress dialog. The user can
choose to cache some Picasa picture albums on device, so it can
be viewed offline. This string is shown when the request is being
@@ -234,10 +230,6 @@
<string name="crop_saved">
Cropped image saved to <xliff:g id="folder_name">%s</xliff:g>.</string>
- <!-- Toast message shown when the cropped image is not saved
- [CHAR LIMIT=50]-->
- <string name="crop_not_saved">Cropped image wasn\'t saved.</string>
-
<!-- Toast message shown when there is no albums available [CHAR LIMIT=50]-->
<string name="no_albums_alert">No albums available.</string>
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();
}