package com.ody.photopicker;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import java.util.ArrayList;
/**
* Created by Donglua on 16/6/25.
* Builder class to ease Intent setup.
*/
public class PhotoPreview {
public final static int REQUEST_CODE = 666;
public final static String EXTRA_CURRENT_ITEM = "current_item";
public final static String EXTRA_PHOTOS = "photos";
public final static String EXTRA_SHOW_DELETE = "show_delete";
public static PhotoPreviewBuilder builder() {
return new PhotoPreviewBuilder();
}
public static class PhotoPreviewBuilder {
private Bundle mPreviewOptionsBundle;
private Intent mPreviewIntent;
public PhotoPreviewBuilder() {
mPreviewOptionsBundle = new Bundle();
mPreviewIntent = new Intent();
}
/**
* Send the Intent from an Activity with a custom request code
*
* @param activity Activity to receive result
* @param requestCode requestCode for result
*/
public void start(@NonNull Activity activity, int requestCode) {
activity.startActivityForResult(getIntent(activity), requestCode);
}
/**
* Send the Intent with a custom request code
*
* @param fragment Fragment to receive result
* @param requestCode requestCode for result
*/
public void start(@NonNull Context context, @NonNull android.support.v4.app.Fragment fragment, int requestCode) {
fragment.startActivityForResult(getIntent(context), requestCode);
}
/**
* Send the Intent with a custom request code
*
* @param fragment Fragment to receive result
*/
public void start(@NonNull Context context, @NonNull android.support.v4.app.Fragment fragment) {
fragment.startActivityForResult(getIntent(context), REQUEST_CODE);
}
/**
* Send the crop Intent from an Activity
*
* @param activity Activity to receive result
*/
public void start(@NonNull Activity activity) {
start(activity, REQUEST_CODE);
}
/**
* Get Intent to start {@link PhotoPickerActivity}
*
* @return Intent for {@link PhotoPickerActivity}
*/
public Intent getIntent(@NonNull Context context) {
mPreviewIntent.setClass(context, PhotoPagerActivity.class);
mPreviewIntent.putExtras(mPreviewOptionsBundle);
return mPreviewIntent;
}
public PhotoPreviewBuilder setPhotos(ArrayList<String> photoPaths) {
mPreviewOptionsBundle.putStringArrayList(EXTRA_PHOTOS, photoPaths);
return this;
}
public PhotoPreviewBuilder setCurrentItem(int currentItem) {
mPreviewOptionsBundle.putInt(EXTRA_CURRENT_ITEM, currentItem);
return this;
}
public PhotoPreviewBuilder setShowDeleteButton(boolean showDeleteButton) {
mPreviewOptionsBundle.putBoolean(EXTRA_SHOW_DELETE, showDeleteButton);
return this;
}
}
}