// 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; }
public FormsetsEditor() { formsetsModel.addListener(this); languageEditor.formsetsEditor = this; formsEditor.setFormsetsModel(formsetsModel); bar.formsetsEditor = this; formsEditor.addListener(elementEditor); formsEditor.addListener(bar); menu.setBar(bar); formsEditor.registerMenu(menu); }
// 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; }
// 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 "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 "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 "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 "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; }
// Called when "Details" is clicked. // Displays detailed information about the image/video. private static boolean onDetailsClicked( MenuInvoker onInvoke, final Handler handler, final Activity activity) { onInvoke.run( new MenuCallback() { public void run(Uri u, IImage image) { if (image == null) { return; } final AlertDialog.Builder builder = new AlertDialog.Builder(activity); final View d = View.inflate(activity, R.layout.detailsview, null); ImageView imageView = (ImageView) d.findViewById(R.id.details_thumbnail_image); imageView.setImageBitmap(image.miniThumbBitmap()); TextView textView = (TextView) d.findViewById(R.id.details_image_title); textView.setText(image.getTitle()); long length = getImageFileSize(image); String lengthString = length < 0 ? EMPTY_STRING : Formatter.formatFileSize(activity, length); ((TextView) d.findViewById(R.id.details_file_size_value)).setText(lengthString); d.findViewById(R.id.details_frame_rate_row).setVisibility(View.GONE); d.findViewById(R.id.details_bit_rate_row).setVisibility(View.GONE); d.findViewById(R.id.details_format_row).setVisibility(View.GONE); d.findViewById(R.id.details_codec_row).setVisibility(View.GONE); int dimensionWidth = 0; int dimensionHeight = 0; if (ImageManager.isImage(image)) { // getWidth is much slower than reading from EXIF dimensionWidth = image.getWidth(); dimensionHeight = image.getHeight(); d.findViewById(R.id.details_duration_row).setVisibility(View.GONE); } String value = null; if (dimensionWidth > 0 && dimensionHeight > 0) { value = String.format( activity.getString(R.string.details_dimension_x), dimensionWidth, dimensionHeight); } if (value != null) { setDetailsValue(d, value, R.id.details_resolution_value); } else { hideDetailsRow(d, R.id.details_resolution_row); } value = EMPTY_STRING; long dateTaken = image.getDateTaken(); if (dateTaken != 0) { Date date = new Date(image.getDateTaken()); SimpleDateFormat dateFormat = new SimpleDateFormat(); value = dateFormat.format(date); } if (value != EMPTY_STRING) { setDetailsValue(d, value, R.id.details_date_taken_value); } else { hideDetailsRow(d, R.id.details_date_taken_row); } // Show more EXIF header details for JPEG images. if (JPEG_MIME_TYPE.equals(image.getMimeType())) { showExifInformation(image, d, activity); } else { hideExifInformation(d); } builder.setNeutralButton( R.string.details_ok, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); handler.post( new Runnable() { public void run() { builder .setIcon(android.R.drawable.ic_dialog_info) .setTitle(R.string.details_panel_title) .setView(d) .show(); } }); } }); return true; }