package com.fastaccess.provider.timeline.handler;
import android.text.SpannableStringBuilder;
import com.fastaccess.helper.Logger;
import net.nightwhistler.htmlspanner.TagNodeHandler;
import org.htmlcleaner.TagNode;
public class ListsHandler extends TagNodeHandler {
private int getMyIndex(TagNode node) {
if (node.getParent() == null) {
return -1;
} else {
int i = 1;
for (Object child : node.getParent().getChildren()) {
if (child == node) {
return i;
}
if (child instanceof TagNode) {
TagNode childNode = (TagNode) child;
if ("li".equals(childNode.getName())) {
++i;
}
}
}
return -1;
}
}
private String getParentName(TagNode node) {
return node.getParent() == null ? null : node.getParent().getName();
}
@Override public void beforeChildren(TagNode node, SpannableStringBuilder builder) {
TodoItems todoItems = null;
if (node.getChildTags() != null && node.getChildTags().length > 0) {
TagNode tagNode = node.getChildTags()[0];
if (tagNode.getName() != null && "input".equalsIgnoreCase(tagNode.getName())) {
todoItems = new TodoItems();
todoItems.isChecked = tagNode.getAttributeByName("checked") != null;
}
Logger.e(tagNode.getName(), tagNode.getAttributeByName("checked"));
}
if ("ol".equals(getParentName(node))) {
builder.append("").append(String.valueOf(getMyIndex(node))).append(". ");
} else if ("ul".equals(getParentName(node))) {
if (todoItems != null) {
builder.append(todoItems.isChecked ? "☑ " : "☐ ");
} else {
builder.append("\u2022 ");
}
}
}
public void handleTagNode(TagNode node, SpannableStringBuilder builder, int start, int end) {
if (builder.length() > 0 && builder.charAt(builder.length() - 1) != '\n') {
builder.append("\n");
}
}
static class TodoItems {
boolean isChecked;
}
}