summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/MenuHelper.java
diff options
context:
space:
mode:
authorChih-Chung Chang <chihchung@google.com>2010-03-05 15:34:47 -0800
committerChih-Chung Chang <chihchung@google.com>2010-03-05 15:37:44 -0800
commit9a4c2cac83f50e29063d27605c9f8d9e676a6f22 (patch)
tree60a7fcff85a74a4c7442d7f399eabdc335436519 /src/com/android/camera/MenuHelper.java
parente8697d7437c343e31e815fd4714238afafc7b1ac (diff)
downloadLegacyCamera-9a4c2cac83f50e29063d27605c9f8d9e676a6f22.zip
LegacyCamera-9a4c2cac83f50e29063d27605c9f8d9e676a6f22.tar.gz
LegacyCamera-9a4c2cac83f50e29063d27605c9f8d9e676a6f22.tar.bz2
Remove unused code.
Diffstat (limited to 'src/com/android/camera/MenuHelper.java')
-rw-r--r--src/com/android/camera/MenuHelper.java612
1 files changed, 0 insertions, 612 deletions
diff --git a/src/com/android/camera/MenuHelper.java b/src/com/android/camera/MenuHelper.java
index 822df8c..8e6fb22 100644
--- a/src/com/android/camera/MenuHelper.java
+++ b/src/com/android/camera/MenuHelper.java
@@ -23,35 +23,14 @@ import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.DialogInterface.OnClickListener;
-import android.location.Geocoder;
-import android.media.ExifInterface;
import android.net.Uri;
import android.os.Environment;
-import android.os.Handler;
import android.os.StatFs;
-import android.preference.PreferenceManager;
import android.provider.MediaStore;
import android.provider.MediaStore.Images;
-import android.text.format.Formatter;
import android.util.Log;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.SubMenu;
-import android.view.View;
-import android.widget.ImageView;
-import android.widget.TextView;
-import android.widget.Toast;
-
-import com.android.camera.gallery.IImage;
import java.io.Closeable;
-import java.io.IOException;
-import java.lang.ref.WeakReference;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
/**
* A utility class to handle various kinds of menu operations.
@@ -102,20 +81,6 @@ public class MenuHelper {
private static final int NO_ANIMATION = 0;
- public interface MenuItemsResult {
- public void gettingReadyToOpen(Menu menu, IImage image);
- public void aboutToCall(MenuItem item, IImage image);
- }
-
- public interface MenuInvoker {
- public void run(MenuCallback r);
- }
-
- /** A callback to be invoked when a menu item is clicked. */
- public interface MenuCallback {
- public void run(Uri uri, IImage image);
- }
-
public static void closeSilently(Closeable c) {
if (c != null) {
try {
@@ -126,566 +91,6 @@ public class MenuHelper {
}
}
- public static long getImageFileSize(IImage image) {
- java.io.InputStream data = image.fullSizeImageData();
- if (data == null) return -1;
- try {
- return data.available();
- } catch (java.io.IOException ex) {
- return -1;
- } finally {
- closeSilently(data);
- }
- }
-
- // This is a hack before we find a solution to pass a permission to other
- // applications. See bug #1735149, #1836138.
- // Checks if the URI is on our whitelist:
- // content://media/... (MediaProvider)
- // file:///sdcard/... (Browser download)
- public static boolean isWhiteListUri(Uri uri) {
- if (uri == null) return false;
-
- String scheme = uri.getScheme();
- String authority = uri.getAuthority();
-
- if (scheme.equals("content") && authority.equals("media")) {
- return true;
- }
-
- if (scheme.equals("file")) {
- List<String> p = uri.getPathSegments();
-
- if (p.size() >= 1 && p.get(0).equals("sdcard")) {
- return true;
- }
- }
-
- return false;
- }
-
- public static void enableShareMenuItem(Menu menu, boolean enabled) {
- MenuItem item = menu.findItem(MENU_IMAGE_SHARE);
- if (item != null) {
- item.setVisible(enabled);
- item.setEnabled(enabled);
- }
- }
-
- public static boolean hasLatLngData(IImage image) {
- ExifInterface exif = getExif(image);
- if (exif == null) return false;
- float latlng[] = new float[2];
- return exif.getLatLong(latlng);
- }
-
- public static void enableShowOnMapMenuItem(Menu menu, boolean enabled) {
- MenuItem item = menu.findItem(MENU_IMAGE_SHOWMAP);
- if (item != null) {
- item.setEnabled(enabled);
- }
- }
-
- private static void setDetailsValue(View d, String text, int valueId) {
- ((TextView) d.findViewById(valueId)).setText(text);
- }
-
- private static void hideDetailsRow(View d, int rowId) {
- d.findViewById(rowId).setVisibility(View.GONE);
- }
-
- private static class UpdateLocationCallback implements
- ReverseGeocoderTask.Callback {
- WeakReference<View> mView;
-
- public UpdateLocationCallback(WeakReference<View> view) {
- mView = view;
- }
-
- public void onComplete(String location) {
- // View d is per-thread data, so when setDetailsValue is
- // executed by UI thread, it doesn't matter whether the
- // details dialog is dismissed or not.
- View view = mView.get();
- if (view == null) return;
- if (!location.equals(MenuHelper.EMPTY_STRING)) {
- MenuHelper.setDetailsValue(view, location,
- R.id.details_location_value);
- } else {
- MenuHelper.hideDetailsRow(view, R.id.details_location_row);
- }
- }
- }
-
- private static void setLatLngDetails(final View d, Activity context,
- ExifInterface exif) {
- float[] latlng = new float[2];
- if (exif.getLatLong(latlng)) {
- setDetailsValue(d, String.valueOf(latlng[0]),
- R.id.details_latitude_value);
- setDetailsValue(d, String.valueOf(latlng[1]),
- R.id.details_longitude_value);
-
- if (latlng[0] == INVALID_LATLNG || latlng[1] == INVALID_LATLNG) {
- hideDetailsRow(d, R.id.details_latitude_row);
- hideDetailsRow(d, R.id.details_longitude_row);
- hideDetailsRow(d, R.id.details_location_row);
- return;
- }
-
- UpdateLocationCallback cb = new UpdateLocationCallback(
- new WeakReference<View>(d));
- Geocoder geocoder = new Geocoder(context);
- new ReverseGeocoderTask(geocoder, latlng, cb).execute();
- } else {
- hideDetailsRow(d, R.id.details_latitude_row);
- hideDetailsRow(d, R.id.details_longitude_row);
- hideDetailsRow(d, R.id.details_location_row);
- }
- }
-
- private static ExifInterface getExif(IImage image) {
- if (!JPEG_MIME_TYPE.equals(image.getMimeType())) {
- return null;
- }
-
- try {
- return new ExifInterface(image.getDataPath());
- } catch (IOException ex) {
- Log.e(TAG, "cannot read exif", ex);
- return null;
- }
- }
- // Called when "Show on Maps" is clicked.
- // Displays image location on Google Maps for further operations.
- private static boolean onShowMapClicked(MenuInvoker onInvoke,
- final Handler handler,
- final Activity activity) {
- onInvoke.run(new MenuCallback() {
- public void run(Uri u, IImage image) {
- if (image == null) {
- return;
- }
-
- boolean ok = false;
- ExifInterface exif = getExif(image);
- float latlng[] = null;
- if (exif != null) {
- latlng = new float[2];
- if (exif.getLatLong(latlng)) {
- ok = true;
- }
- }
-
- if (!ok) {
- handler.post(new Runnable() {
- public void run() {
- Toast.makeText(activity,
- R.string.no_location_image,
- Toast.LENGTH_SHORT).show();
- }
- });
- return;
- }
-
- // Can't use geo:latitude,longitude because it only centers
- // the MapView to specified location, but we need a bubble
- // for further operations (routing to/from).
- // The q=(lat, lng) syntax is suggested by geo-team.
- String uri = "http://maps.google.com/maps?f=q&" +
- "q=(" + latlng[0] + "," + latlng[1] + ")";
- activity.startActivity(new Intent(
- android.content.Intent.ACTION_VIEW,
- Uri.parse(uri)));
- }
- });
- return true;
- }
-
- private static void hideExifInformation(View d) {
- hideDetailsRow(d, R.id.details_resolution_row);
- hideDetailsRow(d, R.id.details_make_row);
- hideDetailsRow(d, R.id.details_model_row);
- hideDetailsRow(d, R.id.details_whitebalance_row);
- hideDetailsRow(d, R.id.details_latitude_row);
- hideDetailsRow(d, R.id.details_longitude_row);
- hideDetailsRow(d, R.id.details_location_row);
- }
-
- private static void showExifInformation(IImage image, View d,
- Activity activity) {
- ExifInterface exif = getExif(image);
- if (exif == null) {
- hideExifInformation(d);
- return;
- }
-
- String value = exif.getAttribute(ExifInterface.TAG_MAKE);
- if (value != null) {
- setDetailsValue(d, value, R.id.details_make_value);
- } else {
- hideDetailsRow(d, R.id.details_make_row);
- }
-
- value = exif.getAttribute(ExifInterface.TAG_MODEL);
- if (value != null) {
- setDetailsValue(d, value, R.id.details_model_value);
- } else {
- hideDetailsRow(d, R.id.details_model_row);
- }
-
- value = getWhiteBalanceString(exif);
- if (value != null && !value.equals(EMPTY_STRING)) {
- setDetailsValue(d, value, R.id.details_whitebalance_value);
- } else {
- hideDetailsRow(d, R.id.details_whitebalance_row);
- }
-
- setLatLngDetails(d, activity, exif);
- }
-
- /**
- * Returns a human-readable string describing the white balance value.
- * Returns empty string if there is no white balance value or it is not
- * recognized.
- */
- private static String getWhiteBalanceString(ExifInterface exif) {
- int whitebalance = exif.getAttributeInt(
- ExifInterface.TAG_WHITE_BALANCE, -1);
- if (whitebalance == -1) return "";
-
- switch (whitebalance) {
- case ExifInterface.WHITEBALANCE_AUTO:
- return "Auto";
- case ExifInterface.WHITEBALANCE_MANUAL:
- return "Manual";
- default:
- return "";
- }
- }
-
- // Called when "Details" is clicked.
- // Displays detailed information about the image/video.
- private static boolean onDetailsClicked(MenuInvoker onInvoke,
- final Handler handler,
- final Activity activity) {
- return true;
- }
-
- // Called when "Rotate left" or "Rotate right" is clicked.
- private static boolean onRotateClicked(MenuInvoker onInvoke,
- final int degree) {
- onInvoke.run(new MenuCallback() {
- public void run(Uri u, IImage image) {
- if (image == null || image.isReadonly()) {
- return;
- }
- image.rotateImageBy(degree);
- }
- });
- return true;
- }
-
- // Called when "Crop" is clicked.
- private static boolean onCropClicked(MenuInvoker onInvoke,
- final Activity activity) {
- onInvoke.run(new MenuCallback() {
- public void run(Uri u, IImage image) {
- if (u == null) {
- return;
- }
-
- Intent cropIntent = new Intent(
- "com.android.camera.action.CROP");
- cropIntent.setData(u);
- activity.startActivityForResult(
- cropIntent, RESULT_COMMON_MENU_CROP);
- }
- });
- return true;
- }
-
- // Called when "Set as" is clicked.
- private static boolean onSetAsClicked(MenuInvoker onInvoke,
- final Activity activity) {
- onInvoke.run(new MenuCallback() {
- public void run(Uri u, IImage image) {
- if (u == null || image == null) {
- return;
- }
-
- Intent intent = Util.createSetAsIntent(image);
- activity.startActivity(Intent.createChooser(intent,
- activity.getText(R.string.setImage)));
- }
- });
- return true;
- }
-
- // Called when "Share" is clicked.
- private static boolean onImageShareClicked(MenuInvoker onInvoke,
- final Activity activity) {
- onInvoke.run(new MenuCallback() {
- public void run(Uri u, IImage image) {
- if (image == null) return;
-
- Intent intent = new Intent();
- intent.setAction(Intent.ACTION_SEND);
- String mimeType = image.getMimeType();
- intent.setType(mimeType);
- intent.putExtra(Intent.EXTRA_STREAM, u);
- boolean isImage = ImageManager.isImage(image);
- try {
- activity.startActivity(Intent.createChooser(intent,
- activity.getText(isImage
- ? R.string.sendImage
- : R.string.sendVideo)));
- } catch (android.content.ActivityNotFoundException ex) {
- Toast.makeText(activity, isImage
- ? R.string.no_way_to_share_image
- : R.string.no_way_to_share_video,
- Toast.LENGTH_SHORT).show();
- }
- }
- });
- return true;
- }
-
- // Called when "Play" is clicked.
- private static boolean onViewPlayClicked(MenuInvoker onInvoke,
- final Activity activity) {
- onInvoke.run(new MenuCallback() {
- public void run(Uri uri, IImage image) {
- if (image != null) {
- Intent intent = new Intent(Intent.ACTION_VIEW,
- image.fullSizeImageUri());
- activity.startActivity(intent);
- }
- }});
- return true;
- }
-
- // Called when "Delete" is clicked.
- private static boolean onDeleteClicked(MenuInvoker onInvoke,
- final Activity activity, final Runnable onDelete) {
- onInvoke.run(new MenuCallback() {
- public void run(Uri uri, IImage image) {
- if (image != null) {
- deleteImage(activity, onDelete, image);
- }
- }});
- return true;
- }
-
- static MenuItemsResult addImageMenuItems(
- Menu menu,
- int inclusions,
- final Activity activity,
- final Handler handler,
- final Runnable onDelete,
- final MenuInvoker onInvoke) {
- final ArrayList<MenuItem> requiresWriteAccessItems =
- new ArrayList<MenuItem>();
- final ArrayList<MenuItem> requiresNoDrmAccessItems =
- new ArrayList<MenuItem>();
- final ArrayList<MenuItem> requiresImageItems =
- new ArrayList<MenuItem>();
- final ArrayList<MenuItem> requiresVideoItems =
- new ArrayList<MenuItem>();
-
- if ((inclusions & INCLUDE_ROTATE_MENU) != 0) {
- SubMenu rotateSubmenu = menu.addSubMenu(Menu.NONE, Menu.NONE,
- POSITION_IMAGE_ROTATE, R.string.rotate)
- .setIcon(android.R.drawable.ic_menu_rotate);
- // Don't show the rotate submenu if the item at hand is read only
- // since the items within the submenu won't be shown anyway. This
- // is really a framework bug in that it shouldn't show the submenu
- // if the submenu has no visible items.
- MenuItem rotateLeft = rotateSubmenu.add(R.string.rotate_left)
- .setOnMenuItemClickListener(
- new MenuItem.OnMenuItemClickListener() {
- public boolean onMenuItemClick(MenuItem item) {
- return onRotateClicked(onInvoke, -90);
- }
- }).setAlphabeticShortcut('l');
-
- MenuItem rotateRight = rotateSubmenu.add(R.string.rotate_right)
- .setOnMenuItemClickListener(
- new MenuItem.OnMenuItemClickListener() {
- public boolean onMenuItemClick(MenuItem item) {
- return onRotateClicked(onInvoke, 90);
- }
- }).setAlphabeticShortcut('r');
-
- requiresWriteAccessItems.add(rotateSubmenu.getItem());
- requiresWriteAccessItems.add(rotateLeft);
- requiresWriteAccessItems.add(rotateRight);
-
- requiresImageItems.add(rotateSubmenu.getItem());
- requiresImageItems.add(rotateLeft);
- requiresImageItems.add(rotateRight);
- }
-
- if ((inclusions & INCLUDE_CROP_MENU) != 0) {
- MenuItem autoCrop = menu.add(Menu.NONE, Menu.NONE,
- POSITION_IMAGE_CROP, R.string.camera_crop);
- autoCrop.setIcon(android.R.drawable.ic_menu_crop);
- autoCrop.setOnMenuItemClickListener(
- new MenuItem.OnMenuItemClickListener() {
- public boolean onMenuItemClick(MenuItem item) {
- return onCropClicked(onInvoke, activity);
- }
- });
- requiresWriteAccessItems.add(autoCrop);
- requiresImageItems.add(autoCrop);
- }
-
- if ((inclusions & INCLUDE_SET_MENU) != 0) {
- MenuItem setMenu = menu.add(Menu.NONE, Menu.NONE,
- POSITION_IMAGE_SET, R.string.camera_set);
- setMenu.setIcon(android.R.drawable.ic_menu_set_as);
- setMenu.setOnMenuItemClickListener(
- new MenuItem.OnMenuItemClickListener() {
- public boolean onMenuItemClick(MenuItem item) {
- return onSetAsClicked(onInvoke, activity);
- }
- });
- requiresImageItems.add(setMenu);
- }
-
- if ((inclusions & INCLUDE_SHARE_MENU) != 0) {
- MenuItem item1 = menu.add(Menu.NONE, MENU_IMAGE_SHARE,
- POSITION_IMAGE_SHARE, R.string.camera_share)
- .setOnMenuItemClickListener(
- new MenuItem.OnMenuItemClickListener() {
- public boolean onMenuItemClick(MenuItem item) {
- return onImageShareClicked(onInvoke, activity);
- }
- });
- item1.setIcon(android.R.drawable.ic_menu_share);
- MenuItem item = item1;
- requiresNoDrmAccessItems.add(item);
- }
-
- if ((inclusions & INCLUDE_DELETE_MENU) != 0) {
- MenuItem deleteItem = menu.add(Menu.NONE, Menu.NONE,
- POSITION_IMAGE_TOSS, R.string.camera_toss);
- requiresWriteAccessItems.add(deleteItem);
- deleteItem.setOnMenuItemClickListener(
- new MenuItem.OnMenuItemClickListener() {
- public boolean onMenuItemClick(MenuItem item) {
- return onDeleteClicked(onInvoke, activity,
- onDelete);
- }
- })
- .setAlphabeticShortcut('d')
- .setIcon(android.R.drawable.ic_menu_delete);
- }
-
- if ((inclusions & INCLUDE_DETAILS_MENU) != 0) {
- MenuItem detailsMenu = menu.add(Menu.NONE, Menu.NONE,
- POSITION_DETAILS, R.string.details)
- .setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {
- public boolean onMenuItemClick(MenuItem item) {
- return onDetailsClicked(onInvoke, handler, activity);
- }
- });
- detailsMenu.setIcon(R.drawable.ic_menu_view_details);
- }
-
- if ((inclusions & INCLUDE_SHOWMAP_MENU) != 0) {
- MenuItem showOnMapItem = menu.add(Menu.NONE, MENU_IMAGE_SHOWMAP,
- POSITION_SHOWMAP, R.string.show_on_map);
- showOnMapItem.setOnMenuItemClickListener(
- new MenuItem.OnMenuItemClickListener() {
- public boolean onMenuItemClick(MenuItem item) {
- return onShowMapClicked(onInvoke,
- handler, activity);
- }
- }).setIcon(R.drawable.ic_menu_3d_globe);
- requiresImageItems.add(showOnMapItem);
- }
-
- if ((inclusions & INCLUDE_VIEWPLAY_MENU) != 0) {
- MenuItem videoPlayItem = menu.add(Menu.NONE, Menu.NONE,
- POSITION_VIEWPLAY, R.string.video_play)
- .setOnMenuItemClickListener(
- new MenuItem.OnMenuItemClickListener() {
- public boolean onMenuItemClick(MenuItem item) {
- return onViewPlayClicked(onInvoke, activity);
- }
- });
- videoPlayItem.setIcon(R.drawable.ic_menu_play_clip);
- requiresVideoItems.add(videoPlayItem);
- }
-
- return new MenuItemsResult() {
- public void gettingReadyToOpen(Menu menu, IImage image) {
- // protect against null here. this isn't strictly speaking
- // required but if a client app isn't handling sdcard removal
- // properly it could happen
- if (image == null) {
- return;
- }
-
- ArrayList<MenuItem> enableList = new ArrayList<MenuItem>();
- ArrayList<MenuItem> disableList = new ArrayList<MenuItem>();
- ArrayList<MenuItem> list;
-
- list = image.isReadonly() ? disableList : enableList;
- list.addAll(requiresWriteAccessItems);
-
- list = image.isDrm() ? disableList : enableList;
- list.addAll(requiresNoDrmAccessItems);
-
- list = ImageManager.isImage(image) ? enableList : disableList;
- list.addAll(requiresImageItems);
-
- list = ImageManager.isVideo(image) ? enableList : disableList;
- list.addAll(requiresVideoItems);
-
- for (MenuItem item : enableList) {
- item.setVisible(true);
- item.setEnabled(true);
- }
-
- for (MenuItem item : disableList) {
- item.setVisible(false);
- item.setEnabled(false);
- }
- }
-
- // must override abstract method
- public void aboutToCall(MenuItem menu, IImage image) {
- }
- };
- }
-
- static void deletePhoto(Activity activity, Runnable onDelete) {
- deleteImpl(activity, onDelete, true);
- }
-
- static void deleteImage(
- Activity activity, Runnable onDelete, IImage image) {
- deleteImpl(activity, onDelete, ImageManager.isImage(image));
- }
-
- static void deleteImpl(
- Activity activity, Runnable onDelete, boolean isImage) {
- boolean needConfirm = PreferenceManager
- .getDefaultSharedPreferences(activity)
- .getBoolean("pref_gallery_confirm_delete_key", true);
- if (!needConfirm) {
- if (onDelete != null) onDelete.run();
- } else {
- String title = activity.getString(R.string.confirm_delete_title);
- String message = activity.getString(isImage
- ? R.string.confirm_delete_message
- : R.string.confirm_delete_video_message);
- confirmAction(activity, title, message, onDelete);
- }
- }
-
public static void confirmAction(Context context, String title,
String message, final Runnable action) {
OnClickListener listener = new OnClickListener() {
@@ -755,23 +160,6 @@ public class MenuHelper {
}
}
- public static String formatDuration(final Context context,
- int durationMs) {
- int duration = durationMs / 1000;
- int h = duration / 3600;
- int m = (duration - h * 3600) / 60;
- int s = duration - (h * 3600 + m * 60);
- String durationValue;
- if (h == 0) {
- durationValue = String.format(
- context.getString(R.string.details_ms), m, s);
- } else {
- durationValue = String.format(
- context.getString(R.string.details_hms), h, m, s);
- }
- return durationValue;
- }
-
public static int calculatePicturesRemaining() {
try {
if (!ImageManager.hasStorage()) {