using ::com::sun::star::beans::XPropertySet; using ::com::sun::star::beans::XPropertySetInfo; using ::com::sun::star::uno::Reference; using ::com::sun::star::uno::Any;
void XMLIndexMarkExport::ExportIndexMark( const Reference<XPropertySet> & rPropSet, bool bAutoStyles)
{ /// index marks have no styles! if (bAutoStyles) return;
// get index mark
Any aAny = rPropSet->getPropertyValue(gsDocumentIndexMark);
Reference<XPropertySet> xIndexMarkPropSet;
aAny >>= xIndexMarkPropSet;
// common: handling of start, end, collapsed entries and // alternative text
// collapsed/alternative text entry?
aAny = rPropSet->getPropertyValue(gsIsCollapsed); if (*o3tl::doAccess<bool>(aAny))
{ // collapsed entry: needs alternative text
nElementNo = 0;
aAny = xIndexMarkPropSet->getPropertyValue(gsAlternativeText);
OUString sTmp;
aAny >>= sTmp;
DBG_ASSERT(!sTmp.isEmpty(), "collapsed index mark without alternative text");
rExport.AddAttribute(XML_NAMESPACE_TEXT, XML_STRING_VALUE, sTmp);
} else
{ // start and end entries: has ID
aAny = rPropSet->getPropertyValue(gsIsStart);
nElementNo = *o3tl::doAccess<bool>(aAny) ? 1 : 2;
// distinguish between TOC, user, alphab. index marks by // asking for specific properties // Export attributes for -mark-start and -mark elements, // but not for -mark-end
Reference<XPropertySetInfo> xPropertySetInfo =
xIndexMarkPropSet->getPropertySetInfo(); if (xPropertySetInfo->hasPropertyByName(gsUserIndexName))
{ // user index mark
pElements = lcl_pUserIndexMarkName; if (nElementNo != 2)
{
ExportUserIndexMarkAttributes(xIndexMarkPropSet);
}
} elseif (xPropertySetInfo->hasPropertyByName(gsPrimaryKey))
{ // alphabetical index mark
pElements = lcl_pAlphaIndexMarkName; if (nElementNo != 2)
{
ExportAlphabeticalIndexMarkAttributes(xIndexMarkPropSet);
}
} else
{ // table of content:
pElements = lcl_pTocMarkNames; if (nElementNo != 2)
{
ExportTOCMarkAttributes(xIndexMarkPropSet);
}
}
// export element
DBG_ASSERT(pElements != nullptr, "illegal element array");
DBG_ASSERT(nElementNo >= 0, "illegal name array index");
DBG_ASSERT(nElementNo <= 2, "illegal name array index");
void XMLIndexMarkExport::ExportUserIndexMarkAttributes( const Reference<XPropertySet> & rPropSet)
{ // name of user index // (unless it's the default index; then it has no name)
Any aAny;
lcl_ExportPropertyString( rExport, rPropSet, gsUserIndexName, XML_INDEX_NAME, aAny );
void XMLIndexMarkExport::GetID(
OUStringBuffer& sBuf, const Reference<XPropertySet> & rPropSet)
{ // HACK: use address of object to form identifier
sal_Int64 nId = sal::static_int_cast<sal_Int64>(reinterpret_cast<sal_uIntPtr>(rPropSet.get()));
sBuf.append("IMark");
sBuf.append(nId);
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.