OSDN Git Service

Make 'Edit' behave more consistent with 'Crop'.
authorYuli Huang <yuli@google.com>
Wed, 25 Apr 2012 15:51:52 +0000 (23:51 +0800)
committerYuli Huang <yuli@google.com>
Thu, 26 Apr 2012 07:12:04 +0000 (15:12 +0800)
1. Save edited PWA photo in 'dowload', same as cropped images.
2. Fix Crop-image toast may show strings without i18n.
bug:6168430

Change-Id: Ie1ea8e5774f6dee632477a6f887aa766a295a120

src/com/android/gallery3d/app/CropImage.java
src/com/android/gallery3d/app/PhotoPage.java
src/com/android/gallery3d/data/MtpContext.java
src/com/android/gallery3d/photoeditor/SaveCopyTask.java
src/com/android/gallery3d/util/BucketNames.java [new file with mode: 0644]
src/com/android/gallery3d/util/MediaSetUtils.java

index 40b357d..4fec95b 100644 (file)
@@ -58,6 +58,7 @@ import com.android.gallery3d.ui.CropView;
 import com.android.gallery3d.ui.GLRoot;
 import com.android.gallery3d.ui.SynchronizedHandler;
 import com.android.gallery3d.ui.TileImageViewAdapter;
+import com.android.gallery3d.util.BucketNames;
 import com.android.gallery3d.util.Future;
 import com.android.gallery3d.util.FutureListener;
 import com.android.gallery3d.util.GalleryUtils;
@@ -120,9 +121,8 @@ public class CropImage extends AbstractGalleryActivity {
     private static final int STATE_LOADED = 1;
     private static final int STATE_SAVING = 2;
 
-    public static final String DOWNLOAD_STRING = "download";
     public static final File DOWNLOAD_BUCKET = new File(
-            Environment.getExternalStorageDirectory(), DOWNLOAD_STRING);
+            Environment.getExternalStorageDirectory(), BucketNames.DOWNLOAD);
 
     public static final String CROP_ACTION = "com.android.camera.action.CROP";
 
