aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2022-08-31 11:03:13 +0200
committerEike Ziller <eike.ziller@qt.io>2022-08-31 11:03:13 +0200
commita2f21d40f549cb4867c54e8252201684135ec1f3 (patch)
tree8ee047dee781160f7fc49c9d74ae2c82eb7c8f56 /src
parentad4fed86caab1f68492912244c01fc6b73378929 (diff)
parent60a045299d0c161051f0349be9818f80d7fc7cfd (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.h2
-rw-r--r--src/libs/utils/networkaccessmanager.cpp1
-rw-r--r--src/plugins/coreplugin/corejsextensions.cpp1
-rw-r--r--src/plugins/coreplugin/icore.cpp1
-rw-r--r--src/plugins/debugger/debuggerdialogs.cpp4
-rw-r--r--src/plugins/qmldesigner/components/edit3d/edit3dview.cpp58
-rw-r--r--src/plugins/qmldesigner/components/edit3d/edit3dview.h22
-rw-r--r--src/plugins/qmldesigner/components/edit3d/edit3dwidget.cpp57
-rw-r--r--src/plugins/qmldesigner/components/edit3d/edit3dwidget.h8
-rw-r--r--src/plugins/qmldesigner/components/materialeditor/materialeditorview.cpp4
-rw-r--r--src/plugins/qmldesigner/dynamiclicensecheck.h14
-rw-r--r--src/plugins/texteditor/fontsettingspage.cpp28
-rw-r--r--src/tools/sdktool/main.cpp1
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)