@SuppressWarnings("PMD.NPathComplexity")
    private static void internalOneTimeMessage(@NonNull final Context context, @Nullable final String title, final String message, @Nullable final String moreInfoURL, final OneTimeDialogs.DialogType dialogType, @Nullable final Observable<Drawable> iconObservable, final boolean cancellable, final Runnable runAfterwards, final boolean disableCancelOnDAMA) {
        final DialogTextCheckboxBinding content = DialogTextCheckboxBinding.inflate(LayoutInflater.from(context));

        content.message.setText(message);

        /* @todo Check if any adaptions to Material theme necessary
        if (Settings.isLightSkin()) {
            final int[][] states = {{android.R.attr.state_checked}, {}};
            final int[] colors = {context.getResources().getColor(R.color.colorAccent), context.getResources().getColor(R.color.steel)};
            content.checkBox.setButtonTintList(new ColorStateList(states, colors));
        }
        */

        final AlertDialog.Builder builder = newBuilder(context)
                .setView(content.getRoot())
                .setCancelable(true)
                .setPositiveButton(android.R.string.ok, (dialog, which) -> {
                    if (content.checkBox.isChecked()) {
                        OneTimeDialogs.setStatus(dialogType, OneTimeDialogs.DialogStatus.DIALOG_HIDE);
                    }
                    if (runAfterwards != null) {
                        runAfterwards.run();
                    }
                });

        if (title != null) {
            builder.setTitle(title);
        }

        if (StringUtils.isNotBlank(moreInfoURL)) {
            builder.setNeutralButton(R.string.more_information, (dialog, which) -> ShareUtils.openUrl(context, moreInfoURL));
        }

        if (cancellable) {
            builder.setNegativeButton(android.R.string.cancel, (dialog, which) -> {
                // reachable only when disableCancelOnDAMA is set to false
                if (content.checkBox.isChecked()) {
                    OneTimeDialogs.setStatus(dialogType, OneTimeDialogs.DialogStatus.DIALOG_HIDE);
                }
            });
        }

        builder.setIcon(ImageUtils.getTransparent1x1Drawable(context.getResources()));

        final AlertDialog dialog = builder.create();

        if (iconObservable != null) {
            iconObservable.observeOn(AndroidSchedulers.mainThread()).subscribe(dialog::setIcon);
        }
        dialog.show();

        // disable cancel on "don't ask me again"?
        if (cancellable && disableCancelOnDAMA) {
            content.checkBox.setOnClickListener(result -> {
                final Button button = dialog.getButton(AlertDialog.BUTTON_NEGATIVE);
                button.setEnabled(!content.checkBox.isChecked());
            });
        }
    }
Show a onetime message dialog with title icon, "OK" and an "don't shown again" checkbox.
The check if the message should be shown is not done by this function, so be aware when using it!

@param context        activity owning the dialog
@param title          message dialog title
@param message        message dialog content
@param dialogType     the dialogs individual identification type
@param iconObservable observable (may be <tt>null</tt>) containing the icon(s) to set
@param cancellable    if true, a cancel button will be displayed additionally
@param runAfterwards  runnable (may be <tt>null</tt>) will be executed when ok button is clicked
main/src/main/java/cgeo/geocaching/ui/dialog/Dialogs.java