From 2090d043db2991af964a546cebf39c996b7236c5 Mon Sep 17 00:00:00 2001 From: Mats Honkamaa Date: Wed, 27 Apr 2022 10:45:30 +0300 Subject: [PATCH 01/16] Doc: Update import 3D assets docs - Update screenshot - Remove .blend from supported formats - Update info about the Import asset dialog - Some other updates to content and structure Task-number: QDS-6670 Change-Id: Ia123c5c5b5648a356e9608d923ba1e57c40c8832 Reviewed-by: Leena Miettinen --- .../images/studio-import-3d.png | Bin 26618 -> 36903 bytes .../qtdesignstudio-3d-importing.qdoc | 91 +++++++++--------- 2 files changed, 43 insertions(+), 48 deletions(-) diff --git a/doc/qtdesignstudio/images/studio-import-3d.png b/doc/qtdesignstudio/images/studio-import-3d.png index 6f960a875a957506c07944c20c0e3e141017307d..106bba5bb57a7abceb149ae0b22979894bb9921a 100644 GIT binary patch literal 36903 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 i#G5S8HY}h2_Rgo3)z0))M=&rjFnGH9xvX literal 26618 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 \uicontrol {My 3D Components}. - - Alternatively, you can initiate the import dialog from the - \uicontrol Assets view: - - \list 1 - \li In the \l{Design Views}{Design mode}, select - \uicontrol Assets > \inlineimage icons/plus.png - . - \li Select \uicontrol {3D Assets} in the dropdown menu to filter 3D - graphics files. - \li Select a file to import, and then select \uicontrol Open. - \li In the \uicontrol {3D Scene Options} tab, select options for - importing the file. - \li Select \uicontrol Import to import the 3D graphics file. - \li When the import is done, select \uicontrol Close. - \endlist - - The 3D asset now appears in \uicontrol Components > - \uicontrol {My 3D Components}. You can add it to the scene by - drag-and-dropping it to \uicontrol {3D Editor}. - During the import, you can optimize the files for \QDS. You can remove components from meshes to reduce the cache size, find and fix issues in the files, optimize graphs and meshes, and so on. The available options @@ -88,7 +45,45 @@ or with other 3D graphics tools. See the tooltips in the options dialog for more information about a particular option. - The 3D asset you added to the project now appears in - \uicontrol Components > \uicontrol {My 3D Components}. You can add it to - your UI by dragging-and-dropping it to \l {3D Editor}. + For more information about exporting 3D graphics, see + \l{Exporting 3D Assets}. + + \image studio-import-3d.png + + \section1 Importing a 3D Asset + + To import a 3D asset to a \QDS project: + + \list 1 + \li Drag-and-drop an external file containing the 3D asset from, + for example, File Explorer (on Windows), to \uicontrol {3D Editor}. + \li In the \uicontrol {3D Scene Options} tab, select options for + importing the file. + \note To see all options, select \uicontrol{Show All Options}. + \li Select \uicontrol Import to import the 3D asset. + \endlist + + The 3D asset is now added to your scene, and you can see it in the + \uicontrol {3D Editor} view and in \uicontrol Navigator. It is also + available in \uicontrol Components > \uicontrol {My 3D Components}. + + Alternatively, you can initiate the import dialog from the + \uicontrol Assets view: + + \list 1 + \li Select \l Assets > \inlineimage icons/plus.png + . + \li Select \uicontrol {3D Assets} in the dropdown menu to filter 3D + graphics files. + \li Select a file to import, and then select \uicontrol Open. + \li In the \uicontrol {3D Scene Options} tab, select options for + importing the file. + \note To see all options, select \uicontrol{Show All Options}. + \li Select \uicontrol Import to import the 3D asset. + \endlist + + The 3D asset now appears in \uicontrol Components > + \uicontrol {My 3D Components}. You can add it to the scene by + drag-and-dropping it to \uicontrol {3D Editor}. + */ From c892157862dc5ca05250fb257d2dcd29512e50f1 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Thu, 28 Apr 2022 09:20:42 +0200 Subject: [PATCH 02/16] Bump version to 7.0.2 Change-Id: Ib503b94b747698ab9ba9650c9eb0a3e44d6ca968 Reviewed-by: Eike Ziller --- cmake/QtCreatorIDEBranding.cmake | 4 ++-- qbs/modules/qtc/qtc.qbs | 4 ++-- qtcreator_ide_branding.pri | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/cmake/QtCreatorIDEBranding.cmake b/cmake/QtCreatorIDEBranding.cmake index ad9c58146ab..2efb4fb1ae1 100644 --- a/cmake/QtCreatorIDEBranding.cmake +++ b/cmake/QtCreatorIDEBranding.cmake @@ -1,6 +1,6 @@ -set(IDE_VERSION "7.0.1") # The IDE version. +set(IDE_VERSION "7.0.2") # The IDE version. set(IDE_VERSION_COMPAT "7.0.0") # The IDE Compatibility version. -set(IDE_VERSION_DISPLAY "7.0.1") # The IDE display version. +set(IDE_VERSION_DISPLAY "7.0.2") # The IDE display version. set(IDE_COPYRIGHT_YEAR "2022") # The IDE current copyright year. set(IDE_SETTINGSVARIANT "QtProject") # The IDE settings variation. diff --git a/qbs/modules/qtc/qtc.qbs b/qbs/modules/qtc/qtc.qbs index e967c702622..dd881514e4b 100644 --- a/qbs/modules/qtc/qtc.qbs +++ b/qbs/modules/qtc/qtc.qbs @@ -3,10 +3,10 @@ import qbs.Environment import qbs.FileInfo Module { - property string qtcreator_display_version: '7.0.1' + property string qtcreator_display_version: '7.0.2' property string ide_version_major: '7' property string ide_version_minor: '0' - property string ide_version_release: '1' + property string ide_version_release: '2' property string qtcreator_version: ide_version_major + '.' + ide_version_minor + '.' + ide_version_release diff --git a/qtcreator_ide_branding.pri b/qtcreator_ide_branding.pri index fc868587333..ff54a16053e 100644 --- a/qtcreator_ide_branding.pri +++ b/qtcreator_ide_branding.pri @@ -1,6 +1,6 @@ -QTCREATOR_VERSION = 7.0.1 +QTCREATOR_VERSION = 7.0.2 QTCREATOR_COMPAT_VERSION = 7.0.0 -QTCREATOR_DISPLAY_VERSION = 7.0.1 +QTCREATOR_DISPLAY_VERSION = 7.0.2 QTCREATOR_COPYRIGHT_YEAR = 2022 IDE_DISPLAY_NAME = Qt Creator From a984e9c097fe950acbfe1e960783634363182158 Mon Sep 17 00:00:00 2001 From: Mahmoud Badri Date: Thu, 28 Apr 2022 10:23:02 +0300 Subject: [PATCH 03/16] QmlDesigner: Fix possible crash on exit Crash log: https://sentry.io/organizations/the-qt-company-00/issues/3227370374/?project=5421708 Change-Id: I73b574d565cc1f66ddec1fedcb96e3acd7c1ad72 Reviewed-by: Tim Jenssen --- .../components/edit3d/edit3dview.cpp | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/plugins/qmldesigner/components/edit3d/edit3dview.cpp b/src/plugins/qmldesigner/components/edit3d/edit3dview.cpp index 31056c0ed29..7206171dc7c 100644 --- a/src/plugins/qmldesigner/components/edit3d/edit3dview.cpp +++ b/src/plugins/qmldesigner/components/edit3d/edit3dview.cpp @@ -23,23 +23,24 @@ ** ****************************************************************************/ +#include "designmodewidget.h" +#include "edit3dactions.h" +#include "edit3dcanvas.h" #include "edit3dview.h" #include "edit3dwidget.h" -#include "edit3dcanvas.h" -#include "edit3dactions.h" -#include "designmodewidget.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include #include #include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include #include #include @@ -216,6 +217,8 @@ void Edit3DView::modelAttached(Model *model) void Edit3DView::modelAboutToBeDetached(Model *model) { + QTC_ASSERT(edit3DWidget()->canvas(), return); + // Hide the canvas when model is detached (i.e. changing documents) m_canvasCache.insert(model, edit3DWidget()->canvas()->renderImage()); edit3DWidget()->showCanvas(false); From 1811b381ebe195262a14bda86852aca055b99245 Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Wed, 27 Apr 2022 15:09:32 +0200 Subject: [PATCH 04/16] ProjectExplorer: Prevent out of range access on recent projects list ProjectExplorerPlugin::recentProjects() filters out non-existent files. Because files could at any time be removed/renamed, we cannot presume a certain, constant length of the list when calling recentProjects() a second time. Fixes: QTCREATORBUG-27399 Change-Id: I3f09830896b308e251881c855abb552b6022695f Reviewed-by: Reviewed-by: Eike Ziller --- src/plugins/projectexplorer/projectwelcomepage.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/plugins/projectexplorer/projectwelcomepage.cpp b/src/plugins/projectexplorer/projectwelcomepage.cpp index e1adf657ad2..2382103d910 100644 --- a/src/plugins/projectexplorer/projectwelcomepage.cpp +++ b/src/plugins/projectexplorer/projectwelcomepage.cpp @@ -83,7 +83,10 @@ int ProjectModel::rowCount(const QModelIndex &) const QVariant ProjectModel::data(const QModelIndex &index, int role) const { - QPair data = ProjectExplorerPlugin::recentProjects().at(index.row()); + const QList > recentProjects = ProjectExplorerPlugin::recentProjects(); + if (recentProjects.count() <= index.row()) + return {}; + QPair data = recentProjects.at(index.row()); switch (role) { case Qt::DisplayRole: return data.second; From 9195d0dd2c420c1aa3051c60e97211ec082165a7 Mon Sep 17 00:00:00 2001 From: Knud Dollereder Date: Tue, 5 Apr 2022 13:45:30 +0200 Subject: [PATCH 05/16] Improve Animationcurve editor - Prevent insertion of invalid animation ranges that may cause DS hanging - Properly update the toolbar when switching to a different qml file - Show an informative text instead of the empty curve editor when the current file does not contain a timeline - Move the toolbar into its own class - Add an implentation to the "Set Default" button Fixes: QDS-6543 Fixes: QDS-6542 Fixes: QDS-6545 Fixes: QDS-6544 Change-Id: Id6bc1457627ea23a670e74ea335fbb475711b9a6 Reviewed-by: Reviewed-by: Thomas Hartmann --- src/plugins/qmldesigner/CMakeLists.txt | 1 + .../components/curveeditor/curveeditor.cpp | 165 ++++++----------- .../components/curveeditor/curveeditor.h | 6 +- .../curveeditor/curveeditormodel.cpp | 21 ++- .../components/curveeditor/curveeditormodel.h | 4 + .../curveeditor/curveeditortoolbar.cpp | 174 ++++++++++++++++++ .../curveeditor/curveeditortoolbar.h | 81 ++++++++ .../curveeditor/curveeditorview.cpp | 6 +- .../curveeditor/detail/curveitem.cpp | 12 ++ .../components/curveeditor/detail/curveitem.h | 2 + .../curveeditor/detail/graphicsscene.cpp | 5 + .../curveeditor/detail/graphicsscene.h | 2 + .../curveeditor/detail/graphicsview.cpp | 12 ++ .../curveeditor/detail/graphicsview.h | 2 + .../curveeditor/detail/keyframeitem.cpp | 12 ++ .../curveeditor/detail/keyframeitem.h | 2 + .../components/curveeditor/keyframe.cpp | 11 ++ .../components/curveeditor/keyframe.h | 4 + src/plugins/qmldesigner/qmldesignerplugin.qbs | 2 + 19 files changed, 405 insertions(+), 119 deletions(-) create mode 100644 src/plugins/qmldesigner/components/curveeditor/curveeditortoolbar.cpp create mode 100644 src/plugins/qmldesigner/components/curveeditor/curveeditortoolbar.h diff --git a/src/plugins/qmldesigner/CMakeLists.txt b/src/plugins/qmldesigner/CMakeLists.txt index 2a2c2314ba8..733051f3089 100644 --- a/src/plugins/qmldesigner/CMakeLists.txt +++ b/src/plugins/qmldesigner/CMakeLists.txt @@ -526,6 +526,7 @@ extend_qtc_plugin(QmlDesigner curveeditorview.cpp curveeditorview.h animationcurve.cpp animationcurve.h curveeditor.cpp curveeditor.h + curveeditortoolbar.cpp curveeditortoolbar.h curveeditormodel.cpp curveeditormodel.h curveeditorstyle.h curvesegment.cpp curvesegment.h diff --git a/src/plugins/qmldesigner/components/curveeditor/curveeditor.cpp b/src/plugins/qmldesigner/components/curveeditor/curveeditor.cpp index c004055197d..217e0e0eb76 100644 --- a/src/plugins/qmldesigner/components/curveeditor/curveeditor.cpp +++ b/src/plugins/qmldesigner/components/curveeditor/curveeditor.cpp @@ -25,6 +25,7 @@ #include "curveeditor.h" #include "curveeditormodel.h" +#include "curveeditortoolbar.h" #include "detail/curveitem.h" #include "detail/graphicsview.h" #include "detail/treeview.h" @@ -40,9 +41,17 @@ namespace QmlDesigner { CurveEditor::CurveEditor(CurveEditorModel *model, QWidget *parent) : QWidget(parent) + , m_infoText(nullptr) + , m_toolbar(new CurveEditorToolBar(model, this)) , m_tree(new TreeView(model, this)) , m_view(new GraphicsView(model, this)) { + const QString labelText = tr( + "This file does not contain a timeline.

