/*
* Copyright (c) 2014. The Trustees of Indiana University.
*
* This version of the code is licensed under the MPL 2.0 Open Source license with additional
* healthcare disclaimer. If the user is an entity intending to commercialize any application
* that uses this code in a for-profit venture, please contact the copyright holder.
*/
package com.muzima.view.forms;
import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Environment;
import android.webkit.JavascriptInterface;
import com.muzima.utils.EnDeCrypt;
import com.muzima.utils.StringUtils;
import com.muzima.utils.imaging.ImageResult;
import com.muzima.utils.imaging.ImagingIntent;
import java.io.File;
import static com.muzima.utils.imaging.ImagingIntent.KEY_IMAGE_CAPTION;
import static com.muzima.utils.imaging.ImagingIntent.KEY_IMAGE_PATH;
import static com.muzima.utils.imaging.ImagingIntent.KEY_SECTION_NAME;
public class ImagingComponent {
private final static String TAG = "ImagingComponent";
public static final int REQUEST_CODE = 0x0000c0de;
public static final String FORM_UUID = "formUuid";
private final Activity activity;
private String imagePathField;
private String imageCaptionField;
public ImagingComponent(Activity activity) {
this.activity = activity;
}
@JavascriptInterface
public void startImageIntent(String sectionName, String imagePathField, String imagePath,
String imageCaptionField, String imageCaption, String formUuid) {
this.imagePathField = imagePathField;
this.imageCaptionField = imageCaptionField;
Intent imagingIntent = new Intent(activity.getApplication(), ImagingIntent.class);
imagingIntent.putExtra(FORM_UUID, formUuid);
imagingIntent.putExtra(KEY_IMAGE_PATH, imagePath);
imagingIntent.putExtra(KEY_IMAGE_CAPTION, imageCaption);
imagingIntent.putExtra(KEY_SECTION_NAME, sectionName);
// at this point the image is encrypted so we decrypt it
if (!StringUtils.isEmpty(imagePath))
EnDeCrypt.decrypt(new File(imagePath), "this-is-supposed-to-be-a-secure-key");
activity.startActivityForResult(imagingIntent, REQUEST_CODE);
}
@JavascriptInterface
public void openImage(String imageUri){
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
Intent startImage = new Intent(Intent.ACTION_VIEW);
Uri uri = Uri.parse("file://" + Environment.getExternalStorageDirectory().getPath() + imageUri);
startImage.setDataAndType(uri, "image/*");
activity.startActivity(startImage);
}
}
public String getImagePathField() {
return imagePathField;
}
public String getImageCaptionField() {
return imageCaptionField;
}
public static ImageResult parseActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == REQUEST_CODE) {
if (resultCode == Activity.RESULT_OK) {
String sectionName = intent.getStringExtra(KEY_SECTION_NAME);
String imageUri = intent.getStringExtra(KEY_IMAGE_PATH);
String imageCaption = intent.getStringExtra(KEY_IMAGE_CAPTION);
// now that we have an image we encrypt it and keep the path
if (!StringUtils.isEmpty(imageUri))
EnDeCrypt.encrypt(new File(imageUri), "this-is-supposed-to-be-a-secure-key");
return new ImageResult(sectionName, imageUri, imageCaption);
}
}
return null;
}
}