index fadcbf1..8794cb9 100644 (file)
@@ -584,11 +584,12 @@ public class PhotoPage extends ActivityState
                 }
                 break;
             case REQUEST_CROP_PICASA: {
-                int message = resultCode == Activity.RESULT_OK
-                        ? R.string.crop_saved
-                        : R.string.crop_not_saved;
-                Toast.makeText(mActivity.getAndroidContext(),
-                        message, Toast.LENGTH_SHORT).show();
+                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();
                 break;
             }
             case REQUEST_SLIDESHOW: {
index ee5cf7e..0749020 100644 (file)
@@ -10,6 +10,7 @@ import android.util.Log;
 import android.widget.Toast;
 
 import com.android.gallery3d.R;
+import com.android.gallery3d.util.BucketNames;
 import com.android.gallery3d.util.GalleryUtils;
 
 import java.io.File;
@@ -19,8 +20,6 @@ import java.util.List;
 public class MtpContext implements MtpClient.Listener {
     private static final String TAG = "MtpContext";
 
-    public static final String NAME_IMPORTED_FOLDER = "Imported";
-
     private ScannerClient mScannerClient;
     private Context mContext;
     private MtpClient mClient;
@@ -104,7 +103,7 @@ public class MtpContext implements MtpClient.Listener {
     public boolean copyFile(String deviceName, MtpObjectInfo objInfo) {
         if (GalleryUtils.hasSpaceForSize(objInfo.getCompressedSize())) {
             File dest = Environment.getExternalStorageDirectory();
-            dest = new File(dest, NAME_IMPORTED_FOLDER);
+            dest = new File(dest, BucketNames.IMPORTED);
             dest.mkdirs();
             String destPath = new File(dest, objInfo.getName()).getAbsolutePath();
             int objectId = objInfo.getObjectHandle();
index 6b7b7c3..1b59292 100644 (file)
@@ -30,6 +30,7 @@ import android.view.Gravity;
 import android.widget.Toast;
 
 import com.android.gallery3d.R;
+import com.android.gallery3d.util.BucketNames;
 
 import java.io.File;
 import java.sql.Date;
@@ -59,7 +60,7 @@ public class SaveCopyTask extends AsyncTask<Bitmap, Void, Uri> {
     private final Uri sourceUri;
     private final Callback callback;
     private final String saveFileName;
-    private File saveDirectory;
+    private String saveFolderName;
 
     public SaveCopyTask(Context context, Uri sourceUri, Callback callback) {
         this.context = context;
@@ -79,8 +80,17 @@ public class SaveCopyTask extends AsyncTask<Bitmap, Void, Uri> {
         if (params[0] == null) {
             return null;
         }
+        // Use the default save directory if the source directory cannot be saved.
+        File saveDirectory = getSaveDirectory();
+        if ((saveDirectory == null) || !saveDirectory.canWrite()) {
+            saveDirectory = new File(Environment.getExternalStorageDirectory(),
+                    BucketNames.DOWNLOAD);
+            saveFolderName = context.getString(R.string.folder_download);
+        } else {
+            saveFolderName = saveDirectory.getName();
+        }
+
         Bitmap bitmap = params[0];
-        getSaveDirectory();
         File file = new BitmapUtils(context).saveBitmap(
                 bitmap, saveDirectory, saveFileName, Bitmap.CompressFormat.JPEG);
         Uri uri = (file != null) ? insertContent(file) : null;
@@ -91,7 +101,7 @@ public class SaveCopyTask extends AsyncTask<Bitmap, Void, Uri> {
     @Override
     protected void onPostExecute(Uri result) {
         String message = (result == null) ? context.getString(R.string.saving_failure)
-                : context.getString(R.string.photo_saved, saveDirectory.getName());
+                : context.getString(R.string.photo_saved, saveFolderName);
         Toast toast = Toast.makeText(context, message, Toast.LENGTH_SHORT);
         toast.setGravity(Gravity.CENTER, 0, 0);
         toast.show();
@@ -116,19 +126,16 @@ public class SaveCopyTask extends AsyncTask<Bitmap, Void, Uri> {
         }
     }
 
-    private void getSaveDirectory() {
+    private File getSaveDirectory() {
+        final File[] dir = new File[1];
         querySource(new String[] { ImageColumns.DATA }, new ContentResolverQueryCallback () {
 
             @Override
             public void onCursorResult(Cursor cursor) {
-                saveDirectory = new File(cursor.getString(0)).getParentFile();
+                dir[0] = new File(cursor.getString(0)).getParentFile();
             }
         });
-        // Use the default save directory if the source directory cannot be saved.
-        if ((saveDirectory == null) || !saveDirectory.canWrite()) {
-            saveDirectory = new File(Environment.getExternalStorageDirectory(),
-                    context.getString(R.string.edited_photo_bucket_name));
-        }
+        return dir[0];
     }
 
     /**
diff --git a/src/com/android/gallery3d/util/BucketNames.java b/src/com/android/gallery3d/util/BucketNames.java
new file mode 100644 (file)
index 0000000..043dd3d
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.gallery3d.util;
+
+/**
+ * Bucket names for buckets that are created and used in the Gallery.
+ */
+public class BucketNames {
+
+    public static final String IMPORTED = "Imported";
+    public static final String DOWNLOAD = "download";
+}
index 8e60f59..3bb3f8b 100644 (file)
@@ -19,7 +19,6 @@ package com.android.gallery3d.util;
 import android.os.Environment;
 
 import com.android.gallery3d.data.MediaSet;
-import com.android.gallery3d.data.MtpContext;
 import com.android.gallery3d.data.Path;
 
 import java.util.Comparator;
@@ -30,10 +29,11 @@ public class MediaSetUtils {
     public static final int CAMERA_BUCKET_ID = GalleryUtils.getBucketId(
             Environment.getExternalStorageDirectory().toString() + "/DCIM/Camera");
     public static final int DOWNLOAD_BUCKET_ID = GalleryUtils.getBucketId(
-            Environment.getExternalStorageDirectory().toString() + "/download");
+            Environment.getExternalStorageDirectory().toString() + "/"
+            + BucketNames.DOWNLOAD);
     public static final int IMPORTED_BUCKET_ID = GalleryUtils.getBucketId(
             Environment.getExternalStorageDirectory().toString() + "/"
-            + MtpContext.NAME_IMPORTED_FOLDER);
+            + BucketNames.IMPORTED);
     public static final int SNAPSHOT_BUCKET_ID = GalleryUtils.getBucketId(
             Environment.getExternalStorageDirectory().toString() +
             "/Pictures/Screenshots");