diff --git a/share/qtcreator/qmldesigner/welcomepage/MainGridStack.qml b/share/qtcreator/qmldesigner/welcomepage/MainGridStack.qml index 73b023bddc0..555596223b9 100644 --- a/share/qtcreator/qmldesigner/welcomepage/MainGridStack.qml +++ b/share/qtcreator/qmldesigner/welcomepage/MainGridStack.qml @@ -88,7 +88,17 @@ Item { Layout.fillWidth: true Layout.fillHeight: true hover: hoverHandler.hovered - model: ExamplesModel { id: examplesModel} + + Component.onCompleted: { + // remove items with old versions from the examples model + for (let i = examplesModel.count - 1; i >= 0; --i) { + if (!projectModel.exampleVersionOk(examplesModel.get(i).minQDSVersion)) + examplesModel.remove(i) + } + } + + model: ExamplesModelV2 { id: examplesModel } + delegate: ThumbnailDelegate { type: ThumbnailDelegate.Type.Example downloadable: showDownload diff --git a/src/plugins/studiowelcome/studiowelcomeplugin.cpp b/src/plugins/studiowelcome/studiowelcomeplugin.cpp index ac6a17de874..fe209b5fd0b 100644 --- a/src/plugins/studiowelcome/studiowelcomeplugin.cpp +++ b/src/plugins/studiowelcome/studiowelcomeplugin.cpp @@ -333,6 +333,37 @@ public: Core::EditorManager::openEditor(qmlFile); } + Q_INVOKABLE bool exampleVersionOk(const QString &exampleVersion) + { + if (exampleVersion.isEmpty()) + return true; + + const QStringList exampleVersionParts = exampleVersion.split('.'); + const QStringList qdsVersionParts = QCoreApplication::applicationVersion().split('.'); + + QList exampleVerInts; + QList qdsVerInts; + for (const QString &part : exampleVersionParts) + exampleVerInts.append(part.toInt()); + + for (const QString &part : qdsVersionParts) + qdsVerInts.append(part.toInt()); + + // pad zeros so both lists are same size + while (qdsVerInts.size() < exampleVerInts.size()) + qdsVerInts.append(0); + + while (exampleVerInts.size() < qdsVerInts.size()) + exampleVerInts.append(0); + + for (int i = 0; i < qdsVerInts.size(); ++i) { + if (exampleVerInts[i] < qdsVerInts[i]) + return false; + } + + return true; + } + public slots: void resetProjects(); void delayedResetProjects();