private void displayCopyAllDoneDialog(final Activity activity, final FolderProcessResult folderProcessResult, final Folder source, final Folder target, final boolean move, final Consumer<FolderProcessResult> callback) {
        final String message = getCopyAllDoneMessage(activity, folderProcessResult, source, target, move);

        Dialogs.newBuilder(activity)
                .setTitle(activity.getString(move ? R.string.folder_move_finished_title : R.string.folder_copy_finished_title))
                .setMessage(message)
                .setCancelable(false)
                .setPositiveButton(android.R.string.ok, (dd, pp) -> {
                    dd.dismiss();
                    if (callback != null) {
                        callback.accept(folderProcessResult);
                    }
                })
                .setNegativeButton(android.R.string.cancel, (dd, pp) -> {
                    dd.dismiss();
                    if (callback != null) {
                        callback.accept(null);
                    }
                })
                .create().show();
    }
Like {@link #copyAll(Folder, Folder, boolean)}, but performs the copy process asynchronously
and provides a GUI for it (progress bar and final screen with copy result)

@param activity activity to display copy Gui to
@param source   source folder with content to copy
@param target   target folder to copy content to
@param move     if true, content is MOVED (e.g. sdeleted in source)
@param callback called after copying was done with copy result
main/src/main/java/cgeo/geocaching/storage/FolderUtils.java