//递归
bool HtmImportDocument::hasSheetFilter(const HtmBox* htmBox)
{
ASSERT(htmBox != NULL);
int childCount = 0;
if (htmBox->name() == Context::sStrHtml().sTr
&& (childCount = htmBox->childCount()) >= 1)
{
for (int i = 0; i < childCount; i++)
{
const HtmBox* tdBox = htmBox->childItem(i);
if (tdBox != NULL && tdBox->name() == Context::sStrHtml().sTd)
{
AttrSlotsId slot = tdBox->attrSlots();
if (slot.v() != 0)
{
const AttrPack* pack = Context::sGainPackFromSlots(slot).v();
if(pack->getAttr(Context::sStrAttrName().sX_autofilter)
|| pack->getAttr(Context::sStrAttrName().sX_autofilterrange))
return true;
}
}
}
}
else
{
if ((htmBox->name() == Context::sStrHtml().sBody
|| htmBox->name() == Context::sStrHtml().sTable
|| htmBox->name() == Context::sStrHtml().sTr)
&& (childCount = htmBox->childCount()) >= 1)
{
for (int i = 0; i < childCount; i++)
{
const HtmBox* childBox = htmBox->childItem(i);
if (hasSheetFilter(childBox) == true)
return true;
}
}
}
return false;
}
//非递归
bool HtmImportDocument::hasSheetFilter(const HtmBox* body)
{
ASSERT(body != NULL);
int childCount = 0;
if (body->name() == Context::sStrHtml().sBody
&& (childCount = body->childCount()) >= 1)
{
for (int i= 0; i < childCount; i++)
{
const HtmBox* tableBox = body->childItem(i);
int tableCount = 0;
if (tableBox != NULL
&& tableBox->name() == Context::sStrHtml().sTable
&& (tableCount = tableBox->childCount()) >= 1)
{
for (int j = 0; j < tableCount; j++)
{
const HtmBox* trBox = tableBox->childItem(j);
int trCount = 0;
if (trBox != NULL
&& trBox->name() == Context::sStrHtml().sTr
&& (trCount = trBox->childCount()) >= 1)
{
for (int k = 0; k < trCount; k++)
{
const HtmBox* tdBox = trBox->childItem(k);
if (tdBox != NULL && tdBox->name() == Context::sStrHtml().sTd)
{
AttrSlotsId slot = tdBox->attrSlots();
if (slot.v() != 0)
{
const AttrPack* pack = Context::sGainPackFromSlots(slot).v();
if(pack->getAttr(Context::sStrAttrName().sX_autofilter)
|| pack->getAttr(Context::sStrAttrName().sX_autofilterrange))
return true;
}
}
}
}
}
}
}
}
return false;
}