bool KoTextOnShapeContainer::loadOdf(const KoXmlElement &element, KoShapeLoadingContext &context) { Q_D(KoTextOnShapeContainer); if (d->textShape == 0) return false; // probably because the factory was not found. KoTextShapeDataBase *shapeData = qobject_cast<KoTextShapeDataBase*>(d->textShape->userData()); Q_ASSERT(shapeData); // would be a bug in kotext QString styleName = element.attributeNS(KoXmlNS::draw, "style-name"); if (!styleName.isEmpty()) { KoStyleStack &styleStack = context.odfLoadingContext().styleStack(); styleStack.save(); context.odfLoadingContext().fillStyleStack(element, KoXmlNS::draw, "style-name", "graphic"); styleStack.setTypeProperties("graphic"); QString valign = styleStack.property(KoXmlNS::draw, "textarea-vertical-align"); if (valign == "top") { shapeData->setVerticalAlignment(Qt::AlignTop); } else if (valign == "middle") { shapeData->setVerticalAlignment(Qt::AlignVCenter); } else if (valign == "bottom") { shapeData->setVerticalAlignment(Qt::AlignBottom); } styleStack.restore(); } return shapeData->loadOdf(element, context); }
bool KoTosContainer::loadText(const KoXmlElement &element, KoShapeLoadingContext &context) { Q_D(const KoTosContainer); KoXmlElement child; forEachElement(child, element) { // only recreate the text shape if there's something to be loaded if (child.localName() == "p" || child.localName() == "list") { KoShape *textShape = createTextShape(context.documentResourceManager()); if (!textShape) { return false; } //apply the style properties to the loaded text setTextAlignment(d->alignment); // In the case of text on shape, we cannot ask the text shape to load // the odf, since it expects a complete document with style info and // everything, so we have to use the KoTextShapeData object instead. KoTextShapeDataBase *shapeData = qobject_cast<KoTextShapeDataBase*>(textShape->userData()); Q_ASSERT(shapeData); shapeData->loadStyle(element, context); bool loadOdf = shapeData->loadOdf(element, context); return loadOdf; } } return true; }