" + "To create an animation, add a timeline by clicking the + button in the \"Timeline\" view." + ); + m_infoText = new QLabel(labelText); + auto *splitter = new QSplitter; splitter->addWidget(m_tree); splitter->addWidget(m_view); @@ -53,17 +62,63 @@ CurveEditor::CurveEditor(CurveEditorModel *model, QWidget *parent) area->setWidgetResizable(true); auto *box = new QVBoxLayout; - box->addWidget(createToolBar(model)); + box->addWidget(m_infoText); + box->addWidget(m_toolbar); box->addWidget(area); setLayout(box); + connect(m_toolbar, &CurveEditorToolBar::defaultClicked, [this]() { + m_view->setDefaultInterpolation(); + }); + + connect(m_toolbar, &CurveEditorToolBar::unifyClicked, [this]() { + m_view->toggleUnified(); + }); + + connect(m_toolbar, &CurveEditorToolBar::interpolationClicked, [this](Keyframe::Interpolation ipol) { + m_view->setInterpolation(ipol); + }); + + connect(m_toolbar, &CurveEditorToolBar::startFrameChanged, [this, model](int frame) { + model->setMinimumTime(frame); + m_view->viewport()->update(); + }); + + connect(m_toolbar, &CurveEditorToolBar::endFrameChanged, [this, model](int frame) { + model->setMaximumTime(frame); + m_view->viewport()->update(); + }); + + connect( + m_toolbar, &CurveEditorToolBar::currentFrameChanged, + model, &CurveEditorModel::commitCurrentFrame); + + connect( + m_view, &GraphicsView::currentFrameChanged, + m_toolbar, &CurveEditorToolBar::setCurrentFrame); + connect(m_tree, &TreeView::treeItemLocked, model, &CurveEditorModel::setLocked); connect(m_tree, &TreeView::treeItemPinned, model, &CurveEditorModel::setPinned); - connect(m_tree->selectionModel(), - &SelectionModel::curvesSelected, - m_view, - &GraphicsView::updateSelection); + connect( + m_tree->selectionModel(), &SelectionModel::curvesSelected, + m_view, &GraphicsView::updateSelection); + + auto updateTimeline = [this, model](bool validTimeline) { + if (validTimeline) { + m_toolbar->updateBoundsSilent(model->minimumTime(), model->maximumTime()); + m_toolbar->show(); + m_tree->show(); + m_view->show(); + m_infoText->hide(); + } else { + m_toolbar->hide(); + m_tree->hide(); + m_view->hide(); + m_infoText->show(); + } + }; + connect(model, &CurveEditorModel::timelineChanged, this, updateTimeline); } bool CurveEditor::dragging() const @@ -98,104 +153,4 @@ void CurveEditor::hideEvent(QHideEvent *event) QWidget::hideEvent(event); } -QToolBar *CurveEditor::createToolBar(CurveEditorModel *model) -{ - auto *bar = new QToolBar; - bar->setFloatable(false); - - QAction *tangentLinearAction = bar->addAction( - QIcon(":/curveeditor/images/tangetToolsLinearIcon.png"), "Linear"); - QAction *tangentStepAction = bar->addAction(QIcon( - ":/curveeditor/images/tangetToolsStepIcon.png"), - "Step"); - QAction *tangentSplineAction = bar->addAction( - QIcon(":/curveeditor/images/tangetToolsSplineIcon.png"), "Spline"); - - QAction *tangentDefaultAction = bar->addAction(tr("Set Default")); - QAction *tangentUnifyAction = bar->addAction(tr("Unify")); - - auto setLinearInterpolation = [this]() { - m_view->setInterpolation(Keyframe::Interpolation::Linear); - }; - auto setStepInterpolation = [this]() { - m_view->setInterpolation(Keyframe::Interpolation::Step); - }; - auto setSplineInterpolation = [this]() { - m_view->setInterpolation(Keyframe::Interpolation::Bezier); - }; - - auto toggleUnifyKeyframe = [this]() { m_view->toggleUnified(); }; - - connect(tangentLinearAction, &QAction::triggered, setLinearInterpolation); - connect(tangentStepAction, &QAction::triggered, setStepInterpolation); - connect(tangentSplineAction, &QAction::triggered, setSplineInterpolation); - connect(tangentUnifyAction, &QAction::triggered, toggleUnifyKeyframe); - - Q_UNUSED(tangentLinearAction); - Q_UNUSED(tangentSplineAction); - Q_UNUSED(tangentStepAction); - Q_UNUSED(tangentDefaultAction); - - auto *durationBox = new QHBoxLayout; - auto *startSpin = new QSpinBox; - auto *endSpin = new QSpinBox; - - startSpin->setRange(std::numeric_limits::lowest(), std::numeric_limits::max()); - startSpin->setValue(model->minimumTime()); - - auto updateStartFrame = [this, model](int frame) { - model->setMinimumTime(frame); - m_view->viewport()->update(); - }; - connect(startSpin, QOverload::of(&QSpinBox::valueChanged), updateStartFrame); - - endSpin->setRange(std::numeric_limits::lowest(), std::numeric_limits::max()); - endSpin->setValue(model->maximumTime()); - - auto updateEndFrame = [this, model](int frame) { - model->setMaximumTime(frame); - m_view->viewport()->update(); - }; - connect(endSpin, QOverload::of(&QSpinBox::valueChanged), updateEndFrame); - - auto setStartSlot = [startSpin](int frame) { startSpin->setValue(frame); }; - connect(model, &CurveEditorModel::commitStartFrame, setStartSlot); - - auto setEndSlot = [endSpin](int frame) { endSpin->setValue(frame); }; - connect(model, &CurveEditorModel::commitEndFrame, setEndSlot); - - durationBox->addWidget(new QLabel(tr("Start Frame"))); - durationBox->addWidget(startSpin); - durationBox->addWidget(new QLabel(tr("End Frame"))); - durationBox->addWidget(endSpin); - - auto *durationWidget = new QWidget; - durationWidget->setLayout(durationBox); - bar->addWidget(durationWidget); - - auto *cfspin = new QSpinBox; - cfspin->setMinimum(0); - cfspin->setMaximum(std::numeric_limits::max()); - - auto intSignal = static_cast(&QSpinBox::valueChanged); - connect(cfspin, intSignal, [model](int val) { emit model->commitCurrentFrame(val); }); - connect(m_view, &GraphicsView::currentFrameChanged, [cfspin](int val, bool notify) { - if (notify) { - cfspin->setValue(val); - } else { - const QSignalBlocker blocker(cfspin); - cfspin->setValue(val); - } - }); - - auto *positionBox = new QHBoxLayout; - positionBox->addWidget(new QLabel(tr("Current Frame"))); - positionBox->addWidget(cfspin); - auto *positionWidget = new QWidget; - positionWidget->setLayout(positionBox); - bar->addWidget(positionWidget); - - return bar; -} - } // End namespace QmlDesigner. diff --git a/src/plugins/qmldesigner/components/curveeditor/curveeditor.h b/src/plugins/qmldesigner/components/curveeditor/curveeditor.h index e297e31a9bc..9d1a6f68f94 100644 --- a/src/plugins/qmldesigner/components/curveeditor/curveeditor.h +++ b/src/plugins/qmldesigner/components/curveeditor/curveeditor.h @@ -27,10 +27,12 @@ #include #include +#include namespace QmlDesigner { class CurveEditorModel; +class CurveEditorToolBar; class GraphicsView; class TreeView; @@ -57,7 +59,9 @@ protected: void hideEvent(QHideEvent *event) override; private: - QToolBar *createToolBar(CurveEditorModel *model); + QLabel *m_infoText; + + CurveEditorToolBar *m_toolbar; TreeView *m_tree; diff --git a/src/plugins/qmldesigner/components/curveeditor/curveeditormodel.cpp b/src/plugins/qmldesigner/components/curveeditor/curveeditormodel.cpp index d357d555f7a..43776718174 100644 --- a/src/plugins/qmldesigner/components/curveeditor/curveeditormodel.cpp +++ b/src/plugins/qmldesigner/components/curveeditor/curveeditormodel.cpp @@ -43,6 +43,7 @@ namespace QmlDesigner { CurveEditorModel::CurveEditorModel(QObject *parent) : TreeModel(parent) + , m_hasTimeline(false) , m_minTime(CurveEditorStyle::defaultTimeMin) , m_maxTime(CurveEditorStyle::defaultTimeMax) {} @@ -98,15 +99,19 @@ CurveEditorStyle CurveEditorModel::style() const void CurveEditorModel::setTimeline(const QmlDesigner::QmlTimeline &timeline) { - m_minTime = timeline.startKeyframe(); - m_maxTime = timeline.endKeyframe(); - std::vector items; - for (auto &&target : timeline.allTargets()) { - if (TreeItem *item = createTopLevelItem(timeline, target)) - items.push_back(item); - } + m_hasTimeline = timeline.isValid(); - reset(items); + if (m_hasTimeline) { + m_minTime = timeline.startKeyframe(); + m_maxTime = timeline.endKeyframe(); + std::vector items; + for (auto &&target : timeline.allTargets()) { + if (TreeItem *item = createTopLevelItem(timeline, target)) + items.push_back(item); + } + reset(items); + } + emit timelineChanged(m_hasTimeline); } void CurveEditorModel::setCurrentFrame(int frame) diff --git a/src/plugins/qmldesigner/components/curveeditor/curveeditormodel.h b/src/plugins/qmldesigner/components/curveeditor/curveeditormodel.h index 71fca7de039..041642aa610 100644 --- a/src/plugins/qmldesigner/components/curveeditor/curveeditormodel.h +++ b/src/plugins/qmldesigner/components/curveeditor/curveeditormodel.h @@ -54,6 +54,8 @@ signals: void commitEndFrame(int frame); + void timelineChanged(bool valid); + void curveChanged(TreeItem *item); public: @@ -92,6 +94,8 @@ private: AnimationCurve createDoubleCurve(const QmlDesigner::QmlTimelineKeyframeGroup &group); + bool m_hasTimeline = false; + double m_minTime = 0.; double m_maxTime = 0.; diff --git a/src/plugins/qmldesigner/components/curveeditor/curveeditortoolbar.cpp b/src/plugins/qmldesigner/components/curveeditor/curveeditortoolbar.cpp new file mode 100644 index 00000000000..b7bbf370511 --- /dev/null +++ b/src/plugins/qmldesigner/components/curveeditor/curveeditortoolbar.cpp @@ -0,0 +1,174 @@ +/**************************************************************************** +** +** Copyright (C) 2022 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Design Tooling +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ + +#include "curveeditortoolbar.h" +#include "curveeditormodel.h" + +#include +#include +#include +#include + +namespace QmlDesigner { + +ValidatableSpinBox::ValidatableSpinBox(std::function validator, QWidget* parent) + : QSpinBox(parent) + , m_validator(validator) +{ } + +QValidator::State ValidatableSpinBox::validate(QString &text, int &pos) const +{ + auto result = QSpinBox::validate(text, pos); + if (result==QValidator::Acceptable) { + if (int val = text.toInt(); m_validator(val)) + return result; + + result = QValidator::Intermediate; + } + return result; +} + + +CurveEditorToolBar::CurveEditorToolBar(CurveEditorModel *model, QWidget* parent) + : QToolBar(parent) + , m_startSpin(nullptr) + , m_endSpin(nullptr) + , m_currentSpin(new QSpinBox) + +{ + setFloatable(false); + + QAction *tangentLinearAction = addAction( + QIcon(":/curveeditor/images/tangetToolsLinearIcon.png"), "Linear"); + QAction *tangentStepAction = addAction( + QIcon(":/curveeditor/images/tangetToolsStepIcon.png"), "Step"); + QAction *tangentSplineAction = addAction( + QIcon(":/curveeditor/images/tangetToolsSplineIcon.png"), "Spline"); + + QAction *tangentDefaultAction = addAction(tr("Set Default")); + QAction *tangentUnifyAction = addAction(tr("Unify")); + + auto setLinearInterpolation = [this]() { + emit interpolationClicked(Keyframe::Interpolation::Linear); + }; + auto setStepInterpolation = [this]() { + emit interpolationClicked(Keyframe::Interpolation::Step); + }; + auto setSplineInterpolation = [this]() { + emit interpolationClicked(Keyframe::Interpolation::Bezier); + }; + auto setDefaultKeyframe = [this]() { + emit defaultClicked(); + }; + auto toggleUnifyKeyframe = [this]() { + emit unifyClicked(); + }; + + connect(tangentLinearAction, &QAction::triggered, setLinearInterpolation); + connect(tangentStepAction, &QAction::triggered, setStepInterpolation); + connect(tangentSplineAction, &QAction::triggered, setSplineInterpolation); + connect(tangentDefaultAction, &QAction::triggered, setDefaultKeyframe); + connect(tangentUnifyAction, &QAction::triggered, toggleUnifyKeyframe); + + auto validateStart = [this](int val) -> bool { + if (m_endSpin==nullptr) + return false; + return m_endSpin->value() > val; + }; + m_startSpin = new ValidatableSpinBox(validateStart); + m_startSpin->setRange(std::numeric_limits::lowest(), std::numeric_limits::max()); + m_startSpin->setValue(model->minimumTime()); + + connect( + m_startSpin, QOverload::of(&QSpinBox::valueChanged), + this, &CurveEditorToolBar::startFrameChanged); + + connect( + model, &CurveEditorModel::commitStartFrame, + [this](int frame) { m_startSpin->setValue(frame); }); + + auto validateEnd = [this](int val) -> bool { + if (m_startSpin==nullptr) + return false; + return m_startSpin->value() < val; + }; + m_endSpin = new ValidatableSpinBox(validateEnd); + m_endSpin->setRange(std::numeric_limits::lowest(), std::numeric_limits::max()); + m_endSpin->setValue(model->maximumTime()); + + connect( + m_endSpin, QOverload::of(&QSpinBox::valueChanged), + this, &CurveEditorToolBar::endFrameChanged); + + connect( + model, &CurveEditorModel::commitEndFrame, + [this](int frame) { m_endSpin->setValue(frame); }); + + m_currentSpin->setMinimum(0); + m_currentSpin->setMaximum(std::numeric_limits::max()); + + connect( + m_currentSpin, QOverload::of(&QSpinBox::valueChanged), + this, &CurveEditorToolBar::currentFrameChanged); + + auto *durationBox = new QHBoxLayout; + durationBox->addWidget(new QLabel(tr("Start Frame"))); + durationBox->addWidget(m_startSpin); + durationBox->addWidget(new QLabel(tr("End Frame"))); + durationBox->addWidget(m_endSpin); + + auto *durationWidget = new QWidget; + durationWidget->setLayout(durationBox); + addWidget(durationWidget); + + auto *positionBox = new QHBoxLayout; + positionBox->addWidget(new QLabel(tr("Current Frame"))); + positionBox->addWidget(m_currentSpin); + + auto *positionWidget = new QWidget; + positionWidget->setLayout(positionBox); + addWidget(positionWidget); +} + +void CurveEditorToolBar::setCurrentFrame(int current, bool notify) +{ + if (notify) { + m_currentSpin->setValue(current); + } else { + QSignalBlocker blocker(m_currentSpin); + m_currentSpin->setValue(current); + } +} + +void CurveEditorToolBar::updateBoundsSilent(int start, int end) +{ + QSignalBlocker startBlocker(m_startSpin); + m_startSpin->setValue(start); + + QSignalBlocker endBlocker(m_endSpin); + m_endSpin->setValue(end); +} + +} // End namespace QmlDesigner. diff --git a/src/plugins/qmldesigner/components/curveeditor/curveeditortoolbar.h b/src/plugins/qmldesigner/components/curveeditor/curveeditortoolbar.h new file mode 100644 index 00000000000..25271245c6e --- /dev/null +++ b/src/plugins/qmldesigner/components/curveeditor/curveeditortoolbar.h @@ -0,0 +1,81 @@ +/**************************************************************************** +** +** Copyright (C) 2022 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Design Tooling +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ + +#pragma once + +#include +#include +#include +#include + +#include "keyframe.h" + +namespace QmlDesigner { + +class CurveEditorModel; + +class ValidatableSpinBox : public QSpinBox +{ + Q_OBJECT +public: + ValidatableSpinBox(std::function validator, QWidget* parent=nullptr); +protected: + QValidator::State validate(QString &text, int &pos) const override; +private: + std::function m_validator; +}; + + +class CurveEditorToolBar : public QToolBar +{ + Q_OBJECT + +signals: + void defaultClicked(); + + void unifyClicked(); + + void interpolationClicked(Keyframe::Interpolation interpol); + + void startFrameChanged(int start); + + void endFrameChanged(int end); + + void currentFrameChanged(int current); + +public: + CurveEditorToolBar(CurveEditorModel *model, QWidget* parent = nullptr); + + void setCurrentFrame(int current, bool notify); + + void updateBoundsSilent(int start, int end); + +private: + ValidatableSpinBox *m_startSpin; + ValidatableSpinBox *m_endSpin; + QSpinBox *m_currentSpin; +}; + +} // End namespace QmlDesigner. diff --git a/src/plugins/qmldesigner/components/curveeditor/curveeditorview.cpp b/src/plugins/qmldesigner/components/curveeditor/curveeditorview.cpp index 0c535ec48d7..c449d0e8640 100644 --- a/src/plugins/qmldesigner/components/curveeditor/curveeditorview.cpp +++ b/src/plugins/qmldesigner/components/curveeditor/curveeditorview.cpp @@ -396,11 +396,7 @@ void CurveEditorView::commitEndFrame(int frame) void CurveEditorView::init() { - QmlTimeline timeline = activeTimeline(); - if (timeline.isValid()) { - m_model->setTimeline(timeline); - } - + m_model->setTimeline(activeTimeline()); } } // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/components/curveeditor/detail/curveitem.cpp b/src/plugins/qmldesigner/components/curveeditor/detail/curveitem.cpp index ef8cf9f2f29..0b7ab9d391d 100644 --- a/src/plugins/qmldesigner/components/curveeditor/detail/curveitem.cpp +++ b/src/plugins/qmldesigner/components/curveeditor/detail/curveitem.cpp @@ -457,6 +457,18 @@ void CurveItem::setInterpolation(Keyframe::Interpolation interpolation) emit curveChanged(id(), curve()); } +void CurveItem::setDefaultInterpolation() +{ + if (m_keyframes.empty()) + return; + + for (auto *frame : qAsConst(m_keyframes)) { + if (frame->selected()) + frame->setDefaultInterpolation(); + } + emit curveChanged(id(), curve()); +} + void CurveItem::toggleUnified() { if (m_keyframes.empty()) diff --git a/src/plugins/qmldesigner/components/curveeditor/detail/curveitem.h b/src/plugins/qmldesigner/components/curveeditor/detail/curveitem.h index f6857f7c065..5a2f363df7f 100644 --- a/src/plugins/qmldesigner/components/curveeditor/detail/curveitem.h +++ b/src/plugins/qmldesigner/components/curveeditor/detail/curveitem.h @@ -125,6 +125,8 @@ public: void setInterpolation(Keyframe::Interpolation interpolation); + void setDefaultInterpolation(); + void toggleUnified(); void connect(GraphicsScene *scene); diff --git a/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.cpp b/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.cpp index 9198a4d9e57..9eda7f8934b 100644 --- a/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.cpp +++ b/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.cpp @@ -208,6 +208,11 @@ SelectableItem *GraphicsScene::intersect(const QPointF &pos) const return nullptr; } +void GraphicsScene::setDirty(bool dirty) +{ + m_dirty = dirty; +} + void GraphicsScene::reset() { m_curves.clear(); diff --git a/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.h b/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.h index cd42ffbd4da..2e6bc3b080d 100644 --- a/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.h +++ b/src/plugins/qmldesigner/components/curveeditor/detail/graphicsscene.h @@ -88,6 +88,8 @@ public: SelectableItem *intersect(const QPointF &pos) const; + void setDirty(bool dirty); + void reset(); void deleteSelectedKeyframes(); diff --git a/src/plugins/qmldesigner/components/curveeditor/detail/graphicsview.cpp b/src/plugins/qmldesigner/components/curveeditor/detail/graphicsview.cpp index 89084bc98bf..5b4e6e3cfbc 100644 --- a/src/plugins/qmldesigner/components/curveeditor/detail/graphicsview.cpp +++ b/src/plugins/qmldesigner/components/curveeditor/detail/graphicsview.cpp @@ -334,6 +334,18 @@ void GraphicsView::setInterpolation(Keyframe::Interpolation interpol) viewport()->update(); } +void GraphicsView::setDefaultInterpolation() +{ + const auto selectedCurves = m_scene->selectedCurves(); + for (auto *curve : selectedCurves) + curve->setDefaultInterpolation(); + + m_scene->setDirty(true); + + applyZoom(m_zoomX, m_zoomY); + viewport()->update(); +} + void GraphicsView::toggleUnified() { const auto selectedCurves = m_scene->selectedCurves(); diff --git a/src/plugins/qmldesigner/components/curveeditor/detail/graphicsview.h b/src/plugins/qmldesigner/components/curveeditor/detail/graphicsview.h index 22b474d1bb7..917a8e7e2c4 100644 --- a/src/plugins/qmldesigner/components/curveeditor/detail/graphicsview.h +++ b/src/plugins/qmldesigner/components/curveeditor/detail/graphicsview.h @@ -112,6 +112,8 @@ public: void setInterpolation(Keyframe::Interpolation interpol); + void setDefaultInterpolation(); + void toggleUnified(); protected: diff --git a/src/plugins/qmldesigner/components/curveeditor/detail/keyframeitem.cpp b/src/plugins/qmldesigner/components/curveeditor/detail/keyframeitem.cpp index 025f5eb6eda..ef0a886d523 100644 --- a/src/plugins/qmldesigner/components/curveeditor/detail/keyframeitem.cpp +++ b/src/plugins/qmldesigner/components/curveeditor/detail/keyframeitem.cpp @@ -239,6 +239,18 @@ void KeyframeItem::setKeyframe(const Keyframe &keyframe) setPos(m_transform.map(m_frame.position())); } +void KeyframeItem::setDefaultInterpolation() +{ + if (!m_left || !m_right) + return; + + m_frame.setDefaultInterpolation(); + + setKeyframe(m_frame); + + emit redrawCurve(); +} + void KeyframeItem::toggleUnified() { if (!m_left || !m_right) diff --git a/src/plugins/qmldesigner/components/curveeditor/detail/keyframeitem.h b/src/plugins/qmldesigner/components/curveeditor/detail/keyframeitem.h index c0d33640278..3e566c84b74 100644 --- a/src/plugins/qmldesigner/components/curveeditor/detail/keyframeitem.h +++ b/src/plugins/qmldesigner/components/curveeditor/detail/keyframeitem.h @@ -90,6 +90,8 @@ public: void setKeyframe(const Keyframe &keyframe); + void setDefaultInterpolation(); + void toggleUnified(); void setActivated(bool active, HandleItem::Slot slot); diff --git a/src/plugins/qmldesigner/components/curveeditor/keyframe.cpp b/src/plugins/qmldesigner/components/curveeditor/keyframe.cpp index 02b2adc6366..085c230335c 100644 --- a/src/plugins/qmldesigner/components/curveeditor/keyframe.cpp +++ b/src/plugins/qmldesigner/components/curveeditor/keyframe.cpp @@ -25,6 +25,8 @@ #include "keyframe.h" +#include + #include namespace QmlDesigner { @@ -152,6 +154,15 @@ void Keyframe::setPosition(const QPointF &pos) m_position = pos; } +void Keyframe::setDefaultInterpolation() +{ + auto leftToRight = QLineF(m_leftHandle, m_rightHandle); + leftToRight.translate(m_position - leftToRight.center()); + + m_leftHandle = leftToRight.p1(); + m_rightHandle = leftToRight.p2(); +} + void Keyframe::setUnified(bool unified) { m_unified = unified; diff --git a/src/plugins/qmldesigner/components/curveeditor/keyframe.h b/src/plugins/qmldesigner/components/curveeditor/keyframe.h index d16e7d7a011..fd3c2cb88bc 100644 --- a/src/plugins/qmldesigner/components/curveeditor/keyframe.h +++ b/src/plugins/qmldesigner/components/curveeditor/keyframe.h @@ -28,6 +28,8 @@ #include #include +#include + namespace QmlDesigner { class Keyframe @@ -65,6 +67,8 @@ public: Interpolation interpolation() const; + void setDefaultInterpolation(); + void setUnified(bool unified); void setPosition(const QPointF &pos); diff --git a/src/plugins/qmldesigner/qmldesignerplugin.qbs b/src/plugins/qmldesigner/qmldesignerplugin.qbs index a0427d37809..c8597a2d8a4 100644 --- a/src/plugins/qmldesigner/qmldesignerplugin.qbs +++ b/src/plugins/qmldesigner/qmldesignerplugin.qbs @@ -828,6 +828,8 @@ Project { "curveeditor/curveeditor.qrc", "curveeditor/curveeditormodel.cpp", "curveeditor/curveeditormodel.h", + "curveeditor/curveeditortoolbar.cpp", + "curveeditor/curveeditortoolbar.h", "curveeditor/curveeditorstyle.h", "curveeditor/curvesegment.cpp", "curveeditor/curvesegment.h", From 61008bcd478f332a6472eb9919f056fca53e9eb9 Mon Sep 17 00:00:00 2001 From: Brook Cronin Date: Tue, 26 Apr 2022 14:50:29 +0200 Subject: [PATCH 06/16] Rework QtDS Splash Screen to show telemetry options * clean up Design to a more minimal style * remove some unused components Change-Id: I37af39a1cae6b6f14f769383ac73c00570729f4f Reviewed-by: Thomas Hartmann --- .../qml/splashscreen/ColorOverlayEffect.qml | 36 ++ .../qml/splashscreen/EllipseItem.qml | 201 +++++++++ .../qml/splashscreen/FastBlurEffect.qml | 36 ++ .../qml/splashscreen/MyEllipse.qml | 46 ++ .../qml/splashscreen/PushButton.ui.qml | 117 +++++ .../qml/splashscreen/RectangleItem.qml | 418 ++++++++++++++++++ .../qml/splashscreen/Splash_Image25d.qml | 24 +- .../qml/splashscreen/Welcome_splash.qml | 305 +++++++++---- .../studiowelcome/qml/splashscreen/main.qml | 2 +- 9 files changed, 1079 insertions(+), 106 deletions(-) create mode 100644 src/plugins/studiowelcome/qml/splashscreen/ColorOverlayEffect.qml create mode 100644 src/plugins/studiowelcome/qml/splashscreen/EllipseItem.qml create mode 100644 src/plugins/studiowelcome/qml/splashscreen/FastBlurEffect.qml create mode 100644 src/plugins/studiowelcome/qml/splashscreen/MyEllipse.qml create mode 100644 src/plugins/studiowelcome/qml/splashscreen/PushButton.ui.qml create mode 100644 src/plugins/studiowelcome/qml/splashscreen/RectangleItem.qml diff --git a/src/plugins/studiowelcome/qml/splashscreen/ColorOverlayEffect.qml b/src/plugins/studiowelcome/qml/splashscreen/ColorOverlayEffect.qml new file mode 100644 index 00000000000..6b670051624 --- /dev/null +++ b/src/plugins/studiowelcome/qml/splashscreen/ColorOverlayEffect.qml @@ -0,0 +1,36 @@ +/**************************************************************************** +** +** Copyright (C) 2020 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Quick Designer Components. +** +** $QT_BEGIN_LICENSE:GPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 or (at your option) any later version +** approved by the KDE Free Qt Foundation. The licenses are as published by +** the Free Software Foundation and appearing in the file LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 +import Qt5Compat.GraphicalEffects + +ColorOverlay { + id: colorOverlay + color: "#80fff000" +} diff --git a/src/plugins/studiowelcome/qml/splashscreen/EllipseItem.qml b/src/plugins/studiowelcome/qml/splashscreen/EllipseItem.qml new file mode 100644 index 00000000000..2ce07cab318 --- /dev/null +++ b/src/plugins/studiowelcome/qml/splashscreen/EllipseItem.qml @@ -0,0 +1,201 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Quick Studio Components. +** +** $QT_BEGIN_LICENSE:GPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 or (at your option) any later version +** approved by the KDE Free Qt Foundation. The licenses are as published by +** the Free Software Foundation and appearing in the file LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.10 +import QtQuick.Shapes 1.0 + +/*! + \qmltype EllipseItem + \inqmlmodule QtQuick.Studio.Components + \since QtQuick.Studio.Components 1.0 + \inherits Shape + + \brief A filled ellipse with an optional border. +*/ + +Shape { + id: root + width: 200 + height: 150 + +/*! + The gradient of the rectangle fill color. + + By default, no gradient is enabled and the value is null. In this case, the + fill uses a solid color based on the value of \l fillColor. + + When set, \l fillColor is ignored and filling is done using one of the + \l ShapeGradient subtypes. + + \note The \l Gradient type cannot be used here. Rather, prefer using one of + the advanced subtypes, like \l LinearGradient. +*/ + property alias gradient: path.fillGradient + +/*! + The style of the rectangle border. + + \value ShapePath.SolidLine + A solid line. This is the default value. + \value ShapePath.DashLine + Dashes separated by a few pixels. + The \l dashPattern property specifies the dash pattern. + + \sa Qt::PenStyle +*/ + property alias strokeStyle: path.strokeStyle + +/*! + The width of the border of the rectangle. + + The default value is 4. + + A width of 1 creates a thin line. For no line, use a negative value or a + transparent color. + + \note The width of the rectangle's border does not affect the geometry of + the rectangle itself or its position relative to other items if anchors are + used. + + The border is rendered within the rectangle's boundaries. +*/ + property alias strokeWidth: path.strokeWidth + +/*! + The color used to draw the border of the rectangle. + + When set to \c transparent, no line is drawn. + + The default value is \c red. + + \sa QColor +*/ + property alias strokeColor: path.strokeColor + +/*! + The dash pattern of the rectangle border specified as the dashes and the + gaps between them. + + The dash pattern is specified in units of the pen's width. That is, a dash + with the length 5 and width 10 is 50 pixels long. + + The default value is (4, 2), meaning a dash of 4 * \l strokeWidth pixels + followed by a space of 2 * \l strokeWidth pixels. + + \sa QPen::setDashPattern() +*/ + property alias dashPattern: path.dashPattern + +/*! + The rectangle fill color. + + A gradient for the fill can be specified by using \l gradient. If both a + color and a gradient are specified, the gradient is used. + + When set to \c transparent, no filling occurs. + + The default value is \c white. +*/ + property alias fillColor: path.fillColor + +/*! + The starting point of the dash pattern for the rectangle border. + + The offset is measured in terms of the units used to specify the dash + pattern. For example, a pattern where each stroke is four units long, + followed by a gap of two units, will begin with the stroke when drawn + as a line. However, if the dash offset is set to 4.0, any line drawn + will begin with the gap. Values of the offset up to 4.0 will cause part + of the stroke to be drawn first, and values of the offset between 4.0 and + 6.0 will cause the line to begin with part of the gap. + + The default value is 0. + + \sa QPen::setDashOffset() +*/ + property alias dashOffset: path.dashOffset + + layer.enabled: root.antialiasing + layer.smooth: root.antialiasing + layer.samples: root.antialiasing ? 4 : 0 + +/*! + The border is rendered within the rectangle's boundaries, outside of them, + or on top of them. +*/ + property int borderMode: 0 + + property real borderOffset: { + if (root.borderMode === 0) + return root.strokeWidth * 0.5 + if (root.borderMode === 1) + return 0 + + return -root.strokeWidth * 0.5 + } + + Item { + anchors.fill: parent + anchors.margins: { + if (root.borderMode === 0) + return 0 + if (root.borderMode === 1) + return -root.strokeWidth * 0.5 + + return -root.strokeWidth + } + } + + ShapePath { + id: path + + joinStyle: ShapePath.MiterJoin + strokeWidth: 4 + strokeColor: "red" + startX: root.width * 0.5 + startY: root.borderOffset + + PathArc { + x: path.startX + y: root.height - root.borderOffset + radiusX: root.width * 0.5 - root.borderOffset + radiusY: root.height * 0.5 - root.borderOffset + useLargeArc: true + } + + PathArc { + x: path.startX + y: path.startY + radiusX: root.width * 0.5 - root.borderOffset + radiusY: root.height * 0.5 - root.borderOffset + useLargeArc: true + } + + } +} diff --git a/src/plugins/studiowelcome/qml/splashscreen/FastBlurEffect.qml b/src/plugins/studiowelcome/qml/splashscreen/FastBlurEffect.qml new file mode 100644 index 00000000000..353fd1ddcac --- /dev/null +++ b/src/plugins/studiowelcome/qml/splashscreen/FastBlurEffect.qml @@ -0,0 +1,36 @@ +/**************************************************************************** +** +** Copyright (C) 2020 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Quick Designer Components. +** +** $QT_BEGIN_LICENSE:GPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 or (at your option) any later version +** approved by the KDE Free Qt Foundation. The licenses are as published by +** the Free Software Foundation and appearing in the file LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.8 +import Qt5Compat.GraphicalEffects + +FastBlur { + id: fastBlur + radius: 20 +} diff --git a/src/plugins/studiowelcome/qml/splashscreen/MyEllipse.qml b/src/plugins/studiowelcome/qml/splashscreen/MyEllipse.qml new file mode 100644 index 00000000000..b1195826ba1 --- /dev/null +++ b/src/plugins/studiowelcome/qml/splashscreen/MyEllipse.qml @@ -0,0 +1,46 @@ +/**************************************************************************** +** +** Copyright (C) 2022 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ +import QtQuick 2.15 +import QtQuick.Controls 2.15 +import QtQuick.Layouts 1.15 +import StudioFonts 1.0 +import projectmodel 1.0 +import usagestatistics 1.0 + +EllipseItem { + id: ellipse + width: 529 + height: 391 + opacity: 0.495 + layer.enabled: true + layer.effect: FastBlurEffect { + id: fastBlur + radius: 66 + transparentBorder: true + cached: true + } + fillColor: "#878787" + strokeColor: "#00ff0000" +} diff --git a/src/plugins/studiowelcome/qml/splashscreen/PushButton.ui.qml b/src/plugins/studiowelcome/qml/splashscreen/PushButton.ui.qml new file mode 100644 index 00000000000..968fdb18289 --- /dev/null +++ b/src/plugins/studiowelcome/qml/splashscreen/PushButton.ui.qml @@ -0,0 +1,117 @@ +/**************************************************************************** +** +** Copyright (C) 2022 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ +import QtQuick 2.15 +import QtQuick.Templates 2.15 + +Button { + id: control + + implicitWidth: Math.max( + buttonBackground ? buttonBackground.implicitWidth : 0, + textItem.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max( + buttonBackground ? buttonBackground.implicitHeight : 0, + textItem.implicitHeight + topPadding + bottomPadding) + leftPadding: 4 + rightPadding: 4 + + text: "My Button" + property alias fontpixelSize: textItem.font.pixelSize + property bool forceHover: false + state: "normal" + + background: buttonBackground + Rectangle { + id: buttonBackground + color: "#00000000" + implicitWidth: 100 + implicitHeight: 40 + opacity: enabled ? 1 : 0.3 + radius: 2 + border.color: "#047eff" + anchors.fill: parent + } + + contentItem: textItem + + Text { + id: textItem + text: control.text + font.pixelSize: 18 + + opacity: enabled ? 1.0 : 0.3 + color: "#ffffff" + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + rightPadding: 5 + leftPadding: 5 + } + + states: [ + State { + name: "normal" + when: !control.down && !control.hovered && !control.forceHover + + PropertyChanges { + target: buttonBackground + color: "#323232" + border.color: "#868686" + } + + PropertyChanges { + target: textItem + color: "#ffffff" + } + }, + State { + name: "hover" + when: (control.hovered || control.forceHover) && !control.down + PropertyChanges { + target: textItem + color: "#ffffff" + } + + PropertyChanges { + target: buttonBackground + color: "#474747" + border.color: "#adadad" + } + }, + State { + name: "activeQds" + when: control.down + PropertyChanges { + target: textItem + color: "#111111" + } + + PropertyChanges { + target: buttonBackground + color: "#2e769e" + border.color: "#2e769e" + } + } + ] +} diff --git a/src/plugins/studiowelcome/qml/splashscreen/RectangleItem.qml b/src/plugins/studiowelcome/qml/splashscreen/RectangleItem.qml new file mode 100644 index 00000000000..b2bd1d1ae84 --- /dev/null +++ b/src/plugins/studiowelcome/qml/splashscreen/RectangleItem.qml @@ -0,0 +1,418 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Quick Studio Components. +** +** $QT_BEGIN_LICENSE:GPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 or (at your option) any later version +** approved by the KDE Free Qt Foundation. The licenses are as published by +** the Free Software Foundation and appearing in the file LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.10 +import QtQuick.Shapes 1.0 + +/*! + \qmltype RectangleItem + \inqmlmodule QtQuick.Studio.Components + \since QtQuick.Studio.Components 1.0 + \inherits Shape + + \brief A filled rectangle with an optional border. + + Rectangle items are used to fill areas with solid color or gradients and + to provide a rectangular border. + + Each Rectangle item is painted using either a solid fill color, specified + using the \l fillColor property, or a gradient, defined using one of the + \l ShapeGradient subtypes and set using the \l gradient property. + If both a color and a gradient are specified, the gradient is used. + + An optional border can be added to a rectangle with its own color and + thickness by setting the \l strokeColor and \l strokeWidth properties. + Setting the color to \c transparent creates a border without a fill color. + + Rounded rectangles can be drawn using the \l radius property. The radius + can also be specified separately for each corner. Because this introduces + curved edges to the corners of a rectangle, it may be appropriate to set + the \c antialiasing property that is inherited from \l Item to improve the + appearance of the rectangle. + + \section2 Example Usage + + You can use the Rectangle component in \QDS to create different kinds of + rectangles. + + \image studio-rectangle.png + + The QML code looks as follows: + + \code + RectangleItem { + id: rectangle + gradient: RadialGradient { + focalRadius: 0 + centerY: 38.5 + focalY: 38.5 + centerX: 51.5 + centerRadius: 38.5 + GradientStop { + position: 0 + color: "#ffffff" + } + + GradientStop { + position: 1 + color: "#000000" + } + focalX: 51.5 + } + bottomRightRadius: 0 + topLeftRadius: 0 + strokeColor: "gray" + } + + RectangleItem { + id: rectangle1 + gradient: LinearGradient { + y1: 0 + y2: 77 + x2: 103 + x1: 0 + GradientStop { + position: 0 + color: "#ffffff" + } + + GradientStop { + position: 1 + color: "#000000" + } + } + topRightRadius: 0 + bottomLeftRadius: 0 + strokeColor: "#808080" + } + + RectangleItem { + id: rectangle2 + topLeftRadius: 0 + bottomRightRadius: 0 + fillColor: "#d3d3d3" + strokeColor: "#808080" + } + + RectangleItem { + id: rectangle3 + fillColor: "#000000" + gradient: LinearGradient { + y1: 0 + y2: 77 + x2: 103 + x1: 0 + GradientStop { + position: 0 + color: "#000000" + } + + GradientStop { + position: 1 + color: "#fdf9f9" + } + } + topRightRadius: 0 + bottomLeftRadius: 0 + strokeColor: "#808080" + } + \endcode +*/ + +Shape { + id: root + width: 200 + height: 150 + +/*! + The radius used to draw rounded corners. + + The default value is 10. + + If radius is non-zero, the corners will be rounded, otherwise they will + be sharp. The radius can also be specified separately for each corner by + using the \l bottomLeftRadius, \l bottomRightRadius, \l topLeftRadius, and + \l topRightRadius properties. +*/ + property int radius: 10 + +/*! + The radius of the top left rectangle corner. +*/ + property int topLeftRadius: root.radius + +/*! + The radius of the bottom left rectangle corner. +*/ + property int bottomLeftRadius: root.radius + +/*! + The radius of the top right rectangle corner. +*/ + property int topRightRadius: root.radius + +/*! + The radius of the bottom right rectangle corner. +*/ + property int bottomRightRadius: root.radius + +/*! + The gradient of the rectangle fill color. + + By default, no gradient is enabled and the value is null. In this case, the + fill uses a solid color based on the value of \l fillColor. + + When set, \l fillColor is ignored and filling is done using one of the + \l ShapeGradient subtypes. + + \note The \l Gradient type cannot be used here. Rather, prefer using one of + the advanced subtypes, like \l LinearGradient. +*/ + property alias gradient: path.fillGradient + +/*! + The style of the rectangle border. + + \value ShapePath.SolidLine + A solid line. This is the default value. + \value ShapePath.DashLine + Dashes separated by a few pixels. + The \l dashPattern property specifies the dash pattern. + + \sa Qt::PenStyle +*/ + property alias strokeStyle: path.strokeStyle + +/*! + The width of the border of the rectangle. + + The default value is 4. + + A width of 1 creates a thin line. For no line, use a negative value or a + transparent color. + + \note The width of the rectangle's border does not affect the geometry of + the rectangle itself or its position relative to other items if anchors are + used. + + The border is rendered within the rectangle's boundaries. +*/ + property alias strokeWidth: path.strokeWidth + +/*! + The color used to draw the border of the rectangle. + + When set to \c transparent, no line is drawn. + + The default value is \c red. + + \sa QColor +*/ + property alias strokeColor: path.strokeColor + +/*! + The dash pattern of the rectangle border specified as the dashes and the + gaps between them. + + The dash pattern is specified in units of the pen's width. That is, a dash + with the length 5 and width 10 is 50 pixels long. + + The default value is (4, 2), meaning a dash of 4 * \l strokeWidth pixels + followed by a space of 2 * \l strokeWidth pixels. + + \sa QPen::setDashPattern() +*/ + property alias dashPattern: path.dashPattern + + + property alias joinStyle: path.joinStyle + +/*! + The rectangle fill color. + + A gradient for the fill can be specified by using \l gradient. If both a + color and a gradient are specified, the gradient is used. + + When set to \c transparent, no filling occurs. + + The default value is \c white. +*/ + property alias fillColor: path.fillColor + +/*! + The starting point of the dash pattern for the rectangle border. + + The offset is measured in terms of the units used to specify the dash + pattern. For example, a pattern where each stroke is four units long, + followed by a gap of two units, will begin with the stroke when drawn + as a line. However, if the dash offset is set to 4.0, any line drawn + will begin with the gap. Values of the offset up to 4.0 will cause part + of the stroke to be drawn first, and values of the offset between 4.0 and + 6.0 will cause the line to begin with part of the gap. + + The default value is 0. + + \sa QPen::setDashOffset() +*/ + property alias dashOffset: path.dashOffset + +/*! + Whether the border corner is beveled. +*/ + property bool bevel: false + +/*! + The bevel of the top left border corner. + + \sa bevel +*/ + property bool topLeftBevel: root.bevel + +/*! + The bevel of the top right border corner. + + \sa bevel +*/ + property bool topRightBevel: root.bevel + +/*! + The bevel of the bottom right border corner. + + \sa bevel +*/ + property bool bottomRightBevel: root.bevel + +/*! + The bevel of the bottom left border corner. + + \sa bevel +*/ + property bool bottomLeftBevel: root.bevel + + layer.enabled: root.antialiasing + layer.smooth: root.antialiasing + layer.samples: root.antialiasing ? 4 : 0 + +/*! + The border is rendered within the rectangle's boundaries, outside of them, + or on top of them. +*/ + property int borderMode: 0 + + property real borderOffset: { + if (root.borderMode === 0) + return root.strokeWidth * 0.5 + if (root.borderMode === 1) + return 0 + + return -root.strokeWidth * 0.5 + } + + Item { + anchors.fill: parent + anchors.margins: { + if (root.borderMode === 0) + return 0 + if (root.borderMode === 1) + return -root.strokeWidth * 0.5 + + return -root.strokeWidth + } + } + + ShapePath { + id: path + + property int __maxRadius: Math.floor(Math.min(root.width, root.height) / 2) + property int __topLeftRadius: Math.min(root.topLeftRadius, path.__maxRadius) + property int __topRightRadius: Math.min(root.topRightRadius, path.__maxRadius) + property int __bottomRightRadius: Math.min(root.bottomRightRadius, path.__maxRadius) + property int __bottomLeftRadius: Math.min(root.bottomLeftRadius, path.__maxRadius) + + joinStyle: ShapePath.MiterJoin + + strokeWidth: 4 + strokeColor: "red" + + startX: path.__topLeftRadius + root.borderOffset + startY: root.borderOffset + + PathLine { + x: root.width - path.__topRightRadius - root.borderOffset + y: root.borderOffset + } + + PathArc { + x: root.width - root.borderOffset + y: path.__topRightRadius + root.borderOffset + + radiusX: root.topRightBevel ? 50000 : path.__topRightRadius + radiusY: root.topRightBevel ? 50000 : path.__topRightRadius + } + + PathLine { + x: root.width - root.borderOffset + y: root.height - path.__bottomRightRadius - root.borderOffset + } + + PathArc { + x: root.width - path.__bottomRightRadius - root.borderOffset + y: root.height - root.borderOffset + + radiusX: root.bottomRightBevel ? 50000 : path.__bottomRightRadius + radiusY: root.bottomRightBevel ? 50000 : path.__bottomRightRadius + } + + PathLine { + x: path.__bottomLeftRadius + root.borderOffset + y: root.height - root.borderOffset + } + + PathArc { + x: root.borderOffset + y: root.height - path.__bottomLeftRadius - root.borderOffset + + radiusX: root.bottomLeftBevel ? 50000 : path.__bottomLeftRadius + radiusY: root.bottomLeftBevel ? 50000 : path.__bottomLeftRadius + } + + PathLine { + x: root.borderOffset + y: path.__topLeftRadius + root.borderOffset + } + + PathArc { + x: path.__topLeftRadius + root.borderOffset + y: root.borderOffset + + radiusX: root.topLeftBevel ? 50000 : path.__topLeftRadius + radiusY: root.topLeftBevel ? 50000 : path.__topLeftRadius + } + } +} diff --git a/src/plugins/studiowelcome/qml/splashscreen/Splash_Image25d.qml b/src/plugins/studiowelcome/qml/splashscreen/Splash_Image25d.qml index f0ae6c2d8b0..38054b52f9a 100644 --- a/src/plugins/studiowelcome/qml/splashscreen/Splash_Image25d.qml +++ b/src/plugins/studiowelcome/qml/splashscreen/Splash_Image25d.qml @@ -22,7 +22,6 @@ ** be met: https://www.gnu.org/licenses/gpl-3.0.html. ** ****************************************************************************/ - import QtQuick 2.3 Rectangle { @@ -30,6 +29,7 @@ Rectangle { width: 460 height: 480 color: "transparent" + scale: 1.2 layer.enabled: true layer.textureSize: Qt.size(width * 2, height * 2) @@ -40,21 +40,27 @@ Rectangle { anchors.centerIn: parent width: 460 height: 480 + visible: true + anchors.verticalCenterOffset: -1 + anchors.horizontalCenterOffset: 14 + clip: true layer.enabled: true layer.textureSize: Qt.size(width * 2, height * 2) layer.smooth: true Splash_Image2d_png { - x: 25 - y: 15 - antialiasing: false - scale: 1.4 - transform: Matrix4x4 { - matrix: Qt.matrix4x4(1.12606, 0.06371, 0, 0, 0.26038, 0.90592, - 0, 0, 0.00000, 0.0000, 1.0, 0, - 0.00121, -0.00009, 0.0, 1) + x: -22 + y: -33 + width: 461 + height: 427 + layer.enabled: true + layer.effect: ColorOverlayEffect { + id: colorOverlay + visible: true + color: "#41cd52" } + scale: 1 } } } diff --git a/src/plugins/studiowelcome/qml/splashscreen/Welcome_splash.qml b/src/plugins/studiowelcome/qml/splashscreen/Welcome_splash.qml index 24fba429eaa..153436278ee 100644 --- a/src/plugins/studiowelcome/qml/splashscreen/Welcome_splash.qml +++ b/src/plugins/studiowelcome/qml/splashscreen/Welcome_splash.qml @@ -22,23 +22,30 @@ ** be met: https://www.gnu.org/licenses/gpl-3.0.html. ** ****************************************************************************/ - import QtQuick 2.15 import QtQuick.Controls 2.15 import QtQuick.Layouts 1.15 import StudioFonts 1.0 import projectmodel 1.0 import usagestatistics 1.0 +import QtQuick.Shapes 1.0 Rectangle { id: welcome_splash anchors.fill: parent + clip: true gradient: Gradient { orientation: Gradient.Horizontal - GradientStop { position: 0.0; color: "#1d212a" } - GradientStop { position: 1.0; color: "#232c56" } + GradientStop { + position: 0.0 + color: "#1d212a" + } + GradientStop { + position: 1.0 + color: "#232c56" + } } signal goNext @@ -47,52 +54,118 @@ Rectangle { property bool doNotShowAgain: true property bool loadingPlugins: true + + width: 600 + height: 720 + visible: true color: "#1d212a" + Rectangle { + id: qtGreen + color: "#515151" + anchors.fill: parent + anchors.rightMargin: 0 + anchors.bottomMargin: 0 + anchors.leftMargin: 0 + anchors.topMargin: 0 + } + + RectangleItem { + id: background + opacity: 0.825 + anchors.fill: parent + gradient: LinearGradient { + x1: 0 + stops: [ + GradientStop { + position: 0 + color: "#29323c" + }, + GradientStop { + position: 1 + color: "#485563" + } + ] + x2: 640 + y2: 800 + y1: 0 + } + topRightRadius: 0 + anchors.topMargin: 0 + bottomLeftRadius: 0 + borderMode: 1 + fillColor: "#2d2d2d" + bottomRightRadius: 0 + topLeftRadius: 0 + topRightBevel: true + bottomLeftBevel: true + strokeColor: "#00ff0000" + } + + RectangleItem { + id: topBar + opacity: 0.239 + anchors.fill: parent + anchors.bottomMargin: 550 + strokeColor: "#00ff0000" + bottomRightRadius: 0 + topRightBevel: true + fillColor: "#2d2d2d" + bottomLeftRadius: 0 + topRightRadius: 0 + borderMode: 1 + anchors.topMargin: 0 + topLeftRadius: 0 + bottomLeftBevel: true + } + + RectangleItem { + id: bottomBar + opacity: 0.534 + visible: true + anchors.fill: parent + anchors.rightMargin: 0 + anchors.leftMargin: 0 + strokeColor: "#00ff0000" + anchors.bottomMargin: 0 + bottomRightRadius: 0 + bottomLeftRadius: 0 + fillColor: "#2d2d2d" + topRightBevel: true + topRightRadius: 0 + borderMode: 1 + anchors.topMargin: 539 + topLeftRadius: 0 + bottomLeftBevel: true + } + + MyEllipse { + id: ellipse + x: 0 + y: 204 + width: 640 + height: 391 + opacity: 0.05 + } + Image { id: logo anchors.top: parent.top - anchors.left: parent.left anchors.margins: 10 - width: 66 * 2 - height: 50 * 2 smooth: true source: "welcome_windows/logo.png" - } - - - Text { - id: qt_design_studio_text - anchors.top: logo.top - anchors.left: logo.right - anchors.leftMargin: 10 - color: "#25709a" - text: qsTr("Qt Design Studio") - font.pixelSize: 36 - font.family: StudioFonts.titilliumWeb_light - } - - Text { - id: qt_design_studio_version_text - anchors.left: qt_design_studio_text.right - anchors.baseline: qt_design_studio_text.baseline - anchors.leftMargin: 10 - color: "#25709a" - text: usageStatisticModel.version - - font.family: StudioFonts.titilliumWeb_light - font.pixelSize: 36 + anchors.topMargin: 10 + anchors.horizontalCenter: parent.horizontalCenter } Text { id: license_variant_text - anchors.left: qt_design_studio_text.left - anchors.top: qt_design_studio_text.bottom - anchors.leftMargin: 5 + anchors.top: designStudioVersion.bottom color: "#ffffff" font.family: StudioFonts.titilliumWeb_light font.pixelSize: 20 + anchors.horizontalCenter: parent.horizontalCenter text: { if (projectModel.communityVersion) @@ -111,56 +184,94 @@ Rectangle { } } - Dof_Effect { - id: dof_effect - anchors.top: qt_design_studio_text.bottom - anchors.horizontalCenter: welcome_splash.horizontalCenter - width: 442 - height: 480 - maskBlurSamples: 64 - maskBlurRadius: 32 - - Splash_Image25d { - id: animated_artwork - width: dof_effect.width - height: dof_effect.height - clip: true - } + //DOF seems to do nothing, we should probably just remove it. + Splash_Image25d { + id: animated_artwork + width: 628 + height: 377 + anchors.top: license_variant_text.bottom + anchors.horizontalCenterOffset: 0 + scale: 1.1 + anchors.horizontalCenter: parent.horizontalCenter + anchors.topMargin: 50 + clip: true } Text { id: help_us_text anchors.left: welcome_splash.left anchors.right: parent.right - anchors.leftMargin: 10 - anchors.top: dof_effect.bottom - anchors.topMargin: 10 + anchors.leftMargin: 20 + anchors.top: bottomBar.top color: "#FFFFFF" - text: qsTr("Before we let you move on to your wonderful designs, help us make Qt Design Studio even better by letting us know how you're using it.") - + text: qsTr("Before we let you move on to your wonderful designs, help us make Qt Design Studio even better by letting us know how you're using it. To do this, we would like to turn on automatic collection of pseudonymized Analytics and Crash Report Data.") font.family: StudioFonts.titilliumWeb_light - font.pixelSize: 18 + font.pixelSize: 16 + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter wrapMode: Text.WordWrap - anchors.rightMargin: 10 + anchors.topMargin: 25 + anchors.rightMargin: 20 } - ColumnLayout { - id: columnLayout + RowLayout { + anchors.right: parent.right + anchors.bottom: welcome_splash.bottom + anchors.rightMargin: 20 + anchors.bottomMargin: 20 + spacing: 20 + + PushButton { + text: qsTr("Turn Off") + fontpixelSize: 14 + onClicked: { + usageStatisticModel.setTelemetryEnabled(false) + usageStatisticModel.setCrashReporterEnabled(false) + welcome_splash.closeClicked() + } + } + + PushButton { + text: qsTr("Turn On") + forceHover: false + fontpixelSize: 14 + onClicked: { + usageStatisticModel.setTelemetryEnabled(true) + usageStatisticModel.setCrashReporterEnabled(true) + welcome_splash.closeClicked() + } + } + } + + PushButton { + y: 430 + text: qsTr("Learn More") anchors.left: parent.left - anchors.top: help_us_text.bottom - anchors.leftMargin: 10 - anchors.topMargin: 20 - spacing: 3 + anchors.bottom: parent.bottom + fontpixelSize: 14 + anchors.bottomMargin: 20 + anchors.leftMargin: 20 + onClicked: Qt.openUrlExternally( + "https://www.qt.io/terms-conditions/telemetry-privacy") + } + + Row { + y: 690 + visible: false + anchors.horizontalCenter: parent.horizontalCenter + spacing: 20 + layoutDirection: Qt.LeftToRight CheckBox { - visible: false + visible: true id: usageStatisticCheckBox text: qsTr("Send Usage Statistics") checked: usageStatisticModel.usageStatisticEnabled padding: 0 spacing: 12 - onCheckedChanged: usageStatisticModel.setTelemetryEnabled(usageStatisticCheckBox.checked) + onCheckedChanged: usageStatisticModel.setTelemetryEnabled( + usageStatisticCheckBox.checked) contentItem: Text { text: usageStatisticCheckBox.text @@ -171,15 +282,17 @@ Rectangle { } CheckBox { - visible: false + visible: true id: crashReportCheckBox text: qsTr("Send Crash Reports") spacing: 12 checked: usageStatisticModel.crashReporterEnabled onCheckedChanged: { - usageStatisticModel.setCrashReporterEnabled(crashReportCheckBox.checked) - welcome_splash.onPluginInitialized(true, crashReportCheckBox.checked) + usageStatisticModel.setCrashReporterEnabled( + crashReportCheckBox.checked) + welcome_splash.onPluginInitialized(true, + crashReportCheckBox.checked) } contentItem: Text { @@ -192,39 +305,39 @@ Rectangle { } } - RowLayout { - anchors.right: parent.right - anchors.bottom: welcome_splash.bottom - anchors.rightMargin: 10 - anchors.bottomMargin: 10 - spacing: 20 + Row { + id: designStudioVersion + anchors.top: logo.bottom + anchors.topMargin: 5 + spacing: 10 + anchors.horizontalCenter: parent.horizontalCenter - CustomButton { - text: qsTr("Don't send") - onClicked: { - usageStatisticModel.setTelemetryEnabled(false) - usageStatisticModel.setCrashReporterEnabled(false) - welcome_splash.closeClicked() - } + Text { + id: qt_design_studio_text + height: 45 + color: "#ffffff" + text: qsTr("Qt Design Studio") + font.pixelSize: 36 + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + font.family: StudioFonts.titilliumWeb_light } - CustomButton { - text: qsTr("Send analytics data") - onClicked: { - usageStatisticModel.setTelemetryEnabled(true) - usageStatisticModel.setCrashReporterEnabled(true) - welcome_splash.closeClicked() - } + Text { + id: qt_design_studio_version_text + height: 45 + color: "#fbfbfb" + text: usageStatisticModel.version + font.family: StudioFonts.titilliumWeb_light + font.pixelSize: 36 + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter } } - - CustomButton { - y: 430 - text: qsTr("Learn More") - anchors.left: parent.left - anchors.bottom: parent.bottom - anchors.bottomMargin: 10 - anchors.leftMargin: 10 - onClicked: Qt.openUrlExternally("https://www.qt.io/terms-conditions/telemetry-privacy") - } } + +/*##^## +Designer { + D{i:0;height:720;width:600}D{i:22} +} +##^##*/ diff --git a/src/plugins/studiowelcome/qml/splashscreen/main.qml b/src/plugins/studiowelcome/qml/splashscreen/main.qml index 9ada7e7504f..b60e4668cb0 100644 --- a/src/plugins/studiowelcome/qml/splashscreen/main.qml +++ b/src/plugins/studiowelcome/qml/splashscreen/main.qml @@ -27,7 +27,7 @@ import QtQuick 2.0 Item { id: root - width: 720 + width: 600 height: 720 signal closeClicked From 57fbf9bef945711142acbc6d47a9b7fd9f2b0a3f Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Fri, 29 Apr 2022 12:42:06 +0200 Subject: [PATCH 07/16] CppEditor: Consider -include flags from the project again The fallback for build systems without a dedicated property for this got lost somehow in 9c3420120e. Fixes: QTCREATORBUG-27450 Change-Id: I70768220523693b9423a8256cef3d79f4d9dfd58 Reviewed-by: Reviewed-by: Qt CI Bot Reviewed-by: Christian Stenger --- src/plugins/cppeditor/projectpart.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/plugins/cppeditor/projectpart.cpp b/src/plugins/cppeditor/projectpart.cpp index 1d827648fcb..b51c28d64ce 100644 --- a/src/plugins/cppeditor/projectpart.cpp +++ b/src/plugins/cppeditor/projectpart.cpp @@ -129,6 +129,11 @@ static ToolChain::MacroInspectionReport getToolchainMacros( return report; } +static QStringList getIncludedFiles(const RawProjectPart &rpp, const RawProjectPartFlags &flags) +{ + return !rpp.includedFiles.isEmpty() ? rpp.includedFiles : flags.includedFiles; +} + ProjectPart::ProjectPart(const Utils::FilePath &topLevelProject, const RawProjectPart &rpp, const QString &displayName, @@ -148,7 +153,7 @@ ProjectPart::ProjectPart(const Utils::FilePath &topLevelProject, languageExtensions(languageExtensions | flags.languageExtensions), qtVersion(rpp.qtVersion), files(files), - includedFiles(rpp.includedFiles), + includedFiles(getIncludedFiles(rpp, flags)), precompiledHeaders(rpp.precompiledHeaders), headerPaths(getHeaderPaths(rpp, flags, tcInfo)), projectMacros(getProjectMacros(rpp)), From 1eabb6f1855d68afbe48064b4e25bce50fa5418b Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Thu, 28 Apr 2022 15:42:33 +0200 Subject: [PATCH 08/16] Locator: Save history of execute filter Fixes: QTCREATORBUG-27381 Change-Id: I2a053e4e2e978034fcbfc15a6ecfff04a057ffaf Reviewed-by: David Schulz Reviewed-by: Reviewed-by: Qt CI Bot --- .../coreplugin/locator/executefilter.cpp | 21 +++++++++++++++++++ .../coreplugin/locator/executefilter.h | 3 +++ 2 files changed, 24 insertions(+) diff --git a/src/plugins/coreplugin/locator/executefilter.cpp b/src/plugins/coreplugin/locator/executefilter.cpp index 327731f1e26..ba74db177cd 100644 --- a/src/plugins/coreplugin/locator/executefilter.cpp +++ b/src/plugins/coreplugin/locator/executefilter.cpp @@ -27,9 +27,12 @@ #include #include +#include #include #include +#include +#include #include using namespace Core; @@ -89,11 +92,15 @@ void ExecuteFilter::accept(const LocatorFilterEntry &selection, auto p = const_cast(this); const QString value = selection.displayName.trimmed(); + const int index = m_commandHistory.indexOf(value); if (index != -1 && index != 0) p->m_commandHistory.removeAt(index); if (index != 0) p->m_commandHistory.prepend(value); + static const int maxHistory = 100; + while (p->m_commandHistory.size() > maxHistory) + p->m_commandHistory.removeLast(); bool found; QString workingDirectory = Utils::globalMacroExpander()->value("CurrentDocument:Path", &found); @@ -202,6 +209,20 @@ void ExecuteFilter::removeProcess() m_process = nullptr; } +const char historyKey[] = "history"; + +void ExecuteFilter::saveState(QJsonObject &object) const +{ + if (!m_commandHistory.isEmpty()) + object.insert(historyKey, QJsonArray::fromStringList(m_commandHistory)); +} + +void ExecuteFilter::restoreState(const QJsonObject &object) +{ + m_commandHistory = Utils::transform(object.value(historyKey).toArray().toVariantList(), + &QVariant::toString); +} + QString ExecuteFilter::headCommand() const { if (m_taskQueue.isEmpty()) diff --git a/src/plugins/coreplugin/locator/executefilter.h b/src/plugins/coreplugin/locator/executefilter.h index 85c84bbb6eb..7742637cda4 100644 --- a/src/plugins/coreplugin/locator/executefilter.h +++ b/src/plugins/coreplugin/locator/executefilter.h @@ -63,6 +63,9 @@ private: void createProcess(); void removeProcess(); + void saveState(QJsonObject &object) const final; + void restoreState(const QJsonObject &object) final; + QString headCommand() const; QQueue m_taskQueue; From 4661a4946d8a1d781d8f6489b5597e8e7f3cbf51 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Fri, 4 Feb 2022 07:30:06 +0100 Subject: [PATCH 09/16] LanguageClient: select innermost outline widget item Reuse the code that selects the innermost item in the outline combobox also in the widget so the behavior is consistent. (cherry picked from commit b97204ebb6deee0e6b4e4c21ad26891e634f849c) Change-Id: Ie7c32ba4e6c5cbdd608da207e515c737e3bd91e6 Reviewed-by: Eike Ziller --- .../languageclient/languageclientoutline.cpp | 44 ++++++++++--------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/src/plugins/languageclient/languageclientoutline.cpp b/src/plugins/languageclient/languageclientoutline.cpp index 27f4ac263cf..28c2017a707 100644 --- a/src/plugins/languageclient/languageclientoutline.cpp +++ b/src/plugins/languageclient/languageclientoutline.cpp @@ -216,17 +216,30 @@ void LanguageClientOutlineWidget::updateTextCursor(const QModelIndex &proxyIndex m_editor->editorWidget()->gotoLine(pos.line() + 1, pos.character(), true, true); } +static LanguageClientOutlineItem *itemForCursor(const LanguageClientOutlineModel &m_model, + const QTextCursor &cursor) +{ + const Position pos(cursor); + LanguageClientOutlineItem *result = nullptr; + m_model.forAllItems([&](LanguageClientOutlineItem *candidate){ + if (!candidate->contains(pos)) + return; + if (result && candidate->range().contains(result->range())) + return; // skip item if the range is equal or bigger than the previous found range + result = candidate; + }); + return result; +} + void LanguageClientOutlineWidget::updateSelectionInTree(const QTextCursor ¤tCursor) { - QItemSelection selection; - const Position pos(currentCursor); - m_model.forAllItems([&](const LanguageClientOutlineItem *item) { - if (item->contains(pos)) - selection.select(m_model.indexForItem(item), m_model.indexForItem(item)); - }); - m_view.selectionModel()->select(selection, QItemSelectionModel::ClearAndSelect); - if (!selection.isEmpty()) - m_view.scrollTo(selection.indexes().first()); + if (LanguageClientOutlineItem *item = itemForCursor(m_model, currentCursor)) { + const QModelIndex index = m_model.indexForItem(item); + m_view.selectionModel()->select(index, QItemSelectionModel::ClearAndSelect); + m_view.scrollTo(index); + } else { + m_view.clearSelection(); + } } void LanguageClientOutlineWidget::onItemActivated(const QModelIndex &index) @@ -346,17 +359,8 @@ void OutlineComboBox::updateModel(const DocumentUri &resultUri, const DocumentSy void OutlineComboBox::updateEntry() { - const Position pos(m_editorWidget->textCursor()); - LanguageClientOutlineItem *itemForCursor = nullptr; - m_model.forAllItems([&](LanguageClientOutlineItem *candidate){ - if (!candidate->contains(pos)) - return; - if (itemForCursor && candidate->range().contains(itemForCursor->range())) - return; // skip item if the range is equal or bigger than the previous found range - itemForCursor = candidate; - }); - if (itemForCursor) - setCurrentIndex(m_model.indexForItem(itemForCursor)); + if (LanguageClientOutlineItem *item = itemForCursor(m_model, m_editorWidget->textCursor())) + setCurrentIndex(m_model.indexForItem(item)); } void OutlineComboBox::activateEntry() From 8245ed30ae43ed6faf3d157d704ee03667b3ecb0 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Fri, 4 Feb 2022 11:27:35 +0100 Subject: [PATCH 10/16] LanguageClient: support sorting outline widget items (cherry picked from commit 46a012bc11236c094c6881c94430804912c01aec) Change-Id: Iead37c07f09c2f961d506caef76562fb1b3dc308 Reviewed-by: Eike Ziller --- .../languageclient/languageclientoutline.cpp | 35 +++++++++++++++++-- .../languageclient/languageclientoutline.h | 1 + 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/src/plugins/languageclient/languageclientoutline.cpp b/src/plugins/languageclient/languageclientoutline.cpp index 28c2017a707..57f4d7256ee 100644 --- a/src/plugins/languageclient/languageclientoutline.cpp +++ b/src/plugins/languageclient/languageclientoutline.cpp @@ -40,6 +40,7 @@ #include #include +#include using namespace LanguageServerProtocol; @@ -128,6 +129,10 @@ public: public: QList filterMenuActions() const override; void setCursorSynchronization(bool syncWithCursor) override; + void setSorted(bool) override; + bool isSorted() const override; + void restoreSettings(const QVariantMap &map) override; + QVariantMap settings() const override; private: void handleResponse(const DocumentUri &uri, const DocumentSymbolsResult &response); @@ -138,9 +143,11 @@ private: QPointer m_client; QPointer m_editor; LanguageClientOutlineModel m_model; + QSortFilterProxyModel m_proxyModel; Utils::TreeView m_view; DocumentUri m_uri; bool m_sync = false; + bool m_sorted = false; }; LanguageClientOutlineWidget::LanguageClientOutlineWidget(Client *client, @@ -167,7 +174,8 @@ LanguageClientOutlineWidget::LanguageClientOutlineWidget(Client *client, layout->addWidget(Core::ItemViewFind::createSearchableWrapper(&m_view)); setLayout(layout); m_model.setSymbolStringifier(m_client->symbolStringifier()); - m_view.setModel(&m_model); + m_proxyModel.setSourceModel(&m_model); + m_view.setModel(&m_proxyModel); m_view.setHeaderHidden(true); m_view.setExpandsOnDoubleClick(false); m_view.setFrameStyle(QFrame::NoFrame); @@ -192,6 +200,27 @@ void LanguageClientOutlineWidget::setCursorSynchronization(bool syncWithCursor) updateSelectionInTree(m_editor->textCursor()); } +void LanguageClientOutlineWidget::setSorted(bool sorted) +{ + m_sorted = sorted; + m_proxyModel.sort(sorted ? 0 : -1); +} + +bool LanguageClientOutlineWidget::isSorted() const +{ + return m_sorted; +} + +void LanguageClientOutlineWidget::restoreSettings(const QVariantMap &map) +{ + setSorted(map.value(QString("LspOutline.Sort"), false).toBool()); +} + +QVariantMap LanguageClientOutlineWidget::settings() const +{ + return {{QString("LspOutline.Sort"), m_sorted}}; +} + void LanguageClientOutlineWidget::handleResponse(const DocumentUri &uri, const DocumentSymbolsResult &result) { @@ -210,7 +239,7 @@ void LanguageClientOutlineWidget::handleResponse(const DocumentUri &uri, void LanguageClientOutlineWidget::updateTextCursor(const QModelIndex &proxyIndex) { - LanguageClientOutlineItem *item = m_model.itemForIndex(proxyIndex); + LanguageClientOutlineItem *item = m_model.itemForIndex(m_proxyModel.mapToSource(proxyIndex)); const Position &pos = item->pos(); // line has to be 1 based, column 0 based! m_editor->editorWidget()->gotoLine(pos.line() + 1, pos.character(), true, true); @@ -234,7 +263,7 @@ static LanguageClientOutlineItem *itemForCursor(const LanguageClientOutlineModel void LanguageClientOutlineWidget::updateSelectionInTree(const QTextCursor ¤tCursor) { if (LanguageClientOutlineItem *item = itemForCursor(m_model, currentCursor)) { - const QModelIndex index = m_model.indexForItem(item); + const QModelIndex index = m_proxyModel.mapFromSource(m_model.indexForItem(item)); m_view.selectionModel()->select(index, QItemSelectionModel::ClearAndSelect); m_view.scrollTo(index); } else { diff --git a/src/plugins/languageclient/languageclientoutline.h b/src/plugins/languageclient/languageclientoutline.h index 2384ea7f6ab..fe7741a07b9 100644 --- a/src/plugins/languageclient/languageclientoutline.h +++ b/src/plugins/languageclient/languageclientoutline.h @@ -46,6 +46,7 @@ public: public: bool supportsEditor(Core::IEditor *editor) const override; TextEditor::IOutlineWidget *createWidget(Core::IEditor *editor) override; + bool supportsSorting() const override { return true; } }; } // namespace LanguageClient From 176dbff127ac27f4b742bff6a37f218334f60f7f Mon Sep 17 00:00:00 2001 From: David Schulz Date: Fri, 4 Feb 2022 12:05:31 +0100 Subject: [PATCH 11/16] LanguageClient: support sorting outline combo box items (cherry picked from commit 505358cb8285ccd1a2e0c634060832c0766f939c) Change-Id: I793700e770c830b729d0e8780fc4cbac79c01c0f Reviewed-by: Eike Ziller Reviewed-by: Reviewed-by: Qt CI Bot --- .../languageclient/languageclientoutline.cpp | 29 +++++++++++++++++-- .../languageclient/languageclientsettings.cpp | 18 ++++++++++++ .../languageclient/languageclientsettings.h | 3 ++ 3 files changed, 47 insertions(+), 3 deletions(-) diff --git a/src/plugins/languageclient/languageclientoutline.cpp b/src/plugins/languageclient/languageclientoutline.cpp index 57f4d7256ee..56905738e26 100644 --- a/src/plugins/languageclient/languageclientoutline.cpp +++ b/src/plugins/languageclient/languageclientoutline.cpp @@ -31,6 +31,7 @@ #include #include #include +#include > #include #include #include @@ -39,6 +40,7 @@ #include #include +#include #include #include @@ -328,8 +330,10 @@ private: void updateEntry(); void activateEntry(); void documentUpdated(TextEditor::TextDocument *document); + void setSorted(bool sorted); LanguageClientOutlineModel m_model; + QSortFilterProxyModel m_proxyModel; QPointer m_client; TextEditor::TextEditorWidget *m_editorWidget; const DocumentUri m_uri; @@ -353,19 +357,32 @@ OutlineComboBox::OutlineComboBox(Client *client, TextEditor::BaseTextEditor *edi , m_uri(DocumentUri::fromFilePath(editor->document()->filePath())) { m_model.setSymbolStringifier(client->symbolStringifier()); - setModel(&m_model); + m_proxyModel.setSourceModel(&m_model); + const bool sorted = LanguageClientSettings::outlineComboBoxIsSorted(); + m_proxyModel.sort(sorted ? 0 : -1); + setModel(&m_proxyModel); setMinimumContentsLength(13); QSizePolicy policy = sizePolicy(); policy.setHorizontalPolicy(QSizePolicy::Expanding); setSizePolicy(policy); setMaxVisibleItems(40); + setContextMenuPolicy(Qt::ActionsContextMenu); + const QString sortActionText + = QCoreApplication::translate("TextEditor::Internal::OutlineWidgetStack", + "Sort Alphabetically"); + auto sortAction = new QAction(sortActionText, this); + sortAction->setCheckable(true); + sortAction->setChecked(sorted); + addAction(sortAction); + connect(client->documentSymbolCache(), &DocumentSymbolCache::gotSymbols, this, &OutlineComboBox::updateModel); connect(client, &Client::documentUpdated, this, &OutlineComboBox::documentUpdated); connect(m_editorWidget, &TextEditor::TextEditorWidget::cursorPositionChanged, this, &OutlineComboBox::updateEntry); connect(this, QOverload::of(&QComboBox::activated), this, &OutlineComboBox::activateEntry); + connect(sortAction, &QAction::toggled, this, &OutlineComboBox::setSorted); documentUpdated(editor->textDocument()); } @@ -389,12 +406,12 @@ void OutlineComboBox::updateModel(const DocumentUri &resultUri, const DocumentSy void OutlineComboBox::updateEntry() { if (LanguageClientOutlineItem *item = itemForCursor(m_model, m_editorWidget->textCursor())) - setCurrentIndex(m_model.indexForItem(item)); + setCurrentIndex(m_proxyModel.mapFromSource(m_model.indexForItem(item))); } void OutlineComboBox::activateEntry() { - const QModelIndex modelIndex = view()->currentIndex(); + const QModelIndex modelIndex = m_proxyModel.mapToSource(view()->currentIndex()); if (modelIndex.isValid()) { const Position &pos = m_model.itemForIndex(modelIndex)->pos(); Core::EditorManager::cutForwardNavigationHistory(); @@ -411,4 +428,10 @@ void OutlineComboBox::documentUpdated(TextEditor::TextDocument *document) m_client->documentSymbolCache()->requestSymbols(m_uri, Schedule::Delayed); } +void OutlineComboBox::setSorted(bool sorted) +{ + LanguageClientSettings::setOutlineComboBoxSorted(sorted); + m_proxyModel.sort(sorted ? 0 : -1); +} + } // namespace LanguageClient diff --git a/src/plugins/languageclient/languageclientsettings.cpp b/src/plugins/languageclient/languageclientsettings.cpp index e994fefb498..d389f42fefb 100644 --- a/src/plugins/languageclient/languageclientsettings.cpp +++ b/src/plugins/languageclient/languageclientsettings.cpp @@ -80,6 +80,7 @@ constexpr char argumentsKey[] = "arguments"; constexpr char settingsGroupKey[] = "LanguageClient"; constexpr char clientsKey[] = "clients"; constexpr char typedClientsKey[] = "typedClients"; +constexpr char outlineSortedKey[] = "outlineSorted"; constexpr char mimeType[] = "application/language.client.setting"; namespace LanguageClient { @@ -686,6 +687,23 @@ void LanguageClientSettings::toSettings(QSettings *settings, settings->endGroup(); } +bool LanguageClientSettings::outlineComboBoxIsSorted() +{ + auto settings = Core::ICore::settings(); + settings->beginGroup(settingsGroupKey); + bool sorted = settings->value(outlineSortedKey).toBool(); + settings->endGroup(); + return sorted; +} + +void LanguageClientSettings::setOutlineComboBoxSorted(bool sorted) +{ + auto settings = Core::ICore::settings(); + settings->beginGroup(settingsGroupKey); + settings->setValue(outlineSortedKey, sorted); + settings->endGroup(); +} + bool StdIOSettings::applyFromSettingsWidget(QWidget *widget) { bool changed = false; diff --git a/src/plugins/languageclient/languageclientsettings.h b/src/plugins/languageclient/languageclientsettings.h index 03a9cf9f84a..95e17a9b5ae 100644 --- a/src/plugins/languageclient/languageclientsettings.h +++ b/src/plugins/languageclient/languageclientsettings.h @@ -169,6 +169,9 @@ public: static void addSettings(BaseSettings *settings); static void enableSettings(const QString &id); static void toSettings(QSettings *settings, const QList &languageClientSettings); + + static bool outlineComboBoxIsSorted(); + static void setOutlineComboBoxSorted(bool sorted); }; class LANGUAGECLIENT_EXPORT BaseSettingsWidget : public QWidget From c3d04642e172c024ff7af15830a8bc9d66223eb7 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Fri, 29 Apr 2022 14:23:09 +0200 Subject: [PATCH 12/16] QmlDesigner: Properly parse variant type If a property actually is a variant we have to properly parse the string and convert it to the correct type. Booleans and numbers were not probably converted. This did not create many issues, since the conversion happened later, but it broke copy and paste and merging. In Qt 5 this conversion seemed to happen mostly automatically. Boolean literals have to be handled explcitly, since e.g. "10" is technically true and can be interpreted as boolean. Task-numbner: QDS-5944 Change-Id: I35c7cae7041667c7eac81e36a285a394263b35a4 Reviewed-by: Vikas Pachdha --- .../designercore/model/propertyparser.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/plugins/qmldesigner/designercore/model/propertyparser.cpp b/src/plugins/qmldesigner/designercore/model/propertyparser.cpp index 3c7b498a929..eab05e0adc4 100644 --- a/src/plugins/qmldesigner/designercore/model/propertyparser.cpp +++ b/src/plugins/qmldesigner/designercore/model/propertyparser.cpp @@ -242,9 +242,21 @@ QVariant read(int variantType, const QString &str) bool conversionOk = true; switch (variantType) { case QMetaType::QVariant: { + + if (str == "true") + return true; + + if (str == "false") + return false; + auto tmp = QVariant(str); - value = QVariant(tmp); conversionOk = tmp.isValid(); + value = QVariant(tmp); + + if (tmp.canConvert(QMetaType::Double)) + value.convert(QMetaType::Double); + else if (tmp.canConvert(QMetaType::QColor)) + value.convert(QMetaType::QColor); break; } case QMetaType::QPoint: From f8a04666d5734be97195bc87f0d00f1773daffec Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Mon, 2 May 2022 09:10:52 +0200 Subject: [PATCH 13/16] Editors: Fix that actions were applied to wrong editor We delayed switching the "current editor" by the double-click interval to fix opening editors in extra editor windows from the project tree etc. This leads to the weird effect that after switching the focus between editors even within the same window was only applied after a delay. Instead just delay setting the current editor by "two events". When clicking into a window, Qt sets the focus in two phases. 1. First the focus ends up in the focusWidget() in the new window, which possibly is the editor that was active before in _that_ window 2. Only during the next event processing does Qt set the focus to the widget that the user clicked into, which could be a non-editor widget, like the Projects tree We may only change the current editor if the focus didn't move away from any editor in (2). So we need to delay setting the current editor until after the next event processing. Amends 22c67db406ec02d42e34dc182741ad473ba714fb Fixes: QTCREATORBUG-27479 Change-Id: I3d9197176a2d7ce50e5f29a1ce1b2efef52232d0 Reviewed-by: Reviewed-by: David Schulz --- .../editormanager/editormanager.cpp | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/plugins/coreplugin/editormanager/editormanager.cpp b/src/plugins/coreplugin/editormanager/editormanager.cpp index 60a81aa027e..657400027b5 100644 --- a/src/plugins/coreplugin/editormanager/editormanager.cpp +++ b/src/plugins/coreplugin/editormanager/editormanager.cpp @@ -2389,15 +2389,26 @@ void EditorManagerPrivate::handleContextChange(const QList &context) if ((editor = qobject_cast(c))) break; if (editor && editor != d->m_currentEditor) { + d->m_scheduledCurrentEditor = editor; // Delay actually setting the current editor to after the current event queue has been handled // Without doing this, e.g. clicking into projects tree or locator would always open editors // in the main window. That is because clicking anywhere in the main window (even over e.g. // the locator line edit) first activates the window and sets focus to its focus widget. // Only afterwards the focus is shifted to the widget that received the click. - d->m_scheduledCurrentEditor = editor; - QTimer::singleShot(QApplication::doubleClickInterval() + 10, - d, - &EditorManagerPrivate::setCurrentEditorFromContextChange); + + // 1) During this event handling, focus landed in the editor. + // 2) During the following event handling, focus might change to the project tree. + // So, delay setting the current editor by two events. + // If focus changes to e.g. the project tree in (2), then m_scheduledCurrentEditor is set to + // nullptr, and the setCurrentEditorFromContextChange call becomes a no-op. + QMetaObject::invokeMethod( + d, + [] { + QMetaObject::invokeMethod(d, + &EditorManagerPrivate::setCurrentEditorFromContextChange, + Qt::QueuedConnection); + }, + Qt::QueuedConnection); } else { updateActions(); } From 5e6c7089d86387fff4690ccdb896b9dacbbe7e76 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Thu, 7 Apr 2022 14:52:16 +0200 Subject: [PATCH 14/16] Doc: Describe how to declare files in projects Including using OTHER_FILES for qmake projects. Fixes: QTCREATORBUG-27157 Change-Id: I802000c90472464430d1335b9e962c6691cc567a Reviewed-by: Eike Ziller --- .../src/editors/creator-locator.qdoc | 7 ++-- .../creator-only/creator-beautifier.qdoc | 3 +- doc/qtcreator/src/editors/creator-search.qdoc | 6 +++ .../creator-deployment-embedded-linux.qdoc | 1 + .../creator-projects-creating.qdoc | 40 ++++++++++++++----- .../user-interface/creator-projects-view.qdoc | 3 ++ 6 files changed, 44 insertions(+), 16 deletions(-) diff --git a/doc/qtcreator/src/editors/creator-locator.qdoc b/doc/qtcreator/src/editors/creator-locator.qdoc index d649442309e..f3e82ea396c 100644 --- a/doc/qtcreator/src/editors/creator-locator.qdoc +++ b/doc/qtcreator/src/editors/creator-locator.qdoc @@ -230,9 +230,10 @@ \endlist - If locator does not find some files, you can add them to the \c DISTFILES - variable in the \c .pro file to include them into the distribution tarball - of your project and thus make them known to \QC as well. + \if defined(qtcreator) + If locator does not find some files, see \l{Specifying Project Contents} + for how to make them known to the locator. + \endif \section1 Configuring Locator Filters diff --git a/doc/qtcreator/src/editors/creator-only/creator-beautifier.qdoc b/doc/qtcreator/src/editors/creator-only/creator-beautifier.qdoc index 011ada3307c..dca905d6120 100644 --- a/doc/qtcreator/src/editors/creator-only/creator-beautifier.qdoc +++ b/doc/qtcreator/src/editors/creator-only/creator-beautifier.qdoc @@ -121,8 +121,7 @@ \li Select \uicontrol {Use file *.astylerc defined in project files} or \uicontrol {Use file uncrustify.cfg defined in project files}, - to use the configuration file - \l{Displaying Additional File Types in Projects View} + to use the configuration file \l{Specifying Project Contents} {defined in the project file} as the configuration file for the selected tool. diff --git a/doc/qtcreator/src/editors/creator-search.qdoc b/doc/qtcreator/src/editors/creator-search.qdoc index 7a1e7dd9de3..5d4315b8610 100644 --- a/doc/qtcreator/src/editors/creator-search.qdoc +++ b/doc/qtcreator/src/editors/creator-search.qdoc @@ -142,6 +142,12 @@ \image qtcreator-search-allprojects.png + \if defined(qtcreator) + If you cannot find some files, see + \l{Specifying Project Contents} for how + to declare them as a part of the project. + \endif + \li \uicontrol {Current Project} searches from the project you are currently editing. diff --git a/doc/qtcreator/src/linux-mobile/creator-deployment-embedded-linux.qdoc b/doc/qtcreator/src/linux-mobile/creator-deployment-embedded-linux.qdoc index db241e9c60d..d1880588a00 100644 --- a/doc/qtcreator/src/linux-mobile/creator-deployment-embedded-linux.qdoc +++ b/doc/qtcreator/src/linux-mobile/creator-deployment-embedded-linux.qdoc @@ -56,6 +56,7 @@ \section1 Adding Missing Files The process to add files to deploy depends on the build system you use. + For more information, see \l{Specifying Project Contents}. \section2 CMake Builds diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-creating.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-creating.qdoc index a3ad3bb15dd..c89efd5a465 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-creating.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-creating.qdoc @@ -239,21 +239,33 @@ \include creator-python-project.qdocinc python project wizards - \section1 Displaying Additional File Types in Projects View + \section1 Specifying Project Contents + + A project can contain files that should be: + + \list + \li Compiled or otherwise handled by the build + \li Installed + \li Not installed, but included in a source package created with + \c {make dist} + \li Not installed, nor be part of a source package, but still be known + to \QC + \endlist \QC displays all files that are declared to be part of the project by the project files in the \l Projects view. The files are sorted into categories by file type (.cpp, .h, .qrc, and so on). To display additional files, edit - the project file. + the project file. Alternatively, you can see all the files in a project + directory in the \l {File System} view. - Alternatively, you can see all the files in a project in the - \l {File System} view. + Declaring files as a part of the project also makes them visible to the + \l{Searching with the Locator}{locator} and \l{Advanced Search} + {project-wide search}. \section2 CMake Projects - When using CMake, you can specify additional files to display in the - \uicontrol Projects view by either adding them as sources or installing - them. + When using CMake, you can specify additional files for a project by either + adding them as sources or installing them. In the CMakeLists.txt file, define the files as values of the \l{CMake: target_sources command}{target_sources} command using @@ -273,11 +285,17 @@ \section2 qmake Projects - When using qmake, add filenames as values of the \c {DISTFILES} variable - in the .pro file. You can also use wildcards. + Use the following variables in the .pro file: - For example, the following value specifies that text files are part of the - project: + \list + \li \c SOURCES and \c HEADERS for files to compile + \li \c INSTALLS for files to install + \li \c DISTFILES for files to include in a source package + \li \c OTHER_FILES for files to manage with \QC without + installing them or including them in source packages + \endlist + + For example, the following value includes text files in the source package: \badcode diff --git a/doc/qtcreator/src/user-interface/creator-projects-view.qdoc b/doc/qtcreator/src/user-interface/creator-projects-view.qdoc index 94acded57c3..be9ba3530d8 100644 --- a/doc/qtcreator/src/user-interface/creator-projects-view.qdoc +++ b/doc/qtcreator/src/user-interface/creator-projects-view.qdoc @@ -155,6 +155,9 @@ allows to specify exactly where a new file should be placed in the build system. + If you cannot see some files, they might not be declared as part of the + project. For more information, see \l{Specifying Project Contents}. + If the project is under version control, information from the version control system might be displayed in brackets after the project name. This is currently implemented for Git (the branch name or a tag is From 95195b416c26362c572f7a9f263a1f2409c98d06 Mon Sep 17 00:00:00 2001 From: Mats Honkamaa Date: Thu, 21 Apr 2022 09:56:45 +0300 Subject: [PATCH 15/16] Doc: Add creating state transition animations tutorial Add a tutorial on how to create state transition animations with the transition editor Task-number: QDS-6560 Change-Id: I1bd63bc86b9d651e16fe71fbf46c8c3e934b8c77 Reviewed-by: Leena Miettinen Reviewed-by: Mahmoud Badri --- .../examples/doc/StateTransitions.qdoc | 191 ++++++++++++++++++ .../animated-state-transitions-states.png | Bin 0 -> 68536 bytes .../doc/images/animated-state-transitions.jpg | Bin 0 -> 115021 bytes .../images/state-transition-connections.png | Bin 0 -> 3493 bytes .../state-transition-navigator-buttons.png | Bin 0 -> 5058 bytes .../images/state-transition-transitions.png | Bin 0 -> 7465 bytes 6 files changed, 191 insertions(+) create mode 100644 doc/qtdesignstudio/examples/doc/StateTransitions.qdoc create mode 100644 doc/qtdesignstudio/examples/doc/images/animated-state-transitions-states.png create mode 100644 doc/qtdesignstudio/examples/doc/images/animated-state-transitions.jpg create mode 100644 doc/qtdesignstudio/examples/doc/images/state-transition-connections.png create mode 100644 doc/qtdesignstudio/examples/doc/images/state-transition-navigator-buttons.png create mode 100644 doc/qtdesignstudio/examples/doc/images/state-transition-transitions.png diff --git a/doc/qtdesignstudio/examples/doc/StateTransitions.qdoc b/doc/qtdesignstudio/examples/doc/StateTransitions.qdoc new file mode 100644 index 00000000000..b3dd7681e74 --- /dev/null +++ b/doc/qtdesignstudio/examples/doc/StateTransitions.qdoc @@ -0,0 +1,191 @@ +/**************************************************************************** +** +** Copyright (C) 2022 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Design Studio documentation. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU Free Documentation License Usage +** Alternatively, this file may be used under the terms of the GNU Free +** Documentation License version 1.3 as published by the Free Software +** Foundation and appearing in the file included in the packaging of +** this file. Please review the following information to ensure +** the GNU Free Documentation License version 1.3 requirements +** will be met: https://www.gnu.org/licenses/fdl-1.3.html. +** +****************************************************************************/ + +/*! + \page state-transition-animations.html + \ingroup gstutorials + \sa States, {Transition Editor}, {Adding States} + + \title Animated State Transitions + \brief Illustrates how to create animated state transitions. + + \image animated-state-transitions.jpg + + The \e{Animated State Transitions} tutorial illustrates how you can animate + the transition between \l{Adding States}{states}. + + The starting point of this tutorial is the Car Demo project, you can + download it from + \l{https://git.qt.io/public-demos/qtdesign-studio/-/tree/master/tutorial%20projects/animated-state-transition/Start/CarDemo} + {here}. + + You can download the completed project from + \l{https://git.qt.io/public-demos/qtdesign-studio/-/tree/master/tutorial%20projects/animated-state-transition/Completed/CarDemo} + {here}. + + This tutorial requires that you know the basics of \QDS, see + \l{Getting Started}. + + \section1 Tutorial Assets + + All assets you need for this tutorial are included in the Car Demo project. + + \section1 Creating States + + First, you create the different states. In this tutorial, you create four + different states with different views of the car in the scene: + \list + \li Side view + \li Front view + \li Back view + \li Interior view + \endlist + + To create the first state: + \list 1 + \li In the \l States view, select \inlineimage icons/plus.png + . + \li Change the name of the new state to \e{side}. + \endlist + + For the \e side state, you do not need to make any changes to the car model + because it is already in side view position. + + Next, create the rest of the states and change the rotation of the car. For + the \e interior state, you also change the position of the camera: + \list 1 + \li Create a new state and change the name to \e{front}. + \li In \l{Navigator}, select \e car_final and in + \l{Properties}, set \uicontrol Transform > \uicontrol Rotation > + \uicontrol Y to 0. + \li Create a new state and change the name to \e{back}. + \li In \uicontrol{Navigator}, select \e car_final and in + \uicontrol{Properties}, set \uicontrol Transform > \uicontrol Rotation > + \uicontrol Y to 180. + \li Create a new state and change the name to \e{interior}. + \li In \uicontrol{Navigator}, select \e camera1 and in + \uicontrol{Properties}, set \uicontrol Transform > \uicontrol Translation + > \uicontrol Z to 20. + \endlist + + \image animated-state-transitions-states.png + + \section1 Creating State Transitions + + With the states created, you need a way to move between the states in the + UI. In this tutorial, you create buttons arranged in a column to do this. + + \note Ensure that you have the base state selected before you add the + buttons. + + To add the buttons: + + \list 1 + \li From \l{Components}, drag \uicontrol Column to \e rectangle in + \uicontrol{Navigator}. + \li In \uicontrol{Navigator}, select \e column and in + \uicontrol{Properties}, set: + \list + \li \uicontrol Size > \uicontrol H to 200. + \li \uicontrol Spacing to 10. + \endlist + \li In \uicontrol{Properties}, go to the \uicontrol Layout tab. + \li Select \uicontrol Anchors > \uicontrol{Bottom} and set: + \list + \li \uicontrol Target to parent. + \li \uicontrol Margin to 10. + \endlist + \li Select \uicontrol Anchors > \uicontrol{Left} and set: + \list + \li \uicontrol Target to parent. + \li \uicontrol Margin to 10. + \endlist + \li From \uicontrol {Components}, drag \uicontrol Button to \e column in + \uicontrol {Navigator}. + \li In \uicontrol {Navigator}, select \e button and set \uicontrol ID to + \e {button_side}. + \li On the \uicontrol Button tab, set \uicontrol Text to \e {Side}. + \li Repeat step 6 to 8 three times to create a total of four buttons. Set + the ID for the three last buttons to \e{button_front}, \e{button_back}, + and \e {button_interior}. Change the text on the buttons accordingly. + \endlist + + \image state-transition-navigator-buttons.png + + Now, you add the actions to the buttons. Actions determine what happens + when you select a button in the application. In this tutorial, you use + the buttons to switch between the different states. + + To add actions: + + \list 1 + \li Go to the \uicontrol Connections view. + \li In \uicontrol{Navigator}, select \e button_side and in + \uicontrol {Connections}, select \inlineimage icons/plus.png + . + This creates a new connection with \e button_side as the target. + \li Set \uicontrol{Signal Handler} to \uicontrol onClicked. + \li Set \uicontrol Actions to \e {Change state to side}. + \li Repeat steps 2 to 4 for the next three buttons and set them to go to + their corresponding states. + \endlist + + \image state-transition-connections.png + + Now you can preview and try the transitions to see how the UI moves between + the states when you select the buttons. + + To preview, select \key Alt + \key{P}. + + \section1 Animating State Transitions + + The final step of this tutorial is to create animations between the states: + + \list 1 + \li Go to \l{Transition Editor}. + \li Select \inlineimage icons/plus.png + . + \li In the upper right corner of \uicontrol {Transition Editor}, change + the number 2000 to 1000. + This sets the length of the animation in milliseconds. + \li Drag the left end of the timebar for \e car_final to the 0 mark in + the timeline, and then drag the right end to the 1000 mark. + \li Repeat the above step for \e {camera1}. + \endlist + + \image state-transition-transitions.png + + This adds the transition and sets the animation durations to 1 second + (1000 ms). By default, all properties that have changed between the states + are added to the transition and therefor animated. In + this case, the properties are Y rotation for the car model and Z position + for the camera. + + \section1 Previewing + + Now you are done. To preview and try the transitions animations, + select \key Alt + \key{P}. + +*/ diff --git a/doc/qtdesignstudio/examples/doc/images/animated-state-transitions-states.png b/doc/qtdesignstudio/examples/doc/images/animated-state-transitions-states.png new file mode 100644 index 0000000000000000000000000000000000000000..71d775e1cb3fdee2222163ccd0777ba41f54b99e GIT binary patch literal 68536 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
db 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 KxvXaD{>EPXhykx&VxJOvz75 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 h^k1;%%`fZuC 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

    {xU+H5+LX{6t0P1!*D`##uX@O7?ZK=EoF=k< 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%0AM|=q6gE4CPulC% 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⁢d*Rsy8^WZ{Kizb5O;^ROy}xr?=RT3UZD66IYIOS7m6w-SeK@VZ zzvlJYxut(+)@0TMWNEBXy5G6v^3AQ;-``jkt6o0$@UXi`S^Bv-k)IDm-F&|H`~7fL zrQ3R9Ex=g)6CbR{Sv_MN)tDr1X~f=2yyuczMWUKNlu`TEy=A>~}A-2pSwxK^KQ zHa9DCI`w^Ty6WwTD^~2=_fLQ;d%C%yf+qYKHfDDsmp3mLe4t;wk{!8o!$a<#0Z(>_wrg!{lu$F32c%>&NW;v~qL$`BUDdkE3iaU+(`cAac#+{QAm=KR!Ng ziq)Gg{9sASxjU84(&m2)uV$?i6S?+v%eC)cWi38zoEO==V8YB*99)7TPKt=~Q-y1K zLWE7T(;89DKlkTaryhOZcXiGoes3vIOJ?chLzh;mx7z;Bx8GRba2nJdS=xB$RyjL=bAJ7F{rEBeZ#y((W|-Gi$F2V=`sVGUV`ibA z3y;{{S+%y}&ArOU>$o#o?Yd> z^SqPleaq@q;&YGwS5?A@X3f0t~1w&jiHYw>Bk zFML{@`MDz2#m6d=4oG>j^!W8GJoCdveV+i= z>&pEC%}yFe76>#urIjVFTqtmOfk3u5m*6V*FTzeQmrc+J!Yp;712sC|zwuG;4KJU%wN0~T9#XeX&%gh#ZOPMlI+>fA->6xKdoP@6zdUYd$pQmi5w7UT6Mf6toHTsq z9oiIk;jtjI#+J=}GbJb7wLI2ilk(H}*td?WGpdUFcdp{~yYj;GNX`=Ft0&KVvV892 z^hw`2u{gjYa^X*nE7!03^~ub6sdq$NEMW8AOh%opxgpXw9)4afxK-0c*jlV$%VyiQ zC-H5EZUsxE&TPLSVx_yObffmd06xQ+8w3qk^X7f|z2?lBI499)-|tf{U!cvnorC4i$9 zE!io8nsg|_zTSz-k0+k>>{@X*eW#g*kjXdu2ElFYt(o&b^0x*^%sy0dOu64e_}^x& zS6b8gITSY->N2JK|JuHIDF=gsoMoELrkC8^HzaRY)z{`sv~(?2%m2Uq0e7c+pDgFA zMHe`#%xh==byO>;lIH4k2Sr6e$)yz)PZGGCqf<0;-ddaTcDnN|-f&p7>W$RgA8p67 zIu5^R0r?_W`O!pBdlSRK&_=ux+{@46Bh)W=&9FeIi#ZL zlU)*NoGU;znJBI)Adazn>i_dJaN^n zX;)Orawq>6lhqBp-Wr&)Hm$v`WX{`qZWs5rz<+TITopUBqO(gbEvQKO?6BHZPi}tc z{_JghJj6Awi{(=uaRJUOXy_j9jjH#wUQm2_65z@3a#5Mahg z=E4mNKc49H3I58u%pp+=6f4HLmToiuUiCBnw@`p9Ie5maiYI*9PqL1zx_rVpJ8VXw z(xg(qTXSZ8xSu|6?SG$NbFZA1)L0|is@dmWb|@?)_uUKi+u~A*6>ePt=IOPG=|O+K zXFl92)8W32uTzrql_$rm(+6^QB)*M2`|Xz9;RnWs`?*D~`DOOI_c<(F&(GC*)-AE? z@kHgoh&LitZd#5aZQD)+M6fTll(U@U6#g!GbKo}Tr+-D*=5dNBv9z95fkd1WD54h5 d3i?rhW|hwz&9$F@FfcGMc)I$ztaD0e0st>Zij@EW literal 0 HcmV?d00001 diff --git a/doc/qtdesignstudio/examples/doc/images/state-transition-transitions.png b/doc/qtdesignstudio/examples/doc/images/state-transition-transitions.png new file mode 100644 index 0000000000000000000000000000000000000000..84a4bb37acb62295cef375477a127712cf9c9ce8 GIT binary patch literal 7465 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 O6|_HfOsSPRk24 z)ytajw8}Nmbl=-;x3}fqo)#-V|N9y>(a^_A>wmn>ub-VOwJoZ*SUSZuE-<9`|EKBu zQ>0TaN}ZmYKRLR$dyi7o!;511o21;Ozuzste|9fx!TY`6&ux%8e%P*<_21m`d!3T3 zzF{D$?%UsMeYU#L`}&b-s|qiIqrAko=0PKS(d|1sukLs; zYe((xZ!xb=uRW$4D;&KR9=q%Re2bs16MOAKfmQa$n}K^b^RC+cUhc-0%Hp!xIsg4_ za}y`WeZ1hzf4|^y@6E4;zGqH(dU%}KezNN5x3~TE4mAdqOBTvVyL6U%LJmJ=bPG zAOAyYJ;SV&5YX__F6HDnL;oebiD3*346=tec^=ko31?tnXb9(6&%nUIuwEdJk%56B zPVta70|P?^E1bUvG;+Jgse% zhM$>PUwHpRM#}jEmr|LlAN`+Z`hRz=^V(c~h(4>!+J|`E+J7zkyBnm3f#E~f&WEC} zuYLVzG&y_y?sYorXKa)Hzy(qKEU4bKIckfB=;>sJ;7LoKFD$QkbNu4NeY+TVc#pds z-aGSLmr6C;wBN=`gAP|FX83 zna^fPVy#~FUyBvHqI{gSUitoS`q$EB@3YnS@wenp0W)hSZk;%#4&s7C> zoE4;1!FoWOfx$t%vi1G?2cj8^!Gob5$5Zsbbvg6d@>J^we+z%J`E4u%LqpzznRT3h zMfWg)oD51qkhF48TWwR`^B3>drkiiRSy8qwduhk!_xJ9G2twlFL)W?QUANL+Kg!(h zoSmM&9g%4olz2BSlH)_8>Qe*e! zU8}9J$Zp1}U$3rh%>Q$HZ>eXNz4x|ve!V+q?TUdUlZvA{)kj%`S8Thk{=MtY+t<8* z*+OT;{dY@MPo8IB_j1v$=PC1V3WjZ57Ix>>Lb2ziFt?|@5?wj3aZX+H8b6brwW*sm z)x%}3oq2!FCh-$U^|i`N7w1AHr?Q1B3j=)5|GHtjrMUe0d8X&!ypq&+{sMl_h*o54OI)t+(KDdd_E1 zc8)u!eak0RCZzrRjb~umApK6(Kaox{4Tc`$BaCxvEkvmyFgGw2fl)M!EZ(MJ# z`rM5FxLw+vfq~&$l^KtJ=Rd9ns6QAnO#nqyiS^uzyIxDJe<3X=EBo&10*FtV!hO1* zGFKncY-_Ior_KkW#YeQSt$qDBRqc9Q`Q178SM1^rf=jHUGOyNW1aylnU39BD;A}vA zs_**`H~JSJt~F)6VSK@STWHSaE#J7S*{1csO^K|P@6-yZOU>#{Y)#2A#+i7Dp~^^c39s_PDyomF;WRtl1a!bLyGA;MpHxMaZ*1U9W%r zZoYPE^%vt5sqeL4|F!N4zf!A^U%6-VqI;T#fr?V)C$u5K^S1f7I^wJyr&W z7i?d`KX5?|IfyU=l%-(}Rz`5m05fk<@}8uR*X}O<%Cq)z7CgRo?@zjW?&89&QEx%f z+7SMsE3^9Ot%VoozBaj8393ZaKM=kAt*g}8&EX?7wWU20MdCaYHDt=N+5J9l&BJrx zm}Oo6VNPV+LlI^a+nd5MQq=kfqUVf2RoaKHZ^r)M^!Ute)+erdwM=&_=d+9q3>R|h zTg5hj{fJ&kxj+I-09ut{uewl0IY42 Date: Fri, 29 Apr 2022 15:57:47 +0200 Subject: [PATCH 16/16] Doc: Document merging while importing from Qt-Bridge Task-number: QDS-3812 Change-Id: Ia1ce3e16393d414cab9d4500514313d35bed7426 Reviewed-by: Mats Honkamaa Reviewed-by: Thomas Hartmann --- .../src/qtdesignstudio-importing-2d.qdoc | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/doc/qtdesignstudio/src/qtdesignstudio-importing-2d.qdoc b/doc/qtdesignstudio/src/qtdesignstudio-importing-2d.qdoc index 0450253af83..0fd20c0467a 100644 --- a/doc/qtdesignstudio/src/qtdesignstudio-importing-2d.qdoc +++ b/doc/qtdesignstudio/src/qtdesignstudio-importing-2d.qdoc @@ -103,7 +103,7 @@ want to import assets. \li Select the \uicontrol {Merge QML} check box if you have imported the assets before and want to merge the changes into existing QML files - instead of overwriting the existing files. + instead of overwriting the existing files. See \l {Merging QML Files}. \li Select \uicontrol Import to import the QML files and assets. This might take a little while for complex projects. \endlist @@ -128,6 +128,25 @@ \uicontrol {Asset Import} dialog while importing, fix the issues in design tool and export the assets again. + \section2 Merging QML Files + When you re-import a QML component, the changes done in \QDS are preserved. + The QML item changes in the existing QML component are copied to the corresponding + QML item in the new component. + + The following rules are observed while merging QML components. + \list + \li While importing, a unique identifier (UUID) is added for each QML item in the + component. The UUID is used to find the corresponding QML item in the existing + component. + \li New item properties in the existing component are added to the corresponding + item in the new component. + \li When a QML property is set in both old and new QML item, the property in the + new item remains unchanged. This rule does not apply to binding properties. In case + of bindings, changes done in \QDS are preserved. + \li New child items are added to the corresponding item in the new component. + \li QML items for which a corresponding QML item is not found in the existing component, + are added under the root item of the new component. + \endlist \include qtbridge-tutorial-links.qdocinc qtsketchbridge tutorials */