void DataManagerImpl::deleteFiles(DataPtr data, QString basePath) { if (!data) return; ImagePtr image = boost::dynamic_pointer_cast<Image>(data); QStringList files; if (!data->getFilename().isEmpty()) { files << QDir(basePath).absoluteFilePath(data->getFilename()); if (image) files << changeExtension(files[0], "raw"); } for (int i=0; i<files.size(); ++i) { if (!QFileInfo(files[i]).exists()) continue; report(QString("Removing %1 from disk").arg(files[i])); QFile(files[i]).remove(); } }
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; }