diff options
Diffstat (limited to 'src/databasetable.cpp')
-rw-r--r-- | src/databasetable.cpp | 47 |
1 files changed, 41 insertions, 6 deletions
diff --git a/src/databasetable.cpp b/src/databasetable.cpp index cfbeb5d..911457f 100644 --- a/src/databasetable.cpp +++ b/src/databasetable.cpp @@ -183,11 +183,46 @@ DatabaseTable::updateLayout() update(); } -QMimeData * -DatabaseTable::toMimeData() +#include "domutils.h" + +void +DatabaseTable::loadFromXml(QDomElement element, DiagramDocument *document) { - QMimeData *mimeData = new QMimeData(); - QByteArray data = name().toUtf8(); - mimeData->setData("application/dbmodel.object", data); - return mimeData; + DiagramItem::loadFromXml(element, document); + QDomElement tableElement = element.firstChildElement("table"); + if (!tableElement.isNull()) { + setName(readStringElement(tableElement, "name")); + QDomElement columnListElement = tableElement.firstChildElement("column-list"); + QDomElement columnElement = columnListElement.firstChildElement("column"); + while (!columnElement.isNull()) { + Column *column = new Column(); + column->setName(readStringElement(columnElement, "name")); + column->setDataType(readStringElement(columnElement, "data-type")); + column->setRequired(readStringElement(columnElement, "required") == "yes"); + column->setPrimaryKey(readStringElement(columnElement, "primary-key") == "yes"); + column->setNotes(readStringElement(columnElement, "notes")); + columnList()->appendColumn(column); + columnElement = columnElement.nextSiblingElement("column"); + } + } +} + +void +DatabaseTable::saveToXml(QDomDocument doc, QDomElement element) +{ + DiagramItem::saveToXml(doc, element); + QDomElement tableElement = doc.createElement("table"); + element.appendChild(tableElement); + appendStringElement(doc, tableElement, "name", name()); + QDomElement columnListElement = doc.createElement("column-list"); + tableElement.appendChild(columnListElement); + foreach (Column *column, columnList()->columns()) { + QDomElement columnElement = doc.createElement("column"); + columnListElement.appendChild(columnElement); + appendStringElement(doc, columnElement, "name", column->name()); + appendStringElement(doc, columnElement, "data-type", column->dataType()); + appendStringElement(doc, columnElement, "required", column->isRequired() ? "yes" : QString()); + appendStringElement(doc, columnElement, "primary-key", column->isPrimaryKey() ? "yes" : QString()); + appendStringElement(doc, columnElement, "notes", column->notes()); + } } |