MCPcopy Create free account
hub / github.com/M66B/FairEmail / renumber

Method renumber

app/src/main/java/eu/faircode/email/StyleHelper.java:1705–1765  ·  view source on GitHub ↗
(Editable text, boolean clean, Context context)

Source from the content-addressed store, hash-verified

1703 }
1704
1705 static void renumber(Editable text, boolean clean, Context context) {
1706 int bulletGap = context.getResources().getDimensionPixelSize(R.dimen.bullet_gap_size);
1707 int bulletIndent = context.getResources().getDimensionPixelSize(R.dimen.bullet_indent_size);
1708 int colorAccent = Helper.resolveColor(context, androidx.appcompat.R.attr.colorAccent);
1709
1710 Log.i("Renumber clean=" + clean + " text=" + text);
1711
1712 int next;
1713 int pos = -1;
1714 List<Integer> levels = new ArrayList<>();
1715 for (int i = 0; i < text.length(); i = next) {
1716 next = text.nextSpanTransition(i, text.length(), NumberSpan.class);
1717 Log.i("Bullet span next=" + next);
1718
1719 BulletSpan[] spans = text.getSpans(i, next, BulletSpan.class);
1720 for (BulletSpan span : spans) {
1721 int start = text.getSpanStart(span);
1722 int end = text.getSpanEnd(span);
1723 int flags = text.getSpanFlags(span);
1724 Log.i("Bullet span " + start + "..." + end);
1725
1726 if (clean && start == end) {
1727 text.removeSpan(span);
1728 continue;
1729 }
1730
1731 int level;
1732 if (span instanceof NumberSpan)
1733 level = ((NumberSpan) span).getLevel();
1734 else if (span instanceof BulletSpanEx)
1735 level = ((BulletSpanEx) span).getLevel();
1736 else
1737 level = 0;
1738
1739 if (start != pos)
1740 levels.clear();
1741 while (levels.size() > level + 1)
1742 levels.remove(levels.size() - 1);
1743 if (levels.size() == level + 1 && !(span instanceof NumberSpan))
1744 levels.remove(level);
1745 while (levels.size() < level + 1)
1746 levels.add(0);
1747
1748 int index = levels.get(level) + 1;
1749 levels.remove(level);
1750 levels.add(level, index);
1751
1752 if (span instanceof NumberSpan) {
1753 NumberSpan ns = (NumberSpan) span;
1754 if (index != ns.getIndex()) {
1755 text.removeSpan(span);
1756 // Text size needs measuring
1757 NumberSpan clone = new NumberSpan(bulletIndent, bulletGap, colorAccent, ns.getTextSize(), level, index);
1758 text.setSpan(clone, start, end, flags);
1759 }
1760
1761 pos = end;
1762 }

Callers 3

afterTextChangedMethod · 0.95
setListLevelMethod · 0.95
setListMethod · 0.95

Calls 15

resolveColorMethod · 0.95
iMethod · 0.95
getIndexMethod · 0.95
getTextSizeMethod · 0.95
sizeMethod · 0.65
getResourcesMethod · 0.45
lengthMethod · 0.45
nextSpanTransitionMethod · 0.45
getSpansMethod · 0.45
getSpanStartMethod · 0.45
getSpanEndMethod · 0.45
getSpanFlagsMethod · 0.45

Tested by

no test coverage detected