diff options
author | Eike Ziller <eike.ziller@qt.io> | 2022-08-31 11:03:13 +0200 |
---|---|---|
committer | Eike Ziller <eike.ziller@qt.io> | 2022-08-31 11:03:13 +0200 |
commit | a2f21d40f549cb4867c54e8252201684135ec1f3 (patch) | |
tree | 8ee047dee781160f7fc49c9d74ae2c82eb7c8f56 /src | |
parent | ad4fed86caab1f68492912244c01fc6b73378929 (diff) | |
parent | 60a045299d0c161051f0349be9818f80d7fc7cfd (diff) |
Merge remote-tracking branch 'origin/8.0'
Conflicts:
src/plugins/debugger/debuggerdialogs.cpp
src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp
src/plugins/texteditor/fontsettingspage.cpp
Change-Id: I5a6accd2065e0d8320045b57ade7b54a9a09aae0
Diffstat (limited to 'src')
-rw-r--r-- | src/libs/qmleditorwidgets/easingpane/easinggraph.h | 2 | ||||
-rw-r--r-- | src/libs/utils/networkaccessmanager.cpp | 1 | ||||
-rw-r--r-- | src/plugins/coreplugin/corejsextensions.cpp | 1 | ||||
-rw-r--r-- | src/plugins/coreplugin/icore.cpp | 1 | ||||
-rw-r--r-- | src/plugins/debugger/debuggerdialogs.cpp | 4 | ||||
-rw-r--r-- | src/plugins/qmldesigner/components/edit3d/edit3dview.cpp | 58 | ||||
-rw-r--r-- | src/plugins/qmldesigner/components/edit3d/edit3dview.h | 22 | ||||
-rw-r--r-- | src/plugins/qmldesigner/components/edit3d/edit3dwidget.cpp | 57 | ||||
-rw-r--r-- | src/plugins/qmldesigner/components/edit3d/edit3dwidget.h | 8 | ||||
-rw-r--r-- | src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp | 4 | ||||
-rw-r--r-- | src/plugins/qmldesigner/dynamiclicensecheck.h | 14 | ||||
-rw-r--r-- | src/plugins/texteditor/fontsettingspage.cpp | 28 | ||||
-rw-r--r-- | src/tools/sdktool/main.cpp | 1 |
13 files changed, 168 insertions, 33 deletions
diff --git a/src/libs/qmleditorwidgets/easingpane/easinggraph.h b/src/libs/qmleditorwidgets/easingpane/easinggraph.h index a2a49f01472..3603a8a3ac5 100644 --- a/src/libs/qmleditorwidgets/easingpane/easinggraph.h +++ b/src/libs/qmleditorwidgets/easingpane/easinggraph.h @@ -9,8 +9,6 @@ QT_BEGIN_NAMESPACE -QT_MODULE(Declarative) - class EasingGraph: public QWidget { diff --git a/src/libs/utils/networkaccessmanager.cpp b/src/libs/utils/networkaccessmanager.cpp index 3bc153a7b1c..90408b59924 100644 --- a/src/libs/utils/networkaccessmanager.cpp +++ b/src/libs/utils/networkaccessmanager.cpp @@ -4,6 +4,7 @@ #include "networkaccessmanager.h" #include <QCoreApplication> +#include <QLibraryInfo> #include <QLocale> #include <QNetworkReply> diff --git a/src/plugins/coreplugin/corejsextensions.cpp b/src/plugins/coreplugin/corejsextensions.cpp index eb8cb0787bc..68a44dd7076 100644 --- a/src/plugins/coreplugin/corejsextensions.cpp +++ b/src/plugins/coreplugin/corejsextensions.cpp @@ -11,6 +11,7 @@ #include <QDir> #include <QDirIterator> +#include <QLibraryInfo> #include <QTemporaryFile> #include <QVariant> #include <QVersionNumber> diff --git a/src/plugins/coreplugin/icore.cpp b/src/plugins/coreplugin/icore.cpp index b51276aec7f..152ae1e63e7 100644 --- a/src/plugins/coreplugin/icore.cpp +++ b/src/plugins/coreplugin/icore.cpp @@ -18,6 +18,7 @@ #include <QApplication> #include <QDebug> +#include <QLibraryInfo> #include <QStandardPaths> #include <QSysInfo> diff --git a/src/plugins/debugger/debuggerdialogs.cpp b/src/plugins/debugger/debuggerdialogs.cpp index da0e6fd20fd..3b8a5ae4804 100644 --- a/src/plugins/debugger/debuggerdialogs.cpp +++ b/src/plugins/debugger/debuggerdialogs.cpp @@ -76,10 +76,6 @@ public: QDialogButtonBox *buttonBox; }; -} // Debugger::Internal - -namespace Debugger::Internal { - /////////////////////////////////////////////////////////////////////// // // StartApplicationParameters diff --git a/src/plugins/qmldesigner/components/edit3d/edit3dview.cpp b/src/plugins/qmldesigner/components/edit3d/edit3dview.cpp index 045112f4e5b..35e7c6334e7 100644 --- a/src/plugins/qmldesigner/components/edit3d/edit3dview.cpp +++ b/src/plugins/qmldesigner/components/edit3d/edit3dview.cpp @@ -1,13 +1,16 @@ // Copyright (C) 2020 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0 -#include "designmodewidget.h" #include "edit3dactions.h" #include "edit3dcanvas.h" #include "edit3dview.h" #include "edit3dwidget.h" #include "edit3dviewconfig.h" #include "backgroundcolorselection.h" +#include "metainfo.h" +#include "seekerslider.h" +#include "view3dactioncommand.h" +#include "nodehints.h" #include <auxiliarydataproperties.h> #include <coreplugin/icore.h> @@ -24,7 +27,6 @@ #include <utils/qtcassert.h> #include <utils/utilsicons.h> -#include <QDebug> #include <QToolButton> namespace QmlDesigner { @@ -32,11 +34,13 @@ namespace QmlDesigner { Edit3DView::Edit3DView(QObject *parent) : AbstractView(parent) { + m_compressionTimer.setInterval(1000); + m_compressionTimer.setSingleShot(true); + connect(&m_compressionTimer, &QTimer::timeout, this, &Edit3DView::handleEntriesChanged); } Edit3DView::~Edit3DView() -{ -} +{} void Edit3DView::createEdit3DWidget() { @@ -185,6 +189,52 @@ void Edit3DView::modelAttached(Model *model) } edit3DWidget()->canvas()->busyIndicator()->show(); + + connect(model->metaInfo().itemLibraryInfo(), &ItemLibraryInfo::entriesChanged, this, + &Edit3DView::onEntriesChanged, Qt::UniqueConnection); +} + +void Edit3DView::onEntriesChanged() +{ + m_compressionTimer.start(); +} + +void Edit3DView::handleEntriesChanged() +{ + if (!model()) + return; + + const QString cameras = tr("Cameras"); + const QString lights = tr("Lights"); + const QString primitives = tr("Primitives"); + const QString importedModels = tr("Imported Models"); + const QStringList keys {cameras, lights, primitives, importedModels}; // used to maintain order + + QHash<QString, QList<ItemLibraryEntry>> entriesMap { + {cameras, {}}, + {lights, {}}, + {primitives, {}}, + {importedModels, {}} + }; + + const QList<ItemLibraryEntry> itemLibEntries = model()->metaInfo().itemLibraryInfo()->entries(); + for (const ItemLibraryEntry &entry : itemLibEntries) { + if (entry.typeName() == "QtQuick3D.Model") { + entriesMap[primitives].append(entry); + } else if (entry.typeName() == "QtQuick3D.DirectionalLight" + || entry.typeName() == "QtQuick3D.PointLight" + || entry.typeName() == "QtQuick3D.SpotLight") { + entriesMap[lights].append(entry); + } else if (entry.typeName() == "QtQuick3D.OrthographicCamera" + || entry.typeName() == "QtQuick3D.PerspectiveCamera") { + entriesMap[cameras].append(entry); + } else if (entry.typeName().startsWith("Quick3DAssets.") + && NodeHints::fromItemLibraryEntry(entry).canBeDroppedInView3D()) { + entriesMap[importedModels].append(entry); + } + } + + m_edit3DWidget->updateCreateSubMenu(keys, entriesMap); } void Edit3DView::modelAboutToBeDetached(Model *model) diff --git a/src/plugins/qmldesigner/components/edit3d/edit3dview.h b/src/plugins/qmldesigner/components/edit3d/edit3dview.h index 689653674e0..6c78c13ff26 100644 --- a/src/plugins/qmldesigner/components/edit3d/edit3dview.h +++ b/src/plugins/qmldesigner/components/edit3d/edit3dview.h @@ -2,19 +2,17 @@ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0 #pragma once -#include "view3dactioncommand.h" -#include "seekerslider.h" - +#include <abstractview.h> #include <modelcache.h> -#include <abstractview.h> -#include <QtGui/qevent.h> -#include <QtGui/qimage.h> -#include <QtCore/qvector.h> -#include <QtCore/qvariant.h> -#include <QtCore/qsize.h> +#include <QImage> +#include <QSize> +#include <QTimer> +#include <QVariant> +#include <QVector> QT_BEGIN_NAMESPACE +class QInputEvent; QT_END_NAMESPACE namespace QmlDesigner { @@ -22,6 +20,7 @@ namespace QmlDesigner { class Edit3DWidget; class Edit3DAction; class Edit3DCameraAction; +class SeekerSlider; class QMLDESIGNERCORE_EXPORT Edit3DView : public AbstractView { @@ -60,6 +59,9 @@ public: void startContextMenu(const QPoint &pos); void dropMaterial(const ModelNode &matNode, const QPointF &pos); +private slots: + void onEntriesChanged(); + private: enum class ModelAtPosReqType { MaterialDrop, @@ -69,6 +71,7 @@ private: void createEdit3DWidget(); void checkImports(); + void handleEntriesChanged(); Edit3DAction *createSelectBackgrounColorAction(); Edit3DAction *createGridColorSelectionAction(); @@ -107,6 +110,7 @@ private: ModelNode m_droppedMaterial; ModelAtPosReqType m_modelAtPosReqType; QPoint m_contextMenuPos; + QTimer m_compressionTimer; }; } // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/components/edit3d/edit3dwidget.cpp b/src/plugins/qmldesigner/components/edit3d/edit3dwidget.cpp index a88cff6cd96..dc5f342d38e 100644 --- a/src/plugins/qmldesigner/components/edit3d/edit3dwidget.cpp +++ b/src/plugins/qmldesigner/components/edit3d/edit3dwidget.cpp @@ -1,7 +1,6 @@ // Copyright (C) 2020 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0 -#include "designersettings.h" #include "edit3dactions.h" #include "edit3dcanvas.h" #include "edit3dview.h" @@ -20,6 +19,7 @@ #include <coreplugin/actionmanager/command.h> #include <coreplugin/icore.h> #include <toolbox.h> +#include <utils/qtcassert.h> #include <utils/utilsicons.h> #include <QActionGroup> @@ -171,6 +171,61 @@ void Edit3DWidget::createContextMenu() }); } +// Called by the view to update the "create" sub-menu when the Quick3D entries are ready. +void Edit3DWidget::updateCreateSubMenu(const QStringList &keys, + const QHash<QString, QList<ItemLibraryEntry>> &entriesMap) +{ + if (!m_contextMenu) + return; + + if (m_createSubMenu) { + m_contextMenu->removeAction(m_createSubMenu->menuAction()); + m_createSubMenu.clear(); + } + + m_nameToEntry.clear(); + m_createSubMenu = m_contextMenu->addMenu(tr("Create")); + + for (const QString &cat : keys) { + QList<ItemLibraryEntry> entries = entriesMap.value(cat); + if (entries.isEmpty()) + continue; + + QMenu *catMenu = m_createSubMenu->addMenu(cat); + + std::sort(entries.begin(), entries.end(), [](const ItemLibraryEntry &a, const ItemLibraryEntry &b) { + return a.name() < b.name(); + }); + + for (const ItemLibraryEntry &entry : std::as_const(entries)) { + QAction *action = catMenu->addAction(entry.name(), this, &Edit3DWidget::onCreateAction); + action->setData(entry.name()); + m_nameToEntry.insert(entry.name(), entry); + } + } +} + +// Action triggered from the "create" sub-menu +void Edit3DWidget::onCreateAction() +{ + // QAction *action = qobject_cast<QAction *>(sender()); + // if (!action) + // return; + + // m_view->executeInTransaction(__FUNCTION__, [&] { + // int activeScene = m_view->rootModelNode().auxiliaryData("active3dScene@Internal").toInt(); + + // auto modelNode = QmlVisualNode::createQml3DNode(m_view, m_nameToEntry.value(action->data().toString()), + // activeScene).modelNode(); + // QTC_ASSERT(modelNode.isValid(), return); + // m_view->setSelectedModelNode(modelNode); + + // // if added node is a Model, assign it a material + // if (modelNode.isSubclassOf("QtQuick3D.Model")) + // m_view->assignMaterialTo3dModel(modelNode); + // }); +} + void Edit3DWidget::contextHelp(const Core::IContext::HelpCallback &callback) const { if (m_view) diff --git a/src/plugins/qmldesigner/components/edit3d/edit3dwidget.h b/src/plugins/qmldesigner/components/edit3d/edit3dwidget.h index d258d652cc2..d36e9e3db32 100644 --- a/src/plugins/qmldesigner/components/edit3d/edit3dwidget.h +++ b/src/plugins/qmldesigner/components/edit3d/edit3dwidget.h @@ -8,6 +8,7 @@ #include <QWidget> #include <coreplugin/icontext.h> +#include "itemlibraryinfo.h" #include <modelnode.h> namespace QmlDesigner { @@ -35,6 +36,11 @@ public: void showBackgroundColorMenu(bool show, const QPoint &pos); void showContextMenu(const QPoint &pos, const ModelNode &modelNode); + void updateCreateSubMenu(const QStringList &keys, + const QHash<QString, QList<ItemLibraryEntry>> &entriesMap); + +private slots: + void onCreateAction(); protected: void dragEnterEvent(QDragEnterEvent *dragEnterEvent) override; @@ -55,7 +61,9 @@ private: QPointer<QMenu> m_contextMenu; QPointer<QAction> m_editMaterialAction; QPointer<QAction> m_deleteAction; + QPointer<QMenu> m_createSubMenu; ModelNode m_contextMenuTarget; + QHash<QString, ItemLibraryEntry> m_nameToEntry; }; } // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp b/src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp index 3eaba177f39..77825bf1099 100644 --- a/src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp +++ b/src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp @@ -625,12 +625,12 @@ void MaterialEditorView::initPreviewData() // QString env = rootModelNode().auxiliaryData("matPrevEnv").toString(); // QString envValue = rootModelNode().auxiliaryData("matPrevEnvValue").toString(); // QString modelStr = rootModelNode().auxiliaryData("matPrevModel").toString(); - // if (!envValue.isEmpty() && env != "Color" && env != "Default") { + // if (!envValue.isEmpty() && env != "Color" && env != "Basic") { // env += '='; // env += envValue; // } // if (env.isEmpty()) - // env = "Default"; + // env = "SkyBox=preview_studio"; // if (modelStr.isEmpty()) // modelStr = "#Sphere"; // m_initializingPreviewData = true; diff --git a/src/plugins/qmldesigner/dynamiclicensecheck.h b/src/plugins/qmldesigner/dynamiclicensecheck.h index dab31bbad5c..ebb7c6cf6f4 100644 --- a/src/plugins/qmldesigner/dynamiclicensecheck.h +++ b/src/plugins/qmldesigner/dynamiclicensecheck.h @@ -80,4 +80,18 @@ inline QString licensee() return {}; } +inline QString licenseeEmail() +{ + if (auto plugin = Internal::licenseCheckerPlugin()) { + QString retVal; + bool success = QMetaObject::invokeMethod(plugin, + "licenseeEmail", + Qt::DirectConnection, + Q_RETURN_ARG(QString, retVal)); + if (success) + return retVal; + } + return {}; +} + } // namespace Utils diff --git a/src/plugins/texteditor/fontsettingspage.cpp b/src/plugins/texteditor/fontsettingspage.cpp index 9cb70c49e71..7f863ebb18b 100644 --- a/src/plugins/texteditor/fontsettingspage.cpp +++ b/src/plugins/texteditor/fontsettingspage.cpp @@ -591,9 +591,6 @@ void FontSettingsPageWidget::importScheme() if (importedFile.isEmpty()) return; - FilePath fileName = createColorSchemeFileName(importedFile.baseName() + "%1." - + importedFile.suffix()); - // Ask about saving any existing modifications maybeSaveColorScheme(); @@ -604,16 +601,25 @@ void FontSettingsPageWidget::importScheme() dialog->setLabelText(tr("Color scheme name:")); dialog->setTextValue(importedFile.baseName()); - connect(dialog, &QInputDialog::textValueSelected, this, [this, fileName](const QString &name) { - m_value.setColorScheme(m_schemeEdit->colorScheme()); + connect(dialog, + &QInputDialog::textValueSelected, + this, + [this, importedFile](const QString &name) { + const Utils::FilePath saveFileName = createColorSchemeFileName( + importedFile.baseName() + "%1." + importedFile.suffix()); + + ColorScheme scheme; + if (scheme.load(importedFile.path())) { + scheme.setDisplayName(name); + scheme.save(saveFileName.path(), Core::ICore::dialogParent()); + m_value.loadColorScheme(saveFileName.path(), m_descriptions); + } else { + qWarning() << "Failed to import color scheme:" << importedFile; + } - ColorScheme scheme = m_value.colorScheme(); - scheme.setDisplayName(name); - if (scheme.save(fileName.path(), Core::ICore::dialogParent())) - m_value.setColorSchemeFileName(fileName.path()); + refreshColorSchemeList(); + }); - refreshColorSchemeList(); - }); dialog->open(); } diff --git a/src/tools/sdktool/main.cpp b/src/tools/sdktool/main.cpp index 086be5b8cec..05e02e94766 100644 --- a/src/tools/sdktool/main.cpp +++ b/src/tools/sdktool/main.cpp @@ -30,6 +30,7 @@ #include <iostream> #include <QCoreApplication> +#include <QLibraryInfo> #include <QStringList> void printHelp(const Operation *op) |