/* * Copyright (C) 2008 Esmertec AG. Copyright (C) 2008 The Android Open Source * Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package info.guardianproject.otr.app.im.app; import info.guardianproject.otr.app.im.plugin.BrandingResourceIDs; import android.graphics.drawable.Drawable; import android.text.Spannable; import android.text.SpannableString; import android.text.style.ImageSpan; import android.text.util.Linkify; public class Markup { private BrandingResources mRes; // private IntTrie mSmileys; public Markup(BrandingResources res) { mRes = res; // mSmileys = new IntTrie(res.getStringArray(BrandingResourceIDs.STRING_ARRAY_SMILEY_TEXTS), // res.getSmileyIcons()); } public final CharSequence markup(CharSequence text) { SpannableString result; if (text instanceof SpannableString) { result = (SpannableString) text; } else { result = new SpannableString(text); } Linkify.addLinks(result, Linkify.ALL); // applyEmoticons(result); return result; } /* public final CharSequence applyEmoticons(CharSequence text) { int offset = 0; final int len = text.length(); SpannableString result = null; while (offset < len) { int index = offset; IntTrie.Node n = mSmileys.getNode(text.charAt(index++)); int candidate = 0; int lastMatchEnd = -1; // Search the trie until we stop matching while (n != null) { // Record the value and position of the longest match if (n.mValue != 0) { candidate = n.mValue; lastMatchEnd = index; } // Let's not run off the end of the input if (index >= len) { break; } n = n.getNode(text.charAt(index++)); } // If we matched a smiley, apply its image over the text if (candidate != 0) { // Lazy-convert the result text to a SpannableString if we have to if (result == null) { if (text instanceof SpannableString) { result = (SpannableString) text; } else { result = new SpannableString(text); text = result; } } Drawable smiley = mRes.getSmileyIcon(candidate); smiley.setBounds(0, 0, smiley.getIntrinsicWidth(), smiley.getIntrinsicHeight()); result.setSpan(new ImageSpan(smiley, ImageSpan.ALIGN_BASELINE), offset, lastMatchEnd, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); candidate = 0; } // if there was a match, start searching for the next one after it // if no match, start at the next character if (lastMatchEnd != -1) { offset = lastMatchEnd; lastMatchEnd = -1; } else { offset++; } } // If there were no modifications, return the original string if (result == null) { return text; } return result; } */ }