Removed the 'content' directory, and placed all images into a 'pics'
directory.
CMakeLists.txt is now also using qt_add_qml_module()
Pick-to: 6.2
Change-Id: I673b7adea1832f304003f95e171118b0822b3c83
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
If we build an application bundle we cannot rely on the relative path
between the application's and the shared module's output directories.
This is somewhat ugly, but as we don't have a comprehensive solution for
building application bundles, yet, it's the best we can do right now.
In order for the shared bundle to be loaded from the PlugIns directory,
we need to add the PlugIns directory to the import path on macOS.
Pick-to: 6.2
Change-Id: I5b952420b4bb60af74886a140fa2c6a263d2f730
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
The qt_example_build_end() command tries to recursively find all build
system targets by descending into all source directories. Some sets of
examples re-use the same source directory multiple times with different
build directories, but this hides all but one of those re-used source
directories from the recursive search. This resulted in some targets
being missed, which in turn prevented qt_autogen_tools() from being
called on them. In top level builds, this meant AUTOMOC_EXECUTABLE
wasn't set, so CMake tried to verify the moc it wanted to use, which
doesn't exist for the first configure of a top level build, resulting
in a fatal error. Since we can't find all targets reliably with a
recursive search, manually handle the ones that could be missed.
There was a similar problem with qt_autogen_tools() not being called
for a target created to compile a doc snippet. The error message is
the same as the case above, the cause is again AUTOMOC_EXECUTABLE
not being set, but for a different reason. Apply the same fix and
call it manually, which should have been the case originally.
Fixes: QTBUG-96118
Fixes: QTBUG-96159
Pick-to: 6.2
Change-Id: I079c696cf74f77d7caa2c59e6263d3fb1c55d20e
Reviewed-by: Maximilian Goldstein <max.goldstein@qt.io>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Turning the project structure to be inline with Ulf's ideas.
Such as using qt_add_qml_module().
Previously the path to 5_heart.png and 9_club.png were broken.
This patch updates the path in the qml file, in order to make sure that
the resource is actually loaded.
It also adds a CMakeLists.txt, since it didn't already have one.
Pick-to: 6.2
Change-Id: I4b2ffbfcfff7d2d63d7aab9fd7b40f77c1a1073c
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
The XmlHttpRequest example contains a lot of unnecessary code, and I
felt that most of it could just be removed.
The point of the example project is to showcase how to use the
XMLHttpRequest javascript object to make requests.
Which is why I felt that we could remove any outside dependencies for
the project (like the LauncherList from the 'quick/shared' directory),
and reduce the amount of components down to the minimum.
Fixes: QTBUG-95734
Pick-to: 6.2
Change-Id: I9b062f4d7e942db4a2669a8c65f7488aa4a54740
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Removing the directory 'localstorage' that is inside the top-level
'localstorage' directory, and moving the content one level up in the
file hierarchy.
Pick-to: 6.2
Change-Id: I97cf1ff92be9860d9a92bce66c88af927618e2b0
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
* QtLabsPlatform has its own documentation project, but its source
directory was pulled into QtQuick docs, causing duplicate generation
and warnings.
* Fix \snippet paths for files that were renamed/moved around.
* Clean up .qdocconf files, use the {,} syntax to set identical values
for multiple variables.
* Fix incorrect \sa link.
Pick-to: 6.2
Fixes: QTBUG-96125
Change-Id: I4c83787ac23a5b40019c74d46ee87c968a8d4907
Reviewed-by: Venugopal Shivashankar <Venugopal.Shivashankar@qt.io>
The add_subdirectory("../shared" "shared") pattern used by these
examples seems to somehow trigger an AUTOMOC-related generation error.
The cause is not currently known, so this change temporarily disables
those tests until a proper fix can be found.
Task-number: QTBUG-96159
Change-Id: I2525b77d0a25c3e3191ae2956857acabc0aedbf5
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
(cherry picked from commit d83c303b95)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
The order they are shown in the grid is not important; but users should
be able to run any of these qml files directly without building the
example, and appropriate names make the "right one" easier to find.
Task-number: QTBUG-95739
Pick-to: 6.2
Change-Id: I9751b52ce80bc08e12919ca3396c9d428d700a04
Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Also move the QML files out of the "content" subdirectory in order to
avoid the directory import.
Pick-to: 6.2
Change-Id: I84a1f5ef1a45e5098ec3213c6fbce06346f3606a
Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Drop the confusing alias mangling on all the QML files. Instead move
them into the base "shapes" directory. Also, use a QML module in CMake
and use the "shared" module as intended.
Pick-to: 6.2
Change-Id: I6a8fc3f2b2f86f58a54e188cf83ec7e2d4e8f468
Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
We don't need to use pro2cmake anymore here.
Pick-to: 6.2
Change-Id: Iba8bac70c1fe31e56bf9680608913cc2c336f946
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
The FileSelector.qml component for some reason were never added to the
qrc file, which meant that it didn't exist in the eyes of qmake.
It should now be possible to run the program.
Pick-to: 6.2
Change-Id: Iaab67860123e926456c99b775449648f5d8e7c3c
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
In this case it really makes no sense to use a shared directory because
we want to show the progressive changes between the different versions.
It's actually important to note that we're adding the pictures one by
one. Therefore, the shared directory is dissolved and the pictures added
duplicated into the respective versions of samegame.
Furthermore, moving the code into a "content" directory is a bad idea
because it complicates the import logic. We don't want to make the
"content" directory its own QML module. We might move samegame.qml into
the "content" directory, too, and apply some path wrangling to make it
work, but it's really not worth it here.
Pick-to: 6.2
Change-Id: Ifc45f48832596377c21bc6ef55e918ef487bc94e
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Before this change, I tested the following configurations / scenarios
(1) shared Qt + qmake + macOS bundle -> works
(2) shared Qt + CMake + macOS bundle -> broken
(3) static Qt + qmake + macOS bundle -> broken
(4) static Qt + CMake + macOS bundle -> works
(2) was broken because the shared qml plugin is not located in the
expected location (see below)
(3) was broken because qmake needs a lot of error-prone boilerplate
to ensure static qml plugin building and linking works.
The change fixes the example to build and run successfully in case
(2).
Tested the following scenarios on macOS with the change
shared Qt + qmake + macOS bundle -> works
shared Qt + CMake + macOS bundle -> works
shared Qt + qmake + no bundle -> works
shared Qt + CMake + no bundle -> works
static Qt + qmake -> still broken
static Qt + CMake -> works
To make shared qml plugins be found in a macOS bundle, we need to copy
the qmldir and plugin under the bundle's PlugIns subfolder, because
the application adds that as the expected qml import path for macOS.
This basically mimics what the qmake project does with
QMAKE_BUNDLE_DATA.
The change also cleans up the CMake projects a bit so they don't link
PUBLIC-ly against dependencies, install the plugin under a more
sensible location and don't needlessly setup package finding and other
boilerplate that's done in the parent project.
The change also cleans up the qmake projects to adjust to not pollute
the macos bundle dir with static plugin files.
Amends 9e1d2a0eb1
Pick-to: 6.2
Change-Id: I45bb699a67adf598587350a03f778291fad3f850
Reviewed-by: Craig Scott <craig.scott@qt.io>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Remove the "content" subdirectories. They just add noise.
Pick-to: 6.2
Change-Id: Iae6bf7d91b6804294673be8966e30b11caae0654
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
The qmake and qmlproject files are adapted to use the "shared" module,
too.
Pick-to: 6.2
Change-Id: I5fc4895416357ba202528b155581b1b5a880a68d
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
The shared code becomes its own module. Due to the ${PROJECT_NAME} trick
it should be possible to include it multiple times, in different
examples.
Pick-to: 6.2
Change-Id: I78cc3211f67fae9a713320fae4041898e6a397ed
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Oliver Eftevaag <oliver.eftevaag@qt.io>
Replacing a custom made slider component with a qqc2 slider.
Task-number: QTBUG-95738
Pick-to: 6.2
Change-Id: I407307a3769a0c9821d311189ed40b0d48dab4d3
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Changing the example to use qt quick controls where it makes sense
Task-number: QTBUG-95739
Pick-to: 6.2
Change-Id: Id0df227657693234de4481c2316dc6c3e0545043
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Updating the example to use qt quick controls 2 where it makes sense, as
well as copyright headers.
Task-number: QTBUG-95737
Pick-to: 6.2
Change-Id: Ie22ab8551926916abd0a478adc16d1d4daeb13ad
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Now that we've moved qtquickcontrols2 into the qtdeclarative submodule.
We want our examples to simply use qqc2 controls, rather than custom
made buttons and other controls.
This example used a custom made button component, which this patch will
replace with qqc2.
It will also use qqc2 in other places where it makes sense, like replacing
a TextEdit with a qqc2 TextArea, and Text components with qqc2 Labels.
Task-number: QTBUG-95733
Pick-to: 6.2
Change-Id: Ic733cd592cd10ef2cf45058aaf08a0f6b2f5bd2c
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
This patch changes the external drag and drop example to use qqc2
checkboxes instead of a custom made component.
It also changes the position of the checkbox in order to avoid having
the label text overlap with it.
Task-number: QTBUG-95736
Pick-to: 6.2
Change-Id: If3e798ea0ccd64921138690c7599876ec0584038
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Take the most obvious candidates, to which users typically turn
when getting started with ShaderEffect or QSGMaterial:
shadereffects
scenegraph/custommaterial
scenegraph/twotextureproviders
As with the parent patch that ports and updates embeddedinwidgets and
quickwidget/qquickviewcomparison to use the proper CMake machinery, we
still need to keep the .qsb files for the sake of qmake. compile.bat and
similar scripts are however removed now. With CMake the .qsb files are
not needed and are autogenerated at build time. Once qmake support
disappears from the examples, the .qsb files can be removed as well.
Pick-to: 6.2
Change-Id: I879354eef2e2179dcd268c9ae9f1402e1eaef379
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
For qmake we have no choice but to ship the .qsb files, whereas with
CMake we now rely on qt6_add_shaders.
Pick-to: 6.2
Change-Id: I9bb64a3ffd01cda84fca5a0f7def270975bf71aa
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
This is a pre-requisite to being able to make
qt6_qml_type_registration() an internal rather than public command.
Not all examples have been updated, only those that were using the
qt6_qml_type_registration() command.
Task-number: QTBUG-95093
Pick-to: 6.2
Change-Id: I3f1814a29af608461daa90477eca0aa2304eb9d1
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Some examples were still using the old "add as ordinary resources"
approach for QML modules, others needed adjustment to the subdirectory
structure to better reflect the URI structure of the QML modules
involved.
Task-number: QTBUG-95144
Pick-to: 6.2
Change-Id: Ie3399410cf6df491eb1e7b4a589ca26c577d82a0
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
In the "Delegates" page of the gallery example the user is allowed to
swipe over the available `SwipeDelegateComponent`s to show a 'remove'
button, which allows the removal of that item from the containing list
when pressed.
When this happens, an animation is played.
In the code, the animation was attached to the signal handler,
as follows:
```
ListView.onRemove: SequentialAnimation {
...
}
```
This form of attachment has been deprecated as of
Qt 6.1.0, in commit 6eb35df60e, in favor of creating a stand-alone
object and calling the relevant slot from the signal handler,
generating a series of warning when the attachment happens
during the creation of the page.
This patch updates the connection to the new format, avoiding
the generation of the warnings.
Pick-to: 6.2 6.1
Fixes: QTBUG-95562
Change-Id: Ib67cb9b8703dad427c49475c00791fdd5d1b0669
Reviewed-by: Paul Wicking <paul.wicking@qt.io>
The new default is now controlled via a new QT_QML_OUTPUT_DIRECTORY
variable. If that isn't set, the fallback assumes the source directory
structure follows the URI structure and uses
${CMAKE_CURRENT_BINARY_DIR} instead. This pattern means more projects
will have working import paths for qmllint and possibly other tools
out of the box. There should also be fewer cases where the
OUTPUT_DIRECTORY option needs to be used in calls to
qt6_add_qml_module(). The QT_QML_OUTPUT_DIRECTORY variable facilitates
the scenario where QML modules might be distributed across different
parts of the source directory hierarchy, but once collected under a
common base point defined by QT_QML_OUTPUT_DIRECTORY, they form a
coherent set of QML modules whose subdirectory structure below that
base point follows their TARGET_PATH.
Fixes: QTBUG-94164
Fixes: QTBUG-95081
Pick-to: 6.2
Change-Id: I82864c361a2b34f7f1484cdbda0d9b64b34b9950
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
The type is immediately visible from the right hand side then.
Change-Id: Ifc1a15e3eea9b5a91ff8647f759d207a0ee221b8
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
It's a static method. It should be called statically.
Change-Id: I15fc8948988b0a2c0a30f8699949e06c66d92fdf
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
The imageelements examples depended on URLs being resolved
relative to the file where it was declared, but in Qt 6
this was changed. Since the source is actually resolved
inside MyBorderImage, which is in content/, we would end
up trying to resolve content/content/foo.png.
To avoid having code depend on the location of types it is
using, URLs have to be packed in Qt.resolvedUrl() in Qt 6.
Change-Id: I16e203e92b3b4c7c573dcdb85dcd556f2103ab80
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
The existing CMake API for qml modules had a number of
shortcomings. Refactor it to achieve the following:
- Clearly separate public and internal aspects.
- Re-use code from qtbase for adding plugins and module
targets rather than reimplementing close variations.
- Provide more robust and complete support for qmllint,
qmlcachegen and automatic generation of qmldir files.
- Reduce the steps needed for more common scenarios.
- Encourage the use of separate backing library and plugin
targets.
- Automatically generate the plugin class .cpp file where
possible.
- Specify .qml files directly through qml-specific API
elements rather than assuming they can be extracted
out of a set of resources.
[ChangeLog][QtQml] The qml CMake API has changed from 6.1
and is now out of Technical Preview status. The most
notable change is that .qml files should no longer be
specified as resources, there is dedicated handling for
them in the qt6_add_qml_module(). A related change is
that the qt6_target_qml_files() command has been replaced
by qt6_target_qml_sources(). More complete integration
with qmlcachegen, qmllint and qmldir generation is also
part of the CMake API.
Fixes: QTBUG-91621
Task-number: QTBUG-82598
Task-number: QTBUG-88763
Task-number: QTBUG-89274
Task-number: QTBUG-91444
Change-Id: I25aae1b0e89890394dfe2ba2824008164b2ca8d9
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>