void KoBookmark::saveOdf(KoShapeSavingContext &context) { KoXmlWriter *writer = &context.xmlWriter(); QString nodeName; if (d->type == SinglePosition) nodeName = "text:bookmark"; else if (d->type == StartBookmark) nodeName = "text:bookmark-start"; else if (d->type == EndBookmark) nodeName = "text:bookmark-end"; writer->startElement(nodeName.toLatin1(), false); writer->addAttribute("text:name", d->name.toLatin1()); if (d->type == StartBookmark && inlineRdf()) { inlineRdf()->saveOdf(context, writer); } writer->endElement(); }
void TestKoDocumentRdf::testRememberNewInlineRdfObject() { KoDocumentRdf rdfDoc; QTextDocument doc; QTextCursor cur(&doc); KoBookmark bm(cur); bm.setName("test"); KoTextInlineRdf inlineRdf(&doc, &bm); inlineRdf.setXmlId(inlineRdf.createXmlId()); rdfDoc.rememberNewInlineRdfObject(&inlineRdf); Q_ASSERT(&inlineRdf == rdfDoc.findInlineRdfByID(inlineRdf.xmlId())); }
QString RdfTest::insertTableWithSemItem(KoTextEditor &editor, KoDocumentRdf &rdfDoc, const QString name) { editor.insertTable(5,10); #define TABLESIZE (5*10) const QTextTable *table = editor.currentTable(); QTextCursor cur(editor.document()); cur.setPosition(table->firstPosition()); KoBookmark *bookmark = new KoBookmark(cur); bookmark->setPositionOnlyMode(false); // we want it to be several chars long KoTextInlineRdf *inlineRdf(new KoTextInlineRdf(editor.document(), bookmark)); QString newId = inlineRdf->createXmlId(); inlineRdf->setXmlId(newId); bookmark->setName(newId); bookmark->setInlineRdf(inlineRdf); KoTextDocument(editor.document()).textRangeManager()->insert(bookmark); editor.setPosition(table->firstPosition()); editor.movePosition(QTextCursor::PreviousCharacter); hTestSemanticItem testItem(new TestSemanticItem(0, &rdfDoc)); testItem->setName(name); Soprano::Statement st( testItem->linkingSubject(), // subject Soprano::Node::createResourceNode(QUrl("http://docs.oasis-open.org/ns/office/1.2/meta/pkg#idref")), // predicate Soprano::Node::createLiteralNode(newId), // object rdfDoc.manifestRdfNode()); // manifest datastore rdfDoc.model()->addStatement(st); rdfDoc.rememberNewInlineRdfObject(inlineRdf); Q_ASSERT(rdfDoc.model()->statementCount() > 0); bookmark->setRangeEnd(table->lastPosition()); return newId; }