package com.beanie.imagechooserapp.fragments;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.Fragment;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import com.beanie.imagechooserapp.R;
import com.crashlytics.android.Crashlytics;
import com.kbeanie.imagechooser.api.ChooserType;
import com.kbeanie.imagechooser.api.ChosenImage;
import com.kbeanie.imagechooser.api.ChosenImages;
import com.kbeanie.imagechooser.api.ImageChooserListener;
import com.kbeanie.imagechooser.api.ImageChooserManager;
import java.io.File;
@SuppressLint("NewApi")
public class ImageChooserFragment extends Fragment implements
ImageChooserListener {
private ImageChooserManager imageChooserManager;
private int chooserType;
private String mediaPath;
private String finalPath;
private String thumbPath;
private String thumbPathSmall;
private ImageView imageViewThumbnail;
private ImageView imageViewThumbSmall;
private TextView textViewFile;
private ProgressBar pbar;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.activity_image_chooser, null);
Button buttonChooseImage = (Button) view
.findViewById(R.id.buttonChooseImage);
buttonChooseImage.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
chooseImage();
}
});
Button buttonTakePicture = (Button) view.findViewById(R.id.buttonTakePicture);
buttonTakePicture.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
takePicture();
}
});
imageViewThumbnail = (ImageView) view.findViewById(R.id.imageViewThumb);
imageViewThumbSmall = (ImageView) view.findViewById(R.id.imageViewThumbSmall);
textViewFile = (TextView) view.findViewById(R.id.textViewFile);
pbar = (ProgressBar) view.findViewById(R.id.progressBar);
pbar.setVisibility(View.GONE);
return view;
}
private void takePicture() {
chooserType = ChooserType.REQUEST_CAPTURE_PICTURE;
imageChooserManager = new ImageChooserManager(this,
ChooserType.REQUEST_CAPTURE_PICTURE, true);
imageChooserManager.setImageChooserListener(this);
try {
mediaPath = imageChooserManager.choose();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
private void chooseImage() {
chooserType = ChooserType.REQUEST_PICK_PICTURE;
imageChooserManager = new ImageChooserManager(this,
ChooserType.REQUEST_PICK_PICTURE, true);
imageChooserManager.setImageChooserListener(this);
try {
mediaPath = imageChooserManager.choose();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if (savedInstanceState != null) {
if (savedInstanceState.containsKey("media_path")) {
mediaPath = savedInstanceState.getString("media_path");
}
if (savedInstanceState.containsKey("chooser_type")) {
chooserType = savedInstanceState.getInt("chooser_type");
}
if (savedInstanceState.containsKey("final_path")) {
finalPath = savedInstanceState.getString("final_path");
thumbPath = savedInstanceState.getString("thumb_path");
thumbPathSmall = savedInstanceState.getString("thumb_path_small");
textViewFile.setText(finalPath);
imageViewThumbnail.setImageURI(Uri.parse(new File(thumbPath).toString()));
imageViewThumbSmall.setImageURI(Uri.parse(new File(thumbPathSmall).toString()));
}
}
Log.d(getClass().getName(), "onActivityCreated: " + mediaPath + " T: " + chooserType);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.d(getClass().getName(), requestCode + "");
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK) {
if (imageChooserManager == null) {
imageChooserManager = new ImageChooserManager(this, requestCode, true);
imageChooserManager.setImageChooserListener(this);
imageChooserManager.reinitialize(mediaPath);
}
imageChooserManager.submit(requestCode, data);
}
}
private Activity activity;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
this.activity = activity;
Log.d(getClass().getName(), "onAttach: ");
}
@Override
public void onImageChosen(final ChosenImage image) {
Log.d(getClass().getName(), "onImageChosen: " + image.getFilePathOriginal());
finalPath = image.getFilePathOriginal();
thumbPath = image.getFileThumbnail();
thumbPathSmall = image.getFileThumbnailSmall();
this.activity.runOnUiThread(new Runnable() {
@Override
public void run() {
pbar.setVisibility(View.GONE);
if (image != null) {
textViewFile.setText(image.getFilePathOriginal());
imageViewThumbnail.setImageURI(Uri.parse(new File(image
.getFileThumbnail()).toString()));
imageViewThumbSmall.setImageURI(Uri.parse(new File(image
.getFileThumbnailSmall()).toString()));
}
}
});
}
@Override
public void onError(final String reason) {
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
pbar.setVisibility(View.GONE);
Toast.makeText(ImageChooserFragment.this.getActivity(), reason,
Toast.LENGTH_LONG).show();
}
});
}
@Override
public void onImagesChosen(ChosenImages images) {
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
if (chooserType != 0) {
outState.putInt("chooser_type", chooserType);
}
if (mediaPath != null) {
outState.putString("media_path", mediaPath);
}
if (finalPath != null) {
outState.putString("final_path", finalPath);
outState.putString("thumb_path", thumbPath);
outState.putString("thumb_path_small", thumbPathSmall);
}
}
}