use of jadx.core.xmlgen.entry.ProtoValue in project jadx by skylot.
the class ResXmlGen method addValue.
private void addValue(ICodeWriter cw, ResourceEntry ri) {
if (ri.getProtoValue() != null) {
ProtoValue protoValue = ri.getProtoValue();
if (protoValue.getValue() != null && protoValue.getNamedValues() == null) {
addSimpleValue(cw, ri.getTypeName(), ri.getTypeName(), "name", ri.getKeyName(), protoValue.getValue());
} else {
cw.startLine();
cw.add('<').add(ri.getTypeName()).add(' ');
String itemTag = "item";
cw.add("name=\"").add(ri.getKeyName()).add('\"');
if (ri.getTypeName().equals("attr") && protoValue.getValue() != null) {
cw.add(" format=\"").add(protoValue.getValue()).add('\"');
}
if (protoValue.getParent() != null) {
cw.add(" parent=\"").add(protoValue.getParent()).add('\"');
}
cw.add(">");
cw.incIndent();
for (ProtoValue value : protoValue.getNamedValues()) {
addProtoItem(cw, itemTag, ri.getTypeName(), value);
}
cw.decIndent();
cw.startLine().add("</").add(ri.getTypeName()).add('>');
}
} else if (ri.getSimpleValue() != null) {
String valueStr = vp.decodeValue(ri.getSimpleValue());
addSimpleValue(cw, ri.getTypeName(), ri.getTypeName(), "name", ri.getKeyName(), valueStr);
} else {
cw.startLine();
cw.add('<').add(ri.getTypeName()).add(' ');
String itemTag = "item";
if (ri.getTypeName().equals("attr") && !ri.getNamedValues().isEmpty()) {
cw.add("name=\"").add(ri.getKeyName());
int type = ri.getNamedValues().get(0).getRawValue().getData();
if ((type & ValuesParser.ATTR_TYPE_ENUM) != 0) {
itemTag = "enum";
} else if ((type & ValuesParser.ATTR_TYPE_FLAGS) != 0) {
itemTag = "flag";
}
String formatValue = XmlGenUtils.getAttrTypeAsString(type);
if (formatValue != null) {
cw.add("\" format=\"").add(formatValue);
}
cw.add("\"");
} else {
cw.add("name=\"").add(ri.getKeyName()).add('\"');
}
if (ri.getParentRef() != 0) {
String parent = vp.decodeValue(TYPE_REFERENCE, ri.getParentRef());
cw.add(" parent=\"").add(parent).add('\"');
}
cw.add(">");
cw.incIndent();
for (RawNamedValue value : ri.getNamedValues()) {
addItem(cw, itemTag, ri.getTypeName(), value);
}
cw.decIndent();
cw.startLine().add("</").add(ri.getTypeName()).add('>');
}
}
Aggregations