private void getData() { presenter.abortLoad(); ImagePickerConfig config = getImagePickerConfig(); if (config != null) { presenter.loadImages(config); } }
void finishCaptureImage(Context context, Intent data, final BaseConfig config) { getCameraModule().getImage(context, data, images -> { if (ConfigUtils.shouldReturn(config, true)) { getView().finishPickImages(images); } else { getView().showCapturedImage(); } }); }
private void runOnUiIfAvailable(Runnable runnable) { main.post(() -> { if (isViewAttached()) { runnable.run(); } }); } }
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)); } }); }
@Override public void onDestroy() { super.onDestroy(); if (presenter != null) { presenter.abortLoad(); presenter.detachView(); } if (observer != null) { getActivity().getContentResolver().unregisterContentObserver(observer); observer = null; } if (handler != null) { handler.removeCallbacksAndMessages(null); handler = null; } }
/** * Check if the captured image is stored successfully * Then reload data */ @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == RC_CAPTURE) { if (resultCode == RESULT_OK) { presenter.finishCaptureImage(getActivity(), data, getBaseConfig()); } else if (resultCode == RESULT_CANCELED && isCameraOnly) { presenter.abortCaptureImage(); interactionListener.cancel(); } } }
private void setupComponents() { preferences = new ImagePickerPreferences(getActivity()); presenter = new ImagePickerPresenter(new ImageFileLoader(getActivity())); presenter.attachView(this); }
void abortCaptureImage() { getCameraModule().removeImage(); }
@Override public void onFailed(final Throwable throwable) { runOnUiIfAvailable(() -> getView().showError(throwable)); } });
/** * Start camera intent * Create a temporary file and pass file Uri to camera intent */ private void captureImage() { if (!CameraHelper.checkCameraAvailability(getActivity())) { return; } presenter.captureImage(this, getBaseConfig(), RC_CAPTURE); }
@Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putSerializable(STATE_KEY_CAMERA_MODULE, presenter.getCameraModule()); if (!isCameraOnly) { outState.putParcelable(STATE_KEY_RECYCLER, recyclerViewManager.getRecyclerState()); outState.putParcelableArrayList(STATE_KEY_SELECTED_IMAGES, (ArrayList<? extends Parcelable>) recyclerViewManager.getSelectedImages()); } }
@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); } }); }
void captureImage(Fragment fragment, BaseConfig config, int requestCode) { Context context = fragment.getActivity().getApplicationContext(); Intent intent = getCameraModule().getCameraIntent(fragment.getActivity(), config); if (intent == null) { Toast.makeText(context, context.getString(R.string.ef_error_create_image_file), Toast.LENGTH_LONG).show(); return; } fragment.startActivityForResult(intent, requestCode); }
void onDoneSelectImages(List<Image> selectedImages) { if (selectedImages != null && selectedImages.size() > 0) { /* Scan selected images which not existed */ for (int i = 0; i < selectedImages.size(); i++) { Image image = selectedImages.get(i); File file = new File(image.getPath()); if (!file.exists()) { selectedImages.remove(i); i--; } } getView().finishPickImages(selectedImages); } }