@TestTargetNew(
      level = TestLevel.COMPLETE,
      method = "resetMetaState",
      args = {android.text.Spannable.class})
  public void testResetMetaState() {
    CharSequence str = "123456";
    Spannable text = Editable.Factory.getInstance().newEditable(str);
    text.setSpan(Selection.SELECTION_START, 0, 0, Spanned.SPAN_POINT_POINT);
    text.setSpan(Selection.SELECTION_END, str.length(), str.length(), Spanned.SPAN_POINT_POINT);
    MetaKeyKeyListener.resetMetaState(text);
    assertEquals(Spanned.SPAN_POINT_POINT, text.getSpanFlags(Selection.SELECTION_START));
    assertEquals(Spanned.SPAN_POINT_POINT, text.getSpanFlags(Selection.SELECTION_END));

    str = "abc";
    text = Editable.Factory.getInstance().newEditable(str);
    text.setSpan(Selection.SELECTION_START, 0, 0, Spanned.SPAN_POINT_POINT);
    text.setSpan(Selection.SELECTION_END, str.length(), str.length(), Spanned.SPAN_POINT_POINT);
    MetaKeyKeyListener.resetMetaState(text);
    assertEquals(Spanned.SPAN_POINT_POINT, text.getSpanFlags(Selection.SELECTION_START));
    assertEquals(Spanned.SPAN_POINT_POINT, text.getSpanFlags(Selection.SELECTION_END));

    str = "#@%#$^%^";
    text = Editable.Factory.getInstance().newEditable(str);
    text.setSpan(Selection.SELECTION_START, 0, 0, Spanned.SPAN_POINT_POINT);
    text.setSpan(Selection.SELECTION_END, str.length(), str.length(), Spanned.SPAN_POINT_POINT);
    MetaKeyKeyListener.resetMetaState(text);
    assertEquals(Spanned.SPAN_POINT_POINT, text.getSpanFlags(Selection.SELECTION_START));
    assertEquals(Spanned.SPAN_POINT_POINT, text.getSpanFlags(Selection.SELECTION_END));
  }
  @TestTargetNew(
      level = TestLevel.COMPLETE,
      method = "adjustMetaAfterKeypress",
      args = {android.text.Spannable.class})
  public void testAdjustMetaAfterKeypress() {
    CharSequence str = "123456";
    Spannable content = Editable.Factory.getInstance().newEditable(str);
    content.setSpan(Selection.SELECTION_START, 0, 0, Spanned.SPAN_POINT_POINT);
    int len = str.length(); // for one line less than 100
    content.setSpan(Selection.SELECTION_END, len, len, Spanned.SPAN_POINT_POINT);
    MetaKeyKeyListener.adjustMetaAfterKeypress(content);
    assertEquals(Spanned.SPAN_POINT_POINT, content.getSpanFlags(Selection.SELECTION_START));
    assertEquals(Spanned.SPAN_POINT_POINT, content.getSpanFlags(Selection.SELECTION_END));

    str = "abc";
    content = Editable.Factory.getInstance().newEditable(str);
    content.setSpan(Selection.SELECTION_START, 0, 0, Spanned.SPAN_POINT_POINT);
    len = str.length(); // for one line less than 100
    content.setSpan(Selection.SELECTION_END, len, len, Spanned.SPAN_POINT_POINT);
    MetaKeyKeyListener.adjustMetaAfterKeypress(content);
    assertEquals(Spanned.SPAN_POINT_POINT, content.getSpanFlags(Selection.SELECTION_START));
    assertEquals(Spanned.SPAN_POINT_POINT, content.getSpanFlags(Selection.SELECTION_END));

    str = "#@%#$^%^";
    content = Editable.Factory.getInstance().newEditable(str);
    content.setSpan(Selection.SELECTION_START, 0, 0, Spanned.SPAN_POINT_POINT);
    len = str.length(); // for one line less than 100
    content.setSpan(Selection.SELECTION_END, len, len, Spanned.SPAN_POINT_POINT);
    MetaKeyKeyListener.adjustMetaAfterKeypress(content);
    assertEquals(Spanned.SPAN_POINT_POINT, content.getSpanFlags(Selection.SELECTION_START));
    assertEquals(Spanned.SPAN_POINT_POINT, content.getSpanFlags(Selection.SELECTION_END));
  }
コード例 #3
0
 public static CharSequence getHtmlText(String text) {
   // fixes an android bug (?): text layout fails on text with nested style tags
   text = removeNestedTags(text, new String[] {"i", "b", "strong"});
   final Spanned htmlText = Html.fromHtml(text);
   if (htmlText.getSpans(0, htmlText.length(), URLSpan.class).length == 0) {
     return htmlText;
   }
   final Spannable newHtmlText = Spannable.Factory.getInstance().newSpannable(htmlText);
   for (URLSpan span : newHtmlText.getSpans(0, newHtmlText.length(), URLSpan.class)) {
     final int start = newHtmlText.getSpanStart(span);
     final int end = newHtmlText.getSpanEnd(span);
     final int flags = newHtmlText.getSpanFlags(span);
     final String url = NetworkLibrary.Instance().rewriteUrl(span.getURL(), true);
     newHtmlText.removeSpan(span);
     newHtmlText.setSpan(new URLSpan(url), start, end, flags);
   }
   return newHtmlText;
 }
コード例 #4
0
ファイル: MessageView.java プロジェクト: markadam/telegram
 private static void fixLinks(Spannable spannable) {
   for (URLSpan span : spannable.getSpans(0, spannable.length(), URLSpan.class)) {
     final String url = span.getURL();
     int start = spannable.getSpanStart(span);
     int end = spannable.getSpanEnd(span);
     int flags = spannable.getSpanFlags(span);
     URLSpan newSpan =
         new URLSpan(url) {
           @Override
           public void updateDrawState(TextPaint paramTextPaint) {
             super.updateDrawState(paramTextPaint);
             paramTextPaint.setUnderlineText(false);
             paramTextPaint.setColor(0xff006FC8);
           }
         };
     spannable.removeSpan(span);
     spannable.setSpan(newSpan, start, end, flags);
   }
 }
コード例 #5
0
  private static void resetLock(Spannable content, Object what) {
    int current = content.getSpanFlags(what);

    if (current == LOCKED) content.removeSpan(what);
  }
コード例 #6
0
  private static void adjust(Spannable content, Object what) {
    int current = content.getSpanFlags(what);

    if (current == PRESSED) content.setSpan(what, 0, 0, USED);
    else if (current == RELEASED) content.removeSpan(what);
  }