package com.example.asamles.app.imageedit;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import com.example.asamles.app.R;
import com.example.asamles.app.constants.Constants;
import com.example.asamles.app.dialog.ADialogs;
import com.example.asamles.app.imageedit.utils.ImageEditor;
import com.example.asamles.app.saveload.SaveLoadFile;
import com.joanzapata.android.iconify.IconDrawable;
import com.joanzapata.android.iconify.Iconify;
import uk.co.senab.photoview.PhotoViewAttacher;
public class ImageEditMain extends Fragment {
private static final int SELECT_PICTURE = 1;
static final int REQUEST_IMAGE_CAPTURE = 2;
public static ImageView imageView;
public static PhotoViewAttacher mAttacher;
public Bitmap bitmap;
// public static ImageLoader imageLoader;
public static ImageEditMain newInstance() {
return new ImageEditMain();
}
public ImageEditMain() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_imageedit, container, false);
FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
ft.replace(R.id.bottomLayout, HorizontalBar.newInstance());
ft.commit();
setHasOptionsMenu(true);
imageView = (ImageView) rootView.findViewById(R.id.image);
// bitmap = BitmapFactory.decodeResource(getResources(), R.raw.photo);
bitmap = ImageEditor.decodeSampledBitmapFromResource(getResources(), R.raw.photo, 800, 600);
// ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(getActivity())
// .build();
// imageLoader = ImageLoader.getInstance();
// imageLoader.init(config);
imageView.setImageBitmap(bitmap);
mAttacher = new PhotoViewAttacher(imageView);
return rootView;
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.image_edit_menu, menu);
menu.findItem(R.id.action_photo).setIcon(new IconDrawable(getActivity(), Iconify.IconValue.icon_photo)
.colorRes(R.color.grey_light)
.actionBarSize());
menu.findItem(R.id.action_load).setIcon(new IconDrawable(getActivity(), Iconify.IconValue.icon_gallery)
.colorRes(R.color.grey_light)
.actionBarSize());
menu.findItem(R.id.action_save).setIcon(new IconDrawable(getActivity(), Iconify.IconValue.icon_save)
.colorRes(R.color.grey_light)
.actionBarSize());
menu.setGroupVisible(R.id.menu_group_imageedit, true);
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_photo:
checkDialog(this.getString(R.string.photo_title), this.getString(R.string.photo_message), photo);
return true;
case R.id.action_save:
checkDialog(this.getString(R.string.save_title), this.getString(R.string.save_message), save);
return true;
case R.id.action_load:
checkDialog(this.getString(R.string.load_paint_title), this.getString(R.string.load_paint_message), load);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
Runnable save = new Runnable() {
@Override
public void run() {
Bitmap saveBitmap = null;
if (imageView.getDrawable() != null) {
saveBitmap = ((BitmapDrawable) imageView.getDrawable()).getBitmap();
}
SaveLoadFile.saveToPublicGallery(getActivity(), saveBitmap, Constants.IMAGEEDIT, null, true);
}
};
Runnable load = new Runnable() {
@Override
public void run() {
loadFromGallery();
}
};
Runnable photo = new Runnable() {
@Override
public void run() {
makePhoto();
}
};
public void checkDialog(String title, String message, final Runnable type) {
ADialogs alertDialog = new ADialogs(getActivity());
alertDialog.alert(true, title, message, getActivity().getString(R.string.ok), getActivity().getString(R.string.cancel));
alertDialog.setADialogsListener(new ADialogs.ADialogsListener() {
@Override
public void onADialogsPositiveClick(DialogInterface dialog) {
type.run();
dialog.dismiss();
}
@Override
public void onADialogsNegativeClick(DialogInterface dialog) {
dialog.dismiss();
}
@Override
public void onADialogsCancel(DialogInterface dialog) {
dialog.dismiss();
}
});
}
private void makePhoto() {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
if (takePictureIntent.resolveActivity(getActivity().getPackageManager()) != null) {
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
}
}
private void loadFromGallery() {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, getActivity().getString(R.string.load_intent_title)), SELECT_PICTURE);
}
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (data == null) {
return;
}
if (bitmap != null) {
bitmap.recycle();
bitmap = null;
}
if (requestCode == SELECT_PICTURE) {
// Uri selectedImageUri = data.getData();
String picturePath = SaveLoadFile.loadPathFromGallery(getActivity(), data);
bitmap = ImageEditor.decodeSampledBitmapFromUri(picturePath, 800, 600);//imageLoader.loadImageSync(String.valueOf(selectedImageUri));
}
if (requestCode == REQUEST_IMAGE_CAPTURE) {
Bundle extras = data.getExtras();
if (extras != null) {
bitmap = (Bitmap) extras.get("data");
}
}
imageView.setImageBitmap(bitmap);
mAttacher = new PhotoViewAttacher(imageView);
}
@Override
public void onDestroy() {
super.onDestroy();
// mAttacher.cleanup();
}
}