package com.quickblox.sample.core.utils.imagepick.fragment;
import android.app.Activity;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v7.app.AlertDialog;
import com.quickblox.sample.core.R;
import com.quickblox.sample.core.utils.ImageUtils;
public class ImageSourcePickDialogFragment extends DialogFragment {
private static final int POSITION_GALLERY = 0;
private static final int POSITION_CAMERA = 1;
private OnImageSourcePickedListener onImageSourcePickedListener;
public static void show(FragmentManager fm, OnImageSourcePickedListener onImageSourcePickedListener) {
ImageSourcePickDialogFragment fragment = new ImageSourcePickDialogFragment();
fragment.setOnImageSourcePickedListener(onImageSourcePickedListener);
fragment.show(fm, ImageSourcePickDialogFragment.class.getSimpleName());
}
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle(R.string.dlg_choose_image_from);
builder.setItems(R.array.dlg_image_pick, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which) {
case POSITION_GALLERY:
onImageSourcePickedListener.onImageSourcePicked(ImageSource.GALLERY);
break;
case POSITION_CAMERA:
onImageSourcePickedListener.onImageSourcePicked(ImageSource.CAMERA);
break;
}
}
});
return builder.create();
}
public void setOnImageSourcePickedListener(OnImageSourcePickedListener onImageSourcePickedListener) {
this.onImageSourcePickedListener = onImageSourcePickedListener;
}
public interface OnImageSourcePickedListener {
void onImageSourcePicked(ImageSource source);
}
public enum ImageSource {
GALLERY,
CAMERA
}
public static class LoggableActivityImageSourcePickedListener implements OnImageSourcePickedListener {
private Activity activity;
private Fragment fragment;
public LoggableActivityImageSourcePickedListener(Activity activity) {
this.activity = activity;
}
public LoggableActivityImageSourcePickedListener(Fragment fragment) {
this.fragment = fragment;
}
@Override
public void onImageSourcePicked(ImageSource source) {
switch (source) {
case GALLERY:
if (fragment != null) {
ImageUtils.startImagePicker(fragment);
} else {
ImageUtils.startImagePicker(activity);
}
break;
case CAMERA:
if (fragment != null) {
ImageUtils.startCameraForResult(fragment);
} else {
ImageUtils.startCameraForResult(activity);
}
break;
}
}
}
}