package i2p.bote.android.util;
import java.io.File;
import java.util.List;
import i2p.bote.android.R;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.ResolveInfo;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.View;
import android.widget.ImageView;
import android.widget.Toast;
public class EditPictureFragment extends Fragment {
static final int REQUEST_PICTURE_FILE = 1;
static final int CROP_PICTURE = 2;
Uri mPictureCaptureUri;
Bitmap mPicture;
ImageView mPictureView;
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
mPictureView = (ImageView) view.findViewById(R.id.picture);
// Set up listener for picture changing
mPictureView.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
Intent i = new Intent(Intent.ACTION_GET_CONTENT);
i.setType("image/*");
startActivityForResult(
Intent.createChooser(i, getResources().getString(R.string.select_a_picture)),
REQUEST_PICTURE_FILE);
}
});
}
protected void setPictureB64(String pic) {
mPicture = BoteHelper.decodePicture(pic);
if (mPicture != null)
mPictureView.setImageBitmap(mPicture);
}
protected String getPictureB64() {
return BoteHelper.encodePicture(mPicture);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode != Activity.RESULT_OK) {
if (resultCode == Activity.RESULT_CANCELED) {
System.out.println("Cancelled");
if (mPictureCaptureUri != null ) {
getActivity().getContentResolver().delete(mPictureCaptureUri, null, null);
mPictureCaptureUri = null;
}
}
return;
}
switch (requestCode) {
case REQUEST_PICTURE_FILE:
mPictureCaptureUri = data.getData();
cropPicture();
break;
case CROP_PICTURE:
Bundle extras = data.getExtras();
if (extras != null) {
mPicture = extras.getParcelable("data");
mPictureView.setImageBitmap(mPicture);
}
File f = new File(mPictureCaptureUri.getPath());
if (f.exists())
f.delete();
break;
}
}
private void cropPicture() {
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setType("image/*");
List<ResolveInfo> list = getActivity().getPackageManager().queryIntentActivities(intent, 0);
if (list.size() == 0) {
Toast.makeText(getActivity(), R.string.no_image_cropping_app_found, Toast.LENGTH_SHORT)
.show();
} else {
intent.setData(mPictureCaptureUri);
intent.putExtra("outputX", 72);
intent.putExtra("outputY", 72);
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("scale", true);
intent.putExtra("return-data", true);
startActivityForResult(
Intent.createChooser(intent,
getResources().getString(R.string.select_a_cropping_app)),
CROP_PICTURE);
}
}
}