package net.wigle.wigleandroid.model; import android.os.Build; import android.text.Html; import android.text.Spanned; import net.wigle.wigleandroid.MainActivity; /** * news. not thread-safe. */ public final class NewsItem { private final String subject; private final Spanned post; private final String poster; private final String dateTime; private final String link; final static String[] format_search = { "\\&\\#58;", "\\&\\#46;", "\\[b\\](.*?)\\[\\/b\\]", "\\[b.*\\](.*?)\\[\\/b.*\\]", "\\[i\\](.*?)\\[\\/i\\]", "\\[i.*\\](.*?)\\[\\/i.*\\]", "\\[url=(.*?)(:[^:]*?)?\\](.*?)\\[\\/url(:[^:]*?)?\\]", "\\[u\\](.*?)\\[\\/u\\]", "\\[u.*\\](.*?)\\[\\/u.*\\]", "\\{SMILIES_PATH\\}" }; final static String[] format_replace = { ":", ".", "<strong>$1</strong>", "<strong>$1</strong>", "<em>$1</em>", "<em>$1</em>", "<a href=\"$1$2\">$3</a>", "<span style=\"text-decoration: underline;\">$1</span>", "<span style=\"text-decoration: underline;\">$1</span>", "/phpbb/images/smilies", }; public NewsItem(final String subject, final String post, final String poster, final String dateTime, final String link) { this.subject = subject; this.post = NewsItem.bbCodeToText(post); this.poster = poster; this.dateTime = dateTime; this.link = link; } public String getSubject() { return subject; } public Spanned getPost() { return post; } public String getPoster() { return poster; } public String getDateTime() { return dateTime; } public String getLink() { return link; } private static Spanned bbCodeToText(String sourcePost) { String[] chunked = sourcePost.split("(\r\n|\n)"); String htmlBreaks = ""; for (String s: chunked) { htmlBreaks += "<p>"+s+"</p>"; } for (int i = 0; i < format_search.length; i++) { htmlBreaks = htmlBreaks.replaceAll(format_search[i], format_replace[i]); } if (Build.VERSION.SDK_INT >= 24) { return Html.fromHtml(htmlBreaks, Html.FROM_HTML_MODE_LEGACY); } else { return Html.fromHtml(htmlBreaks); } } }