DataPtr DataFactory::create(QString type, QString uid, QString name) { // if (mDataManager) // mDataManager->generateUidAndName(&uid, &name); DataPtr retval = this->createRaw(type, uid); if (name.isEmpty()) name = uid; if (retval) retval->setName(name); return retval; }
DataPtr DataManagerImpl::loadData(QDomElement node, QString rootPath) { QString uid = node.toElement().attribute("uid"); QString name = node.toElement().attribute("name"); QString type = node.toElement().attribute("type"); QDir relativePath = this->findRelativePath(node, rootPath); QString absolutePath = this->findAbsolutePath(relativePath, rootPath); if (mData.count(uid)) // dont load same image twice return mData[uid]; DataPtr data = mDataFactory->create(type, uid, name); if (!data) { reportWarning(QString("Unknown type: %1 for file %2").arg(type).arg(absolutePath)); return DataPtr(); } bool loaded = data->load(absolutePath); if (!loaded) { reportWarning("Unknown file: " + absolutePath); return DataPtr(); } if (!name.isEmpty()) data->setName(name); data->setFilename(relativePath.path()); this->loadData(data); // conversion for change in format 2013-10-29 QString newPath = rootPath+"/"+data->getFilename(); if (QDir::cleanPath(absolutePath) != QDir::cleanPath(newPath)) { reportWarning(QString("Detected old data format, converting from %1 to %2").arg(absolutePath).arg(newPath)); data->save(rootPath); } return data; }
void DataManagerImpl::loadData(DataPtr data) { if (data->getUid().contains('%')) { QString uid = data->getUid(); QString name = data->getName(); this->generateUidAndName(&uid, &name); data->setName(name); data->setUid(uid); } if (data) { if (mData.count(data->getUid()) && mData[data->getUid()]!=data) reportError(QString("Overwriting Data with uid=%1 with new object into PasM").arg(data->getUid())); // this->verifyParentFrame(data); mData[data->getUid()] = data; emit dataAddedOrRemoved(); } }