package com.ubergeek42.WeechatAndroid.utils;
import android.app.Dialog;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.DialogFragment;
import android.support.v7.app.AlertDialog;
import android.support.v7.widget.AppCompatTextView;
import android.text.Html;
import android.widget.ScrollView;
import android.widget.TextView;
import com.ubergeek42.WeechatAndroid.R;
public class InvalidHostnameDialog extends DialogFragment {
String hostname;
Iterable<String> certificateHosts;
public static InvalidHostnameDialog newInstance(String hostname, Iterable<String> certificateHosts) {
InvalidHostnameDialog d = new InvalidHostnameDialog();
d.hostname = hostname;
d.certificateHosts = certificateHosts;
d.setRetainInstance(true);
return d;
}
// this can get called before the activity has started
@NonNull
@Override public Dialog onCreateDialog(Bundle savedInstanceState) {
final int padding = (int) getResources().getDimension(R.dimen.dialog_padding_full);
final ScrollView scrollView = new ScrollView(getContext());
final TextView textView = new AppCompatTextView(getContext());
final StringBuilder sb = new StringBuilder();
for (String host : certificateHosts) {
sb.append("<br>\u00A0\u00A0\u00A0\u00A0\u2022\u00A0\u00A0<strong>")
.append(Html.escapeHtml(host)).append("</strong>");
}
String allowed = sb.toString();
if (allowed.isEmpty()) {
allowed = getString(R.string.invalid_hostname_dialog_empty);
}
textView.setText(Html.fromHtml(getString(R.string.invalid_hostname_dialog_body,
Html.escapeHtml(hostname), allowed)));
scrollView.addView(textView);
return new AlertDialog.Builder(getContext())
.setTitle(getString(R.string.invalid_hostname_dialog_title))
.setView(scrollView, padding, padding/2, padding, 0)
.setNegativeButton(getString(R.string.invalid_hostname_dialog_button), null)
.create();
}
@Override public void onDestroyView() {
if (getDialog() != null && getRetainInstance()) {
getDialog().setDismissMessage(null);
}
super.onDestroyView();
}
}