public static ImagePickerConfig createDefault() { ImagePickerConfig config = new ImagePickerConfig(); config.setMode(IpCons.MODE_MULTIPLE); config.setLimit(IpCons.MAX_LIMIT); config.setShowCamera(true); config.setFolderMode(false); config.setSelectedImages(new ArrayList<>()); config.setSavePath(ImagePickerSavePath.DEFAULT); config.setReturnMode(ReturnMode.NONE); config.setImageLoader(new DefaultImageLoader()); return config; } }
public static String getDoneButtonText(Context context, ImagePickerConfig config) { final String doneButtonText = config.getDoneButtonText(); return ImagePickerUtils.isStringEmpty(doneButtonText) ? context.getString(R.string.ef_done) : doneButtonText; } }
public static String getFolderTitle(Context context, ImagePickerConfig config) { final String folderTitle = config.getFolderTitle(); return ImagePickerUtils.isStringEmpty(folderTitle) ? context.getString(R.string.ef_title_folder) : folderTitle; }
public static ImagePickerConfig checkConfig(ImagePickerConfig config) { if (config == null) { throw new IllegalStateException("ImagePickerConfig cannot be null"); } if (config.getMode() != IpCons.MODE_SINGLE && (config.getReturnMode() == ReturnMode.GALLERY_ONLY || config.getReturnMode() == ReturnMode.ALL)) { throw new IllegalStateException("ReturnMode.GALLERY_ONLY and ReturnMode.ALL is only applicable in Single Mode!"); } if (config.getImageLoader() != null && !(config.getImageLoader() instanceof Serializable)) { throw new IllegalStateException("Custom image loader must be a class that implement ImageLoader." + " This limitation due to Serializeable"); } return config; }
public String getTitle() { if (isDisplayingFolderView()) { return ConfigUtils.getFolderTitle(context, config); } if (config.getMode() == MODE_SINGLE) { return ConfigUtils.getImageTitle(context, config); } final int imageSize = imageAdapter.getSelectedImages().size(); final boolean useDefaultTitle = !ImagePickerUtils.isStringEmpty(config.getImageTitle()) && imageSize == 0; if (useDefaultTitle) { return ConfigUtils.getImageTitle(context, config); } return config.getLimit() == MAX_LIMIT ? String.format(context.getString(R.string.ef_selected), imageSize) : String.format(context.getString(R.string.ef_selected_with_limit), imageSize, config.getLimit()); }
void loadImages(ImagePickerConfig config) { if (!isViewAttached()) return; boolean isFolder = config.isFolderMode(); boolean includeVideo = config.isIncludeVideo(); ArrayList<File> excludedImages = config.getExcludedImages(); runOnUiIfAvailable(() -> getView().showLoading(true)); imageLoader.loadDeviceImages(isFolder, includeVideo, excludedImages, new ImageLoaderListener() { @Override public void onImageLoaded(final List<Image> images, final List<Folder> folders) { runOnUiIfAvailable(() -> { getView().showFetchCompleted(images, folders); final boolean isEmpty = folders != null ? folders.isEmpty() : images.isEmpty(); if (isEmpty) { getView().showEmpty(); } else { getView().showLoading(false); } }); } @Override public void onFailed(final Throwable throwable) { runOnUiIfAvailable(() -> getView().showError(throwable)); } }); }
LayoutInflater localInflater = inflater.cloneInContext(new ContextThemeWrapper(getActivity(), config.getTheme())); setupView(result); if (savedInstanceState == null) { setupRecyclerView(config, config.getSelectedImages()); } else { setupRecyclerView(config, savedInstanceState.getParcelableArrayList(STATE_KEY_SELECTED_IMAGES));
private void setupView() { Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); actionBar = getSupportActionBar(); if (actionBar != null) { final Drawable arrowDrawable = ViewUtils.getArrowIcon(this); final int arrowColor = config.getArrowColor(); if (arrowColor != ImagePickerConfig.NO_COLOR && arrowDrawable != null) { arrowDrawable.setColorFilter(arrowColor, PorterDuff.Mode.SRC_ATOP); } actionBar.setDisplayHomeAsUpEnabled(true); actionBar.setHomeAsUpIndicator(arrowDrawable); actionBar.setDisplayShowTitleEnabled(true); } }
@Override public boolean onPrepareOptionsMenu(Menu menu) { MenuItem menuCamera = menu.findItem(R.id.menu_camera); if (menuCamera != null) { if (config != null) { menuCamera.setVisible(config.isShowCamera()); } } MenuItem menuDone = menu.findItem(R.id.menu_done); if (menuDone != null) { menuDone.setTitle(ConfigUtils.getDoneButtonText(this, config)); menuDone.setVisible(imagePickerFragment.isShowDoneButton()); } return super.onPrepareOptionsMenu(menu); }
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setResult(RESULT_CANCELED); config = getIntent().getExtras().getParcelable(ImagePickerConfig.class.getSimpleName()); cameraOnlyConfig = getIntent().getExtras().getParcelable(CameraOnlyConfig.class.getSimpleName()); setTheme(config.getTheme()); setContentView(R.layout.activity_custom_ui); setupView(); if (savedInstanceState != null) { // The fragment has been restored. IpLogger.getInstance().e("Fragment has been restored"); imagePickerFragment = (ImagePickerFragment) getSupportFragmentManager().findFragmentById(R.id.ef_imagepicker_fragment_placeholder); } else { IpLogger.getInstance().e("Making fragment"); imagePickerFragment = ImagePickerFragment.newInstance(config, cameraOnlyConfig); FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.replace(R.id.ef_imagepicker_fragment_placeholder, imagePickerFragment); ft.commit(); } // For demonstration purposes, we're using a custom ImagePickerInteractionListener. Instead // of calling setInteractionListener, though, we could simply implement // ImagePickerInteractionListener in this class. imagePickerFragment.setInteractionListener(new CustomInteractionListener()); }
public void setupAdapters(ArrayList<Image> selectedImages, OnImageClickListener onImageClickListener, OnFolderClickListener onFolderClickListener) { if (config.getMode() == MODE_SINGLE && selectedImages != null && selectedImages.size() > 1) { selectedImages = null; } /* Init folder and image adapter */ final ImageLoader imageLoader = config.getImageLoader(); imageAdapter = new ImagePickerAdapter(context, imageLoader, selectedImages, onImageClickListener); folderAdapter = new FolderPickerAdapter(context, imageLoader, bucket -> { foldersState = recyclerView.getLayoutManager().onSaveInstanceState(); onFolderClickListener.onFolderClick(bucket); }); }
@Override public ImagePickerConfig createFromParcel(Parcel source) { return new ImagePickerConfig(source); }
public static String getImageTitle(Context context, ImagePickerConfig config) { final String configImageTitle = config.getImageTitle(); return ImagePickerUtils.isStringEmpty(configImageTitle) ? context.getString(R.string.ef_title_select_image) : configImageTitle; }
public ImagePickerConfig getConfig() { LocaleManager.setLanguange(config.getLanguage()); return ConfigUtils.checkConfig(config); }
private void setupView() { Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); actionBar = getSupportActionBar(); if (actionBar != null) { final Drawable arrowDrawable = ViewUtils.getArrowIcon(this); final int arrowColor = config.getArrowColor(); if (arrowColor != ImagePickerConfig.NO_COLOR && arrowDrawable != null) { arrowDrawable.setColorFilter(arrowColor, PorterDuff.Mode.SRC_ATOP); } actionBar.setDisplayHomeAsUpEnabled(true); actionBar.setHomeAsUpIndicator(arrowDrawable); actionBar.setDisplayShowTitleEnabled(true); } photoPreview = findViewById(R.id.photo_preview); }
@Override public boolean onPrepareOptionsMenu(Menu menu) { MenuItem menuCamera = menu.findItem(com.esafirm.imagepicker.R.id.menu_camera); if (menuCamera != null) { if (config != null) { menuCamera.setVisible(config.isShowCamera()); } } MenuItem menuDone = menu.findItem(com.esafirm.imagepicker.R.id.menu_done); if (menuDone != null) { menuDone.setTitle(ConfigUtils.getDoneButtonText(this, config)); menuDone.setVisible(imagePickerFragment.isShowDoneButton()); } return super.onPrepareOptionsMenu(menu); }
setTheme(config.getTheme()); setContentView(R.layout.ef_activity_image_picker); setupView();