forked from qt-creator/qt-creator
QmlDesigner: Add versioning to exported bundles
Change-Id: Icd7f6eea5e4691388586fc72d65998a74d6d0058 Reviewed-by: Ali Kianian <ali.kianian@qt.io> Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
This commit is contained in:
@@ -807,6 +807,7 @@ void ContentLibraryView::exportLib3DComponent(const ModelNode &node)
|
||||
|
||||
auto compUtils = QmlDesignerPlugin::instance()->documentManager().generatedComponentUtils();
|
||||
jsonObj["id"] = compUtils.user3DBundleId();
|
||||
jsonObj["version"] = BUNDLE_VERSION;
|
||||
|
||||
Utils::FilePath jsonFilePath = targetPath.pathAppended(Constants::BUNDLE_JSON_FILENAME);
|
||||
m_zipWriter->addFile(jsonFilePath.fileName(), QJsonDocument(jsonObj).toJson());
|
||||
@@ -960,6 +961,7 @@ void ContentLibraryView::exportLib3DItem(const ModelNode &node, const QPixmap &i
|
||||
auto compUtils = QmlDesignerPlugin::instance()->documentManager().generatedComponentUtils();
|
||||
jsonObj["id"] = node.metaInfo().isQtQuick3DMaterial() ? compUtils.userMaterialsBundleId()
|
||||
: compUtils.user3DBundleId();
|
||||
jsonObj["version"] = BUNDLE_VERSION;
|
||||
|
||||
Utils::FilePath jsonFilePath = targetPath.pathAppended(Constants::BUNDLE_JSON_FILENAME);
|
||||
m_zipWriter->addFile(jsonFilePath.fileName(), QJsonDocument(jsonObj).toJson());
|
||||
@@ -1004,6 +1006,13 @@ void ContentLibraryView::importBundle()
|
||||
const QJsonArray importedItemsArr = importedJsonObj.value("items").toArray();
|
||||
QTC_ASSERT(!importedItemsArr.isEmpty(), return);
|
||||
|
||||
QString bundleVersion = importedJsonObj.value("version").toString();
|
||||
bool bundleVersionOk = !bundleVersion.isEmpty() && bundleVersion == BUNDLE_VERSION;
|
||||
if (!bundleVersionOk) {
|
||||
QMessageBox::warning(m_widget, tr("Unsupported bundle file"),
|
||||
tr("The chosen bundle was created with an incompatible version of Qt Design Studio"));
|
||||
return;
|
||||
}
|
||||
bool isMat = isMaterialBundle(importedJsonObj.value("id").toString());
|
||||
|
||||
QString bundleFolderName = isMat ? QLatin1String("materials") : QLatin1String("3d");
|
||||
|
@@ -102,6 +102,8 @@ private:
|
||||
Utils::FilePath m_iconSavePath;
|
||||
std::unique_ptr<ZipWriter> m_zipWriter;
|
||||
std::unique_ptr<QTemporaryDir> m_tempDir;
|
||||
|
||||
static constexpr char BUNDLE_VERSION[] = "1.0";
|
||||
};
|
||||
|
||||
} // namespace QmlDesigner
|
||||
|
Reference in New Issue
Block a user