Qt for MCUs uses several features in the qmlproject files which
are unknown to QDS. It is important that this information does
not get lost when converting to and from the internal JSON
project format, to avoid breaking MCU projects.
The following changes were made:
- Files nodes keep the type (ImageFiles, QmlFiles...)
- Added support for more Files node types used by MCU projects
(ModuleFiles, InterfaceFiles, FontFiles...)
- Files nodes can have child properties
- Added a JSON object to store properties unknown to QDS.
They may be used by Qt for MCUs, and new properties may
be added between versions
- Added support for the MCU.Config and MCU.Module nodes
- Added a test project for MCU. This project is also tested
with Qt for MCUs. Both the original and the converted
project build correctly
- Added instructions for notifying the MCU team before
modifying the MCU test cases to avoid breaking changes.
Fixes: QDS-10774
Task-number: QDS-10969
Change-Id: I0dfd7f3b150a8661fc0398a8a3d575c7e8777ef3
Reviewed-by: Burak Hancerli <burak.hancerli@qt.io>
Reviewed-by: Yasser Grimes <yasser.grimes@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io>
Update the way we used to check for mcus
project in McuSupport plugin. The old way
relied on the deployment step which is only
available when the user has already added a
valid QtForMcus package to "Devices->MCU".
The addition of "isQtForMcusProject" in
externaldependenciesinterface.h will be
used in a follow-up patch in
qt-creator/tqtc-plugin-qtquickdesigner
which adds a warning when using .qtbridge
for Mcu project.
Task-number: QDS-10599
Change-Id: Ibf46477a4f0cb4a82a10ac848acec75458bf6c03
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Aleksei German <aleksei.german@qt.io>
Reviewed-by: Yasser Grimes <yasser.grimes@qt.io>
This patch fixes issues with adding files to the project by
providing the absolute paths in the .qmlproject file.
- If a directory is given without an explicit file list,
then that directory wil be searched recursively.
- If explicit file list given without a directory, then each
file will be added to the project separately.
- If both provided, then each file wil be prefixed with given
directory, and added project separately.
Task-number: QDS-10636
Change-Id: Ia13964ce2b3f6364d1def1aa71e20ec29f6f3542
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io>
'N' and 'D' phases are not supported by Perfetto. So I mapped it to
async events. This patch is improving the interface for arguments too.
Now you can select the type for you arguments. So the name can be a
string_view but the arguments can be a string.
The variadic template arguments are used to prevent any conversion code
which could not be optimized out for an empty function.
Change-Id: I1ad1927b5e3b63607a21df1351b1f5cfba50159c
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
It is quite hard to define always an end to a trace. A move only
token can do that. The drawback is that the token gets bigger but only
compile them for an avtivated category.
Change-Id: I88b47c5b47e4129b1cd402e89251b45fa126111c
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io>
The subcomponent manager is synchronizing some meta files with the item
library. The project storage is synchronizing types. Synchronizing both
is quite complicated. Moving the the functionality to the project
storage removes that synchronization task.
Task-number: QDS-10266
Change-Id: Icdf14fbe85d5c4891542acae85ebecf0ba77b45d
Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io>
Reviewed-by: Vikas Pachdha <vikas.pachdha@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
std::to_string is locale dependent. std::to_chars it not. Because some
of our supported compiler(libC++) don't support std::to_chars for float
we use the QString.
Change-Id: I9a8f5d1d9b769faca0a7ac2d0798b91ee6b814d2
Reviewed-by: Burak Hancerli <burak.hancerli@qt.io>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io>
If we import an indirect import can be added too. So if we remove that
import we have to remove the related indirect imports too.
Change-Id: I4cb09fdc8986c473db2a8194766778956bc7069a
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io>
It is only activated if the project storage is activated
Task-number: QDS-10578
Change-Id: Id93673eba470aa37a249072b3ef9e0231499095a
Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Otherwise we get constraint errors in the project storage later because
we try to insert a entry instead of updating it.
Change-Id: I25941a30c6d35e189153e49d5092e85ae0c7e683
Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This patch also contains the test data and updated test code for the
converters to test QDS prefixed version of .qmlproject file.
Task-number: QDS-10503
Change-Id: I496ba6f3d4d3cf90e75c2959c4196f4607677ea1
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io>
Reviewed-by: Aleksei German <aleksei.german@qt.io>
Sqlite adds an implicit transaction if no transaction is used. That can
be problematic if you use multiple statements but it is okay for one
read statement.
Write and read write statements should use immediate transactions
because the acquire the write lock. Otherwise the write lock is only
acquired as you try to write. From there it is much harder to recover.
Change-Id: I04b0be7447f2b82b6921738d789c33cbbaa8de6e
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io>
The new implementation doesn't require these colors to be stored in
external dependencies anymore, as auxiliary properties are used for
them instead.
Fixes: QDS-10496
Change-Id: Ie71408617259d1af73a45f327d4bdfa4f2fa3a2b
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
You can now use QList and QVarLenghtArray for values. The later is quite
interesting because it is not allocating for a provided capacity.
So you can now write:
statement.valuesWithTransaction<QVarLenghtArray<int, 1024>>();
And in almost all case no expensive memory is allocated. With the help
of NRVO there should be no copy too.
That is very useful for temporary values which are transformed into a
different type.
The capacity changed to an template parameter too:
statement.valuesWithTransaction<int, 1024>();
That is more clear than before:
statement.valuesWithTransaction<int>(1024);
Change-Id: I6d8d10ed9db0cc37f0579353a416e36e23c30415
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
To share the code TaskQueue is introduced. The Thread and the
synchronization code is moved into TaskQueue. Only a dispatch and cean
must be implemented in the callback.
Change-Id: I19c85c891ef700aae85b54630714555e862200a4
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io>
The thread will be stopped after 10min. And then started if needed.
Change-Id: I66f64081353fa4f24c7927139d1676ee8de85679
Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Sometimes we want to have the dot properties instead of the
value(readonly) properties.
CompoundPropertyMetaInfos inflateValueProperties(PropertyMetaInfos
properties);
CompoundPropertyMetaInfos
inflateValueAndReadOnlyProperties(PropertyMetaInfos properties);
are removing the value proeprties and adding the dot properties if the
property type has properties.
Task-number: QDS-10472
Change-Id: Ia2291f77f1b38bbe62d71319bfa28cf545cbef18
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io>
Dot and dotdot properties can be gotten but three dots or more are not
supported.
Task-number: QDS-10472
Change-Id: I5e05405cd8ce80bc321dd78b2f74158832fed0bb
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Dot and dotdot properties are supported but not three or more dot
properties.
Task-number: QDS-10472
Change-Id: Ib5e40bfca470fe7520c9caacf0f469892bb73f7c
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io>
If the project storage works we can access if a type is a value,
reference, sequence or non of the above.
We can even test of values has properties like QFont etc.. That is
removing quite some heuristic code.
Change-Id: Ie3447d99931c6784db178e4b48f7d2f9a4f646fc
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Vikas Pachdha <vikas.pachdha@qt.io>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io>
A simple store for editor path in the project storage. So we can inquire
the path for every type. The storage is synchronized per directory. So
only entries with the updated directory id are affected.
Task-number: QDS-10391
Change-Id: Ic4d0ce17eedd374ade56abd7cab08f2b7a9830c6
Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
The update is walking a path which is provided by the
QmlDesignerProjectManager paths which ends to Pane.qml or Specifics.qml.
From that paths the module and type name is extracted. That data is
synchronized with the ProjectStorage. If no directory was changed it
will skip that directory. It will to collect the directory id to update
the storage per directory.
Task-number: QDS-10390
Change-Id: I3aaf5528133cf5e5c15f38a9720fbbf540d24eca
Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
It is not very useful here and adds a warning for every test.
Change-Id: Iaf75385f90ebbe3d0ac9a306328ba56c489ea6cf
Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io>
Reviewed-by: Marco Bubke <marco.bubke@qt.io>
The cast function is now returning an invalid variant if the meta info
is invalid. It is too not anymore converting the value magically.
Task-number: QDS-10290
Change-Id: I125aab9ac46c9ac0605364ede32fb1a10d20cd89
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
It used the size of the destination string but it had to use the size of
the appended string to inquire the maximum required size.
Change-Id: I1c910abab0ac60ed5fec1b3dc3a358e438532281
Reviewed-by: Vikas Pachdha <vikas.pachdha@qt.io>
Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io>
The IsEmpty and IsNull matcher have been extended to be more generic.
QVaraint matcher have been added.
Task-number: QDS-10290
Change-Id: I34fcb0571190dd37e7706587ee617e1301f9f841
Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io>
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>