diff --git a/Documents - Shortcut.lnk b/Documents - Shortcut.lnk new file mode 100644 index 0000000000000000000000000000000000000000..ec09342eca0960aff69e4c9a2321c14758cefd9a Binary files /dev/null and b/Documents - Shortcut.lnk differ diff --git a/deployment_test/D3Dcompiler_47.dll b/deployment_test/D3Dcompiler_47.dll new file mode 100644 index 0000000000000000000000000000000000000000..56512f565030db171e0aae7b9952a35907a187ab Binary files /dev/null and b/deployment_test/D3Dcompiler_47.dll differ diff --git a/deployment_test/POETSvisualizer.exe b/deployment_test/POETSvisualizer.exe new file mode 100644 index 0000000000000000000000000000000000000000..5f31f2cf11b6d5a4c0711f75c263f566564dc416 Binary files /dev/null and b/deployment_test/POETSvisualizer.exe differ diff --git a/deployment_test/Qt/labs/qmlmodels/labsmodelsplugin.dll b/deployment_test/Qt/labs/qmlmodels/labsmodelsplugin.dll new file mode 100644 index 0000000000000000000000000000000000000000..f85722ce27d8f3651da7814fe81714f6d598f2ea Binary files /dev/null and b/deployment_test/Qt/labs/qmlmodels/labsmodelsplugin.dll differ diff --git a/deployment_test/Qt/labs/qmlmodels/plugins.qmltypes b/deployment_test/Qt/labs/qmlmodels/plugins.qmltypes new file mode 100644 index 0000000000000000000000000000000000000000..56f2f213ddfda043fb4bbabb5bf27fb8337c9a85 --- /dev/null +++ b/deployment_test/Qt/labs/qmlmodels/plugins.qmltypes @@ -0,0 +1,410 @@ +import QtQuick.tooling 1.2 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. +// +// This file was auto-generated by qmltyperegistrar. + +Module { + dependencies: [] + Component { + name: "QAbstractItemModel" + prototype: "QObject" + Enum { + name: "LayoutChangeHint" + values: [ + "NoLayoutChangeHint", + "VerticalSortHint", + "HorizontalSortHint" + ] + } + Enum { + name: "CheckIndexOption" + values: [ + "NoOption", + "IndexIsValid", + "DoNotUseParent", + "ParentIsInvalid" + ] + } + Signal { + name: "dataChanged" + Parameter { name: "topLeft"; type: "QModelIndex" } + Parameter { name: "bottomRight"; type: "QModelIndex" } + Parameter { name: "roles"; type: "QVector<int>" } + } + Signal { + name: "dataChanged" + Parameter { name: "topLeft"; type: "QModelIndex" } + Parameter { name: "bottomRight"; type: "QModelIndex" } + } + Signal { + name: "headerDataChanged" + Parameter { name: "orientation"; type: "Qt::Orientation" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "layoutChanged" + Parameter { name: "parents"; type: "QList<QPersistentModelIndex>" } + Parameter { name: "hint"; type: "QAbstractItemModel::LayoutChangeHint" } + } + Signal { + name: "layoutChanged" + Parameter { name: "parents"; type: "QList<QPersistentModelIndex>" } + } + Signal { name: "layoutChanged" } + Signal { + name: "layoutAboutToBeChanged" + Parameter { name: "parents"; type: "QList<QPersistentModelIndex>" } + Parameter { name: "hint"; type: "QAbstractItemModel::LayoutChangeHint" } + } + Signal { + name: "layoutAboutToBeChanged" + Parameter { name: "parents"; type: "QList<QPersistentModelIndex>" } + } + Signal { name: "layoutAboutToBeChanged" } + Signal { + name: "rowsAboutToBeInserted" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "rowsInserted" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "rowsAboutToBeRemoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "rowsRemoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "columnsAboutToBeInserted" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "columnsInserted" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "columnsAboutToBeRemoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "columnsRemoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { name: "modelAboutToBeReset" } + Signal { name: "modelReset" } + Signal { + name: "rowsAboutToBeMoved" + Parameter { name: "sourceParent"; type: "QModelIndex" } + Parameter { name: "sourceStart"; type: "int" } + Parameter { name: "sourceEnd"; type: "int" } + Parameter { name: "destinationParent"; type: "QModelIndex" } + Parameter { name: "destinationRow"; type: "int" } + } + Signal { + name: "rowsMoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + Parameter { name: "destination"; type: "QModelIndex" } + Parameter { name: "row"; type: "int" } + } + Signal { + name: "columnsAboutToBeMoved" + Parameter { name: "sourceParent"; type: "QModelIndex" } + Parameter { name: "sourceStart"; type: "int" } + Parameter { name: "sourceEnd"; type: "int" } + Parameter { name: "destinationParent"; type: "QModelIndex" } + Parameter { name: "destinationColumn"; type: "int" } + } + Signal { + name: "columnsMoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + Parameter { name: "destination"; type: "QModelIndex" } + Parameter { name: "column"; type: "int" } + } + Method { name: "submit"; type: "bool" } + Method { name: "revert" } + Method { name: "resetInternalData" } + Method { + name: "hasIndex" + type: "bool" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { + name: "hasIndex" + type: "bool" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + } + Method { + name: "index" + type: "QModelIndex" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { + name: "index" + type: "QModelIndex" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + } + Method { + name: "parent" + type: "QModelIndex" + Parameter { name: "child"; type: "QModelIndex" } + } + Method { + name: "sibling" + type: "QModelIndex" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + Parameter { name: "idx"; type: "QModelIndex" } + } + Method { + name: "rowCount" + type: "int" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { name: "rowCount"; type: "int" } + Method { + name: "columnCount" + type: "int" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { name: "columnCount"; type: "int" } + Method { + name: "hasChildren" + type: "bool" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { name: "hasChildren"; type: "bool" } + Method { + name: "data" + type: "QVariant" + Parameter { name: "index"; type: "QModelIndex" } + Parameter { name: "role"; type: "int" } + } + Method { + name: "data" + type: "QVariant" + Parameter { name: "index"; type: "QModelIndex" } + } + Method { + name: "setData" + type: "bool" + Parameter { name: "index"; type: "QModelIndex" } + Parameter { name: "value"; type: "QVariant" } + Parameter { name: "role"; type: "int" } + } + Method { + name: "setData" + type: "bool" + Parameter { name: "index"; type: "QModelIndex" } + Parameter { name: "value"; type: "QVariant" } + } + Method { + name: "headerData" + type: "QVariant" + Parameter { name: "section"; type: "int" } + Parameter { name: "orientation"; type: "Qt::Orientation" } + Parameter { name: "role"; type: "int" } + } + Method { + name: "headerData" + type: "QVariant" + Parameter { name: "section"; type: "int" } + Parameter { name: "orientation"; type: "Qt::Orientation" } + } + Method { + name: "fetchMore" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { + name: "canFetchMore" + type: "bool" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { + name: "flags" + type: "Qt::ItemFlags" + Parameter { name: "index"; type: "QModelIndex" } + } + Method { + name: "match" + type: "QModelIndexList" + Parameter { name: "start"; type: "QModelIndex" } + Parameter { name: "role"; type: "int" } + Parameter { name: "value"; type: "QVariant" } + Parameter { name: "hits"; type: "int" } + Parameter { name: "flags"; type: "Qt::MatchFlags" } + } + Method { + name: "match" + type: "QModelIndexList" + Parameter { name: "start"; type: "QModelIndex" } + Parameter { name: "role"; type: "int" } + Parameter { name: "value"; type: "QVariant" } + Parameter { name: "hits"; type: "int" } + } + Method { + name: "match" + type: "QModelIndexList" + Parameter { name: "start"; type: "QModelIndex" } + Parameter { name: "role"; type: "int" } + Parameter { name: "value"; type: "QVariant" } + } + } + Component { name: "QAbstractTableModel"; prototype: "QAbstractItemModel" } + Component { + file: "qqmldelegatecomponent_p.h" + name: "QQmlDelegateChoice" + defaultProperty: "delegate" + prototype: "QObject" + exports: ["Qt.labs.qmlmodels/DelegateChoice 1.0"] + exportMetaObjectRevisions: [0] + Property { name: "roleValue"; type: "QVariant" } + Property { name: "row"; type: "int" } + Property { name: "index"; type: "int" } + Property { name: "column"; type: "int" } + Property { name: "delegate"; type: "QQmlComponent"; isPointer: true } + Signal { name: "changed" } + } + Component { + file: "qqmldelegatecomponent_p.h" + name: "QQmlDelegateChooser" + defaultProperty: "choices" + prototype: "QQmlAbstractDelegateComponent" + exports: ["Qt.labs.qmlmodels/DelegateChooser 1.0"] + exportMetaObjectRevisions: [0] + Property { name: "role"; type: "string" } + Property { name: "choices"; type: "QQmlDelegateChoice"; isList: true; isReadonly: true } + } + Component { + file: "qqmltablemodel_p.h" + name: "QQmlTableModel" + defaultProperty: "columns" + prototype: "QAbstractTableModel" + exports: ["Qt.labs.qmlmodels/TableModel 1.0"] + exportMetaObjectRevisions: [0] + Property { name: "columnCount"; type: "int"; isReadonly: true } + Property { name: "rowCount"; type: "int"; isReadonly: true } + Property { name: "rows"; type: "QVariant" } + Property { name: "columns"; type: "QQmlTableModelColumn"; isList: true; isReadonly: true } + Method { + name: "appendRow" + Parameter { name: "row"; type: "QVariant" } + } + Method { name: "clear" } + Method { + name: "getRow" + type: "QVariant" + Parameter { name: "rowIndex"; type: "int" } + } + Method { + name: "insertRow" + Parameter { name: "rowIndex"; type: "int" } + Parameter { name: "row"; type: "QVariant" } + } + Method { + name: "moveRow" + Parameter { name: "fromRowIndex"; type: "int" } + Parameter { name: "toRowIndex"; type: "int" } + Parameter { name: "rows"; type: "int" } + } + Method { + name: "moveRow" + Parameter { name: "fromRowIndex"; type: "int" } + Parameter { name: "toRowIndex"; type: "int" } + } + Method { + name: "removeRow" + Parameter { name: "rowIndex"; type: "int" } + Parameter { name: "rows"; type: "int" } + } + Method { + name: "removeRow" + Parameter { name: "rowIndex"; type: "int" } + } + Method { + name: "setRow" + Parameter { name: "rowIndex"; type: "int" } + Parameter { name: "row"; type: "QVariant" } + } + Method { + name: "data" + type: "QVariant" + Parameter { name: "index"; type: "QModelIndex" } + Parameter { name: "role"; type: "string" } + } + Method { + name: "setData" + type: "bool" + Parameter { name: "index"; type: "QModelIndex" } + Parameter { name: "role"; type: "string" } + Parameter { name: "value"; type: "QVariant" } + } + } + Component { + file: "qqmltablemodelcolumn_p.h" + name: "QQmlTableModelColumn" + prototype: "QObject" + exports: ["Qt.labs.qmlmodels/TableModelColumn 1.0"] + exportMetaObjectRevisions: [0] + Property { name: "display"; type: "QJSValue" } + Property { name: "setDisplay"; type: "QJSValue" } + Property { name: "decoration"; type: "QJSValue" } + Property { name: "setDecoration"; type: "QJSValue" } + Property { name: "edit"; type: "QJSValue" } + Property { name: "setEdit"; type: "QJSValue" } + Property { name: "toolTip"; type: "QJSValue" } + Property { name: "setToolTip"; type: "QJSValue" } + Property { name: "statusTip"; type: "QJSValue" } + Property { name: "setStatusTip"; type: "QJSValue" } + Property { name: "whatsThis"; type: "QJSValue" } + Property { name: "setWhatsThis"; type: "QJSValue" } + Property { name: "font"; type: "QJSValue" } + Property { name: "setFont"; type: "QJSValue" } + Property { name: "textAlignment"; type: "QJSValue" } + Property { name: "setTextAlignment"; type: "QJSValue" } + Property { name: "background"; type: "QJSValue" } + Property { name: "setBackground"; type: "QJSValue" } + Property { name: "foreground"; type: "QJSValue" } + Property { name: "setForeground"; type: "QJSValue" } + Property { name: "checkState"; type: "QJSValue" } + Property { name: "setCheckState"; type: "QJSValue" } + Property { name: "accessibleText"; type: "QJSValue" } + Property { name: "setAccessibleText"; type: "QJSValue" } + Property { name: "accessibleDescription"; type: "QJSValue" } + Property { name: "setAccessibleDescription"; type: "QJSValue" } + Property { name: "sizeHint"; type: "QJSValue" } + Property { name: "setSizeHint"; type: "QJSValue" } + Signal { name: "indexChanged" } + } +} diff --git a/deployment_test/Qt/labs/qmlmodels/qmldir b/deployment_test/Qt/labs/qmlmodels/qmldir new file mode 100644 index 0000000000000000000000000000000000000000..9c735711c40041a9816e21866695ac233b47de1c --- /dev/null +++ b/deployment_test/Qt/labs/qmlmodels/qmldir @@ -0,0 +1,3 @@ +module Qt.labs.qmlmodels +plugin labsmodelsplugin +classname QtQmlLabsModelsPlugin diff --git a/deployment_test/Qt5Charts.dll b/deployment_test/Qt5Charts.dll new file mode 100644 index 0000000000000000000000000000000000000000..947d1a542c9c0d4b7256c81c68d74d61b27639a8 Binary files /dev/null and b/deployment_test/Qt5Charts.dll differ diff --git a/deployment_test/Qt5Core.dll b/deployment_test/Qt5Core.dll new file mode 100644 index 0000000000000000000000000000000000000000..83e471733d2f8dce2050891e06cd0219e29c2512 Binary files /dev/null and b/deployment_test/Qt5Core.dll differ diff --git a/deployment_test/Qt5DataVisualization.dll b/deployment_test/Qt5DataVisualization.dll new file mode 100644 index 0000000000000000000000000000000000000000..e940c02f8fbb9308bf8d59733add45ab96c07c8b Binary files /dev/null and b/deployment_test/Qt5DataVisualization.dll differ diff --git a/deployment_test/Qt5Gui.dll b/deployment_test/Qt5Gui.dll new file mode 100644 index 0000000000000000000000000000000000000000..024bb6f1877e63f81d2f306819a0fd7b559681e3 Binary files /dev/null and b/deployment_test/Qt5Gui.dll differ diff --git a/deployment_test/Qt5Network.dll b/deployment_test/Qt5Network.dll new file mode 100644 index 0000000000000000000000000000000000000000..7fefb05630c28947005fd567af30f37553fce4e7 Binary files /dev/null and b/deployment_test/Qt5Network.dll differ diff --git a/deployment_test/Qt5Qml.dll b/deployment_test/Qt5Qml.dll new file mode 100644 index 0000000000000000000000000000000000000000..a6d27ae3dd7266dfb67cd6cd1617609eb080723d Binary files /dev/null and b/deployment_test/Qt5Qml.dll differ diff --git a/deployment_test/Qt5QmlModels.dll b/deployment_test/Qt5QmlModels.dll new file mode 100644 index 0000000000000000000000000000000000000000..4b0b835087a045e6ea371dd7e49af113d17e3b6e Binary files /dev/null and b/deployment_test/Qt5QmlModels.dll differ diff --git a/deployment_test/Qt5QmlWorkerScript.dll b/deployment_test/Qt5QmlWorkerScript.dll new file mode 100644 index 0000000000000000000000000000000000000000..bd445ebf75d786113f69df25763590be8bba7b3e Binary files /dev/null and b/deployment_test/Qt5QmlWorkerScript.dll differ diff --git a/deployment_test/Qt5Quick.dll b/deployment_test/Qt5Quick.dll new file mode 100644 index 0000000000000000000000000000000000000000..b69b38a98dc4df20737ff1a580b5939d2022606f Binary files /dev/null and b/deployment_test/Qt5Quick.dll differ diff --git a/deployment_test/Qt5QuickControls2.dll b/deployment_test/Qt5QuickControls2.dll new file mode 100644 index 0000000000000000000000000000000000000000..ae926778206e435319473580bce9945843b27f6e Binary files /dev/null and b/deployment_test/Qt5QuickControls2.dll differ diff --git a/deployment_test/Qt5QuickTemplates2.dll b/deployment_test/Qt5QuickTemplates2.dll new file mode 100644 index 0000000000000000000000000000000000000000..1e27d7baf955fd02e19ce1c82a952464581eb197 Binary files /dev/null and b/deployment_test/Qt5QuickTemplates2.dll differ diff --git a/deployment_test/Qt5RemoteObjects.dll b/deployment_test/Qt5RemoteObjects.dll new file mode 100644 index 0000000000000000000000000000000000000000..f24d470b2979bee238ca490ee8084ca3cd348482 Binary files /dev/null and b/deployment_test/Qt5RemoteObjects.dll differ diff --git a/deployment_test/Qt5Svg.dll b/deployment_test/Qt5Svg.dll new file mode 100644 index 0000000000000000000000000000000000000000..c7fafcd5ffc53373cc0567d467454a2212354de7 Binary files /dev/null and b/deployment_test/Qt5Svg.dll differ diff --git a/deployment_test/Qt5Widgets.dll b/deployment_test/Qt5Widgets.dll new file mode 100644 index 0000000000000000000000000000000000000000..0f7cbc351abab89df722c66ba6196800e7ebffb3 Binary files /dev/null and b/deployment_test/Qt5Widgets.dll differ diff --git a/deployment_test/QtCharts/plugins.qmltypes b/deployment_test/QtCharts/plugins.qmltypes new file mode 100644 index 0000000000000000000000000000000000000000..ba6015f0d3a5818b57b661a9e9c228160daba905 --- /dev/null +++ b/deployment_test/QtCharts/plugins.qmltypes @@ -0,0 +1,3134 @@ +import QtQuick.tooling 1.2 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. +// +// This file was auto-generated by: +// 'qmlplugindump -nonrelocatable -qapp QtCharts 2.14' + +Module { + dependencies: ["QtQuick 2.0"] + Component { + name: "QAbstractItemModel" + prototype: "QObject" + exports: [ + "QtCharts/AbstractItemModel 1.0", + "QtCharts/AbstractItemModel 2.0" + ] + isCreatable: false + exportMetaObjectRevisions: [0, 0] + Enum { + name: "LayoutChangeHint" + values: { + "NoLayoutChangeHint": 0, + "VerticalSortHint": 1, + "HorizontalSortHint": 2 + } + } + Enum { + name: "CheckIndexOption" + values: { + "NoOption": 0, + "IndexIsValid": 1, + "DoNotUseParent": 2, + "ParentIsInvalid": 4 + } + } + Signal { + name: "dataChanged" + Parameter { name: "topLeft"; type: "QModelIndex" } + Parameter { name: "bottomRight"; type: "QModelIndex" } + Parameter { name: "roles"; type: "QVector<int>" } + } + Signal { + name: "dataChanged" + Parameter { name: "topLeft"; type: "QModelIndex" } + Parameter { name: "bottomRight"; type: "QModelIndex" } + } + Signal { + name: "headerDataChanged" + Parameter { name: "orientation"; type: "Qt::Orientation" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "layoutChanged" + Parameter { name: "parents"; type: "QList<QPersistentModelIndex>" } + Parameter { name: "hint"; type: "QAbstractItemModel::LayoutChangeHint" } + } + Signal { + name: "layoutChanged" + Parameter { name: "parents"; type: "QList<QPersistentModelIndex>" } + } + Signal { name: "layoutChanged" } + Signal { + name: "layoutAboutToBeChanged" + Parameter { name: "parents"; type: "QList<QPersistentModelIndex>" } + Parameter { name: "hint"; type: "QAbstractItemModel::LayoutChangeHint" } + } + Signal { + name: "layoutAboutToBeChanged" + Parameter { name: "parents"; type: "QList<QPersistentModelIndex>" } + } + Signal { name: "layoutAboutToBeChanged" } + Signal { + name: "rowsAboutToBeInserted" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "rowsInserted" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "rowsAboutToBeRemoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "rowsRemoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "columnsAboutToBeInserted" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "columnsInserted" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "columnsAboutToBeRemoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "columnsRemoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { name: "modelAboutToBeReset" } + Signal { name: "modelReset" } + Signal { + name: "rowsAboutToBeMoved" + Parameter { name: "sourceParent"; type: "QModelIndex" } + Parameter { name: "sourceStart"; type: "int" } + Parameter { name: "sourceEnd"; type: "int" } + Parameter { name: "destinationParent"; type: "QModelIndex" } + Parameter { name: "destinationRow"; type: "int" } + } + Signal { + name: "rowsMoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + Parameter { name: "destination"; type: "QModelIndex" } + Parameter { name: "row"; type: "int" } + } + Signal { + name: "columnsAboutToBeMoved" + Parameter { name: "sourceParent"; type: "QModelIndex" } + Parameter { name: "sourceStart"; type: "int" } + Parameter { name: "sourceEnd"; type: "int" } + Parameter { name: "destinationParent"; type: "QModelIndex" } + Parameter { name: "destinationColumn"; type: "int" } + } + Signal { + name: "columnsMoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + Parameter { name: "destination"; type: "QModelIndex" } + Parameter { name: "column"; type: "int" } + } + Method { name: "submit"; type: "bool" } + Method { name: "revert" } + Method { + name: "hasIndex" + type: "bool" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { + name: "hasIndex" + type: "bool" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + } + Method { + name: "index" + type: "QModelIndex" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { + name: "index" + type: "QModelIndex" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + } + Method { + name: "parent" + type: "QModelIndex" + Parameter { name: "child"; type: "QModelIndex" } + } + Method { + name: "sibling" + type: "QModelIndex" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + Parameter { name: "idx"; type: "QModelIndex" } + } + Method { + name: "rowCount" + type: "int" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { name: "rowCount"; type: "int" } + Method { + name: "columnCount" + type: "int" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { name: "columnCount"; type: "int" } + Method { + name: "hasChildren" + type: "bool" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { name: "hasChildren"; type: "bool" } + Method { + name: "data" + type: "QVariant" + Parameter { name: "index"; type: "QModelIndex" } + Parameter { name: "role"; type: "int" } + } + Method { + name: "data" + type: "QVariant" + Parameter { name: "index"; type: "QModelIndex" } + } + Method { + name: "setData" + type: "bool" + Parameter { name: "index"; type: "QModelIndex" } + Parameter { name: "value"; type: "QVariant" } + Parameter { name: "role"; type: "int" } + } + Method { + name: "setData" + type: "bool" + Parameter { name: "index"; type: "QModelIndex" } + Parameter { name: "value"; type: "QVariant" } + } + Method { + name: "headerData" + type: "QVariant" + Parameter { name: "section"; type: "int" } + Parameter { name: "orientation"; type: "Qt::Orientation" } + Parameter { name: "role"; type: "int" } + } + Method { + name: "headerData" + type: "QVariant" + Parameter { name: "section"; type: "int" } + Parameter { name: "orientation"; type: "Qt::Orientation" } + } + Method { + name: "fetchMore" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { + name: "canFetchMore" + type: "bool" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { + name: "flags" + type: "Qt::ItemFlags" + Parameter { name: "index"; type: "QModelIndex" } + } + Method { + name: "match" + type: "QModelIndexList" + Parameter { name: "start"; type: "QModelIndex" } + Parameter { name: "role"; type: "int" } + Parameter { name: "value"; type: "QVariant" } + Parameter { name: "hits"; type: "int" } + Parameter { name: "flags"; type: "Qt::MatchFlags" } + } + Method { + name: "match" + type: "QModelIndexList" + Parameter { name: "start"; type: "QModelIndex" } + Parameter { name: "role"; type: "int" } + Parameter { name: "value"; type: "QVariant" } + Parameter { name: "hits"; type: "int" } + } + Method { + name: "match" + type: "QModelIndexList" + Parameter { name: "start"; type: "QModelIndex" } + Parameter { name: "role"; type: "int" } + Parameter { name: "value"; type: "QVariant" } + } + } + Component { + name: "QGraphicsObject" + defaultProperty: "children" + prototype: "QObject" + Property { name: "parent"; type: "QGraphicsObject"; isPointer: true } + Property { name: "opacity"; type: "double" } + Property { name: "enabled"; type: "bool" } + Property { name: "visible"; type: "bool" } + Property { name: "pos"; type: "QPointF" } + Property { name: "x"; type: "double" } + Property { name: "y"; type: "double" } + Property { name: "z"; type: "double" } + Property { name: "rotation"; type: "double" } + Property { name: "scale"; type: "double" } + Property { name: "transformOriginPoint"; type: "QPointF" } + Property { name: "effect"; type: "QGraphicsEffect"; isPointer: true } + Property { + name: "children" + type: "QDeclarativeListProperty<QGraphicsObject>" + isReadonly: true + } + Property { name: "width"; type: "double" } + Property { name: "height"; type: "double" } + } + Component { + name: "QGraphicsWidget" + defaultProperty: "children" + prototype: "QGraphicsObject" + Property { name: "palette"; type: "QPalette" } + Property { name: "font"; type: "QFont" } + Property { name: "layoutDirection"; type: "Qt::LayoutDirection" } + Property { name: "size"; type: "QSizeF" } + Property { name: "minimumSize"; type: "QSizeF" } + Property { name: "preferredSize"; type: "QSizeF" } + Property { name: "maximumSize"; type: "QSizeF" } + Property { name: "sizePolicy"; type: "QSizePolicy" } + Property { name: "focusPolicy"; type: "Qt::FocusPolicy" } + Property { name: "windowFlags"; type: "Qt::WindowFlags" } + Property { name: "windowTitle"; type: "string" } + Property { name: "geometry"; type: "QRectF" } + Property { name: "autoFillBackground"; type: "bool" } + Property { name: "layout"; type: "QGraphicsLayout"; isPointer: true } + Method { name: "close"; type: "bool" } + } + Component { + name: "QtCharts::DeclarativeAreaSeries" + prototype: "QtCharts::QAreaSeries" + exports: [ + "QtCharts/AreaSeries 1.0", + "QtCharts/AreaSeries 1.1", + "QtCharts/AreaSeries 1.2", + "QtCharts/AreaSeries 1.3", + "QtCharts/AreaSeries 1.4", + "QtCharts/AreaSeries 2.0" + ] + exportMetaObjectRevisions: [0, 1, 2, 3, 4, 4] + Property { name: "upperSeries"; type: "QtCharts::DeclarativeLineSeries"; isPointer: true } + Property { name: "lowerSeries"; type: "QtCharts::DeclarativeLineSeries"; isPointer: true } + Property { name: "axisX"; revision: 1; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisY"; revision: 1; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisXTop"; revision: 2; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisYRight"; revision: 2; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisAngular"; revision: 3; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisRadial"; revision: 3; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "borderWidth"; revision: 1; type: "double" } + Property { name: "brushFilename"; revision: 4; type: "string" } + Property { name: "brush"; revision: 4; type: "QBrush" } + Signal { + name: "axisXChanged" + revision: 1 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisYChanged" + revision: 1 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "borderWidthChanged" + revision: 1 + Parameter { name: "width"; type: "double" } + } + Signal { + name: "axisXTopChanged" + revision: 2 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisYRightChanged" + revision: 2 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisAngularChanged" + revision: 3 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisRadialChanged" + revision: 3 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { name: "brushChanged"; revision: 4 } + Signal { + name: "brushFilenameChanged" + revision: 4 + Parameter { name: "brushFilename"; type: "string" } + } + } + Component { + name: "QtCharts::DeclarativeAxes" + prototype: "QObject" + exports: [ + "QtCharts/DeclarativeAxes 1.0", + "QtCharts/DeclarativeAxes 2.0" + ] + isCreatable: false + exportMetaObjectRevisions: [0, 0] + Property { name: "axisX"; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisY"; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisXTop"; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisYRight"; type: "QtCharts::QAbstractAxis"; isPointer: true } + Signal { + name: "axisXChanged" + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisYChanged" + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisXTopChanged" + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisYRightChanged" + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + } + Component { + name: "QtCharts::DeclarativeBarSeries" + defaultProperty: "seriesChildren" + prototype: "QtCharts::QBarSeries" + exports: [ + "QtCharts/BarSeries 1.0", + "QtCharts/BarSeries 1.1", + "QtCharts/BarSeries 1.2", + "QtCharts/BarSeries 2.0" + ] + exportMetaObjectRevisions: [0, 1, 2, 2] + Property { name: "axisX"; revision: 1; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisY"; revision: 1; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisXTop"; revision: 2; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisYRight"; revision: 2; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "seriesChildren"; type: "QObject"; isList: true; isReadonly: true } + Signal { + name: "axisXChanged" + revision: 1 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisYChanged" + revision: 1 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisXTopChanged" + revision: 2 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisYRightChanged" + revision: 2 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Method { + name: "appendSeriesChildren" + Parameter { name: "list"; type: "QObject"; isList: true; isPointer: true } + Parameter { name: "element"; type: "QObject"; isPointer: true } + } + Method { + name: "at" + type: "DeclarativeBarSet*" + Parameter { name: "index"; type: "int" } + } + Method { + name: "append" + type: "DeclarativeBarSet*" + Parameter { name: "label"; type: "string" } + Parameter { name: "values"; type: "QVariantList" } + } + Method { + name: "insert" + type: "DeclarativeBarSet*" + Parameter { name: "index"; type: "int" } + Parameter { name: "label"; type: "string" } + Parameter { name: "values"; type: "QVariantList" } + } + Method { + name: "remove" + type: "bool" + Parameter { name: "barset"; type: "QBarSet"; isPointer: true } + } + Method { name: "clear" } + } + Component { + name: "QtCharts::DeclarativeBarSet" + prototype: "QtCharts::QBarSet" + exports: [ + "QtCharts/BarSet 1.0", + "QtCharts/BarSet 1.1", + "QtCharts/BarSet 1.4", + "QtCharts/BarSet 2.0" + ] + exportMetaObjectRevisions: [0, 0, 2, 2] + Property { name: "values"; type: "QVariantList" } + Property { name: "borderWidth"; revision: 1; type: "double" } + Property { name: "count"; type: "int"; isReadonly: true } + Property { name: "brushFilename"; revision: 2; type: "string" } + Signal { + name: "countChanged" + Parameter { name: "count"; type: "int" } + } + Signal { + name: "borderWidthChanged" + revision: 1 + Parameter { name: "width"; type: "double" } + } + Signal { + name: "brushFilenameChanged" + revision: 2 + Parameter { name: "brushFilename"; type: "string" } + } + Method { + name: "append" + Parameter { name: "value"; type: "double" } + } + Method { + name: "remove" + Parameter { name: "index"; type: "int" } + Parameter { name: "count"; type: "int" } + } + Method { + name: "remove" + Parameter { name: "index"; type: "int" } + } + Method { + name: "replace" + Parameter { name: "index"; type: "int" } + Parameter { name: "value"; type: "double" } + } + Method { + name: "at" + type: "double" + Parameter { name: "index"; type: "int" } + } + } + Component { + name: "QtCharts::DeclarativeBoxPlotSeries" + defaultProperty: "seriesChildren" + prototype: "QtCharts::QBoxPlotSeries" + exports: [ + "QtCharts/BoxPlotSeries 1.3", + "QtCharts/BoxPlotSeries 1.4", + "QtCharts/BoxPlotSeries 2.0" + ] + exportMetaObjectRevisions: [0, 1, 1] + Property { name: "axisX"; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisY"; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisXTop"; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisYRight"; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "seriesChildren"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "brushFilename"; revision: 1; type: "string" } + Signal { + name: "axisXChanged" + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisYChanged" + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisXTopChanged" + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisYRightChanged" + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "clicked" + Parameter { name: "boxset"; type: "DeclarativeBoxSet"; isPointer: true } + } + Signal { + name: "hovered" + Parameter { name: "status"; type: "bool" } + Parameter { name: "boxset"; type: "DeclarativeBoxSet"; isPointer: true } + } + Signal { + name: "pressed" + Parameter { name: "boxset"; type: "DeclarativeBoxSet"; isPointer: true } + } + Signal { + name: "released" + Parameter { name: "boxset"; type: "DeclarativeBoxSet"; isPointer: true } + } + Signal { + name: "doubleClicked" + Parameter { name: "boxset"; type: "DeclarativeBoxSet"; isPointer: true } + } + Signal { + name: "brushFilenameChanged" + revision: 1 + Parameter { name: "brushFilename"; type: "string" } + } + Method { + name: "appendSeriesChildren" + Parameter { name: "list"; type: "QObject"; isList: true; isPointer: true } + Parameter { name: "element"; type: "QObject"; isPointer: true } + } + Method { + name: "onHovered" + Parameter { name: "status"; type: "bool" } + Parameter { name: "boxset"; type: "QBoxSet"; isPointer: true } + } + Method { + name: "onClicked" + Parameter { name: "boxset"; type: "QBoxSet"; isPointer: true } + } + Method { + name: "onPressed" + Parameter { name: "boxset"; type: "QBoxSet"; isPointer: true } + } + Method { + name: "onReleased" + Parameter { name: "boxset"; type: "QBoxSet"; isPointer: true } + } + Method { + name: "onDoubleClicked" + Parameter { name: "boxset"; type: "QBoxSet"; isPointer: true } + } + Method { + name: "at" + type: "DeclarativeBoxSet*" + Parameter { name: "index"; type: "int" } + } + Method { + name: "append" + type: "DeclarativeBoxSet*" + Parameter { name: "label"; type: "string" } + Parameter { name: "values"; type: "QVariantList" } + } + Method { + name: "append" + Parameter { name: "box"; type: "DeclarativeBoxSet"; isPointer: true } + } + Method { + name: "insert" + type: "DeclarativeBoxSet*" + Parameter { name: "index"; type: "int" } + Parameter { name: "label"; type: "string" } + Parameter { name: "values"; type: "QVariantList" } + } + Method { + name: "remove" + type: "bool" + Parameter { name: "box"; type: "DeclarativeBoxSet"; isPointer: true } + } + Method { name: "clear" } + } + Component { + name: "QtCharts::DeclarativeBoxSet" + prototype: "QtCharts::QBoxSet" + exports: [ + "QtCharts/BoxSet 1.3", + "QtCharts/BoxSet 1.4", + "QtCharts/BoxSet 2.0" + ] + exportMetaObjectRevisions: [0, 1, 1] + Enum { + name: "ValuePositions" + values: { + "LowerExtreme": 0, + "LowerQuartile": 1, + "Median": 2, + "UpperQuartile": 3, + "UpperExtreme": 4 + } + } + Property { name: "values"; type: "QVariantList" } + Property { name: "label"; type: "string" } + Property { name: "count"; type: "int"; isReadonly: true } + Property { name: "brushFilename"; revision: 1; type: "string" } + Signal { name: "changedValues" } + Signal { + name: "changedValue" + Parameter { name: "index"; type: "int" } + } + Signal { + name: "brushFilenameChanged" + revision: 1 + Parameter { name: "brushFilename"; type: "string" } + } + Method { + name: "append" + Parameter { name: "value"; type: "double" } + } + Method { name: "clear" } + Method { + name: "at" + type: "double" + Parameter { name: "index"; type: "int" } + } + Method { + name: "setValue" + Parameter { name: "index"; type: "int" } + Parameter { name: "value"; type: "double" } + } + } + Component { + name: "QtCharts::DeclarativeCandlestickSeries" + defaultProperty: "seriesChildren" + prototype: "QtCharts::QCandlestickSeries" + exports: ["QtCharts/CandlestickSeries 2.2"] + exportMetaObjectRevisions: [0] + Property { name: "axisX"; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisY"; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisXTop"; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisYRight"; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "seriesChildren"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "brushFilename"; type: "string" } + Signal { + name: "axisXChanged" + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisYChanged" + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisXTopChanged" + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisYRightChanged" + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "clicked" + Parameter { name: "set"; type: "DeclarativeCandlestickSet"; isPointer: true } + } + Signal { + name: "hovered" + Parameter { name: "status"; type: "bool" } + Parameter { name: "set"; type: "DeclarativeCandlestickSet"; isPointer: true } + } + Signal { + name: "pressed" + Parameter { name: "set"; type: "DeclarativeCandlestickSet"; isPointer: true } + } + Signal { + name: "released" + Parameter { name: "set"; type: "DeclarativeCandlestickSet"; isPointer: true } + } + Signal { + name: "doubleClicked" + Parameter { name: "set"; type: "DeclarativeCandlestickSet"; isPointer: true } + } + Signal { + name: "brushFilenameChanged" + Parameter { name: "brushFilename"; type: "string" } + } + Method { + name: "appendSeriesChildren" + Parameter { name: "list"; type: "QObject"; isList: true; isPointer: true } + Parameter { name: "element"; type: "QObject"; isPointer: true } + } + Method { + name: "onClicked" + Parameter { name: "set"; type: "QCandlestickSet"; isPointer: true } + } + Method { + name: "onHovered" + Parameter { name: "status"; type: "bool" } + Parameter { name: "set"; type: "QCandlestickSet"; isPointer: true } + } + Method { + name: "onPressed" + Parameter { name: "set"; type: "QCandlestickSet"; isPointer: true } + } + Method { + name: "onReleased" + Parameter { name: "set"; type: "QCandlestickSet"; isPointer: true } + } + Method { + name: "onDoubleClicked" + Parameter { name: "set"; type: "QCandlestickSet"; isPointer: true } + } + Method { + name: "at" + type: "DeclarativeCandlestickSet*" + Parameter { name: "index"; type: "int" } + } + Method { + name: "append" + type: "bool" + Parameter { name: "set"; type: "DeclarativeCandlestickSet"; isPointer: true } + } + Method { + name: "remove" + type: "bool" + Parameter { name: "set"; type: "DeclarativeCandlestickSet"; isPointer: true } + } + Method { + name: "append" + type: "bool" + Parameter { name: "open"; type: "double" } + Parameter { name: "high"; type: "double" } + Parameter { name: "low"; type: "double" } + Parameter { name: "close"; type: "double" } + Parameter { name: "timestamp"; type: "double" } + } + Method { + name: "remove" + type: "bool" + Parameter { name: "timestamp"; type: "double" } + } + Method { + name: "insert" + type: "bool" + Parameter { name: "index"; type: "int" } + Parameter { name: "set"; type: "DeclarativeCandlestickSet"; isPointer: true } + } + Method { name: "clear" } + } + Component { + name: "QtCharts::DeclarativeCandlestickSet" + prototype: "QtCharts::QCandlestickSet" + exports: ["QtCharts/CandlestickSet 2.2"] + exportMetaObjectRevisions: [0] + Property { name: "brushFilename"; type: "string" } + Signal { + name: "brushFilenameChanged" + Parameter { name: "brushFilename"; type: "string" } + } + } + Component { + name: "QtCharts::DeclarativeCategoryAxis" + defaultProperty: "axisChildren" + prototype: "QtCharts::QCategoryAxis" + exports: [ + "QtCharts/CategoryAxis 1.1", + "QtCharts/CategoryAxis 2.0", + "QtCharts/CategoryAxis 2.1" + ] + exportMetaObjectRevisions: [0, 0, 1] + Enum { + name: "AxisLabelsPosition" + values: { + "AxisLabelsPositionCenter": 0, + "AxisLabelsPositionOnValue": 1 + } + } + Property { name: "axisChildren"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "labelsPosition"; revision: 1; type: "AxisLabelsPosition" } + Signal { + name: "labelsPositionChanged" + revision: 1 + Parameter { name: "position"; type: "AxisLabelsPosition" } + } + Method { + name: "append" + Parameter { name: "label"; type: "string" } + Parameter { name: "categoryEndValue"; type: "double" } + } + Method { + name: "remove" + Parameter { name: "label"; type: "string" } + } + Method { + name: "replace" + Parameter { name: "oldLabel"; type: "string" } + Parameter { name: "newLabel"; type: "string" } + } + Method { + name: "appendAxisChildren" + Parameter { name: "list"; type: "QObject"; isList: true; isPointer: true } + Parameter { name: "element"; type: "QObject"; isPointer: true } + } + } + Component { + name: "QtCharts::DeclarativeCategoryRange" + prototype: "QObject" + exports: ["QtCharts/CategoryRange 1.1", "QtCharts/CategoryRange 2.0"] + exportMetaObjectRevisions: [0, 0] + Property { name: "endValue"; type: "double" } + Property { name: "label"; type: "string" } + } + Component { + name: "QtCharts::DeclarativeChart" + defaultProperty: "data" + prototype: "QQuickItem" + exports: [ + "QtCharts/ChartView 1.0", + "QtCharts/ChartView 1.1", + "QtCharts/ChartView 1.2", + "QtCharts/ChartView 1.3", + "QtCharts/ChartView 2.0", + "QtCharts/ChartView 2.1" + ] + exportMetaObjectRevisions: [0, 1, 2, 3, 4, 5] + Enum { + name: "Theme" + values: { + "ChartThemeLight": 0, + "ChartThemeBlueCerulean": 1, + "ChartThemeDark": 2, + "ChartThemeBrownSand": 3, + "ChartThemeBlueNcs": 4, + "ChartThemeHighContrast": 5, + "ChartThemeBlueIcy": 6, + "ChartThemeQt": 7 + } + } + Enum { + name: "Animation" + values: { + "NoAnimation": 0, + "GridAxisAnimations": 1, + "SeriesAnimations": 2, + "AllAnimations": 3 + } + } + Enum { + name: "SeriesType" + values: { + "SeriesTypeLine": 0, + "SeriesTypeArea": 1, + "SeriesTypeBar": 2, + "SeriesTypeStackedBar": 3, + "SeriesTypePercentBar": 4, + "SeriesTypePie": 5, + "SeriesTypeScatter": 6, + "SeriesTypeSpline": 7, + "SeriesTypeHorizontalBar": 8, + "SeriesTypeHorizontalStackedBar": 9, + "SeriesTypeHorizontalPercentBar": 10, + "SeriesTypeBoxPlot": 11, + "SeriesTypeCandlestick": 12 + } + } + Property { name: "theme"; type: "Theme" } + Property { name: "animationOptions"; type: "Animation" } + Property { name: "animationDuration"; revision: 5; type: "int" } + Property { name: "animationEasingCurve"; revision: 5; type: "QEasingCurve" } + Property { name: "title"; type: "string" } + Property { name: "titleFont"; type: "QFont" } + Property { name: "titleColor"; type: "QColor" } + Property { name: "legend"; type: "QtCharts::QLegend"; isReadonly: true; isPointer: true } + Property { name: "count"; type: "int"; isReadonly: true } + Property { name: "backgroundColor"; type: "QColor" } + Property { name: "dropShadowEnabled"; type: "bool" } + Property { name: "backgroundRoundness"; revision: 3; type: "double" } + Property { + name: "margins" + revision: 2 + type: "QtCharts::DeclarativeMargins" + isReadonly: true + isPointer: true + } + Property { name: "plotArea"; revision: 1; type: "QRectF" } + Property { name: "plotAreaColor"; revision: 3; type: "QColor" } + Property { name: "axes"; revision: 2; type: "QAbstractAxis"; isList: true; isReadonly: true } + Property { name: "localizeNumbers"; revision: 4; type: "bool" } + Property { name: "locale"; revision: 4; type: "QLocale" } + Signal { name: "axisLabelsChanged" } + Signal { + name: "titleColorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "dropShadowEnabledChanged" + Parameter { name: "enabled"; type: "bool" } + } + Signal { name: "marginsChanged"; revision: 2 } + Signal { + name: "plotAreaChanged" + Parameter { name: "plotArea"; type: "QRectF" } + } + Signal { + name: "seriesAdded" + Parameter { name: "series"; type: "QAbstractSeries"; isPointer: true } + } + Signal { + name: "seriesRemoved" + Parameter { name: "series"; type: "QAbstractSeries"; isPointer: true } + } + Signal { name: "plotAreaColorChanged"; revision: 3 } + Signal { + name: "backgroundRoundnessChanged" + revision: 3 + Parameter { name: "diameter"; type: "double" } + } + Signal { name: "localizeNumbersChanged"; revision: 4 } + Signal { name: "localeChanged"; revision: 4 } + Signal { + name: "animationDurationChanged" + revision: 5 + Parameter { name: "msecs"; type: "int" } + } + Signal { + name: "animationEasingCurveChanged" + revision: 5 + Parameter { name: "curve"; type: "QEasingCurve" } + } + Signal { name: "needRender" } + Signal { name: "pendingRenderNodeMouseEventResponses" } + Method { + name: "series" + type: "QAbstractSeries*" + Parameter { name: "index"; type: "int" } + } + Method { + name: "series" + type: "QAbstractSeries*" + Parameter { name: "seriesName"; type: "string" } + } + Method { + name: "createSeries" + type: "QAbstractSeries*" + Parameter { name: "type"; type: "int" } + Parameter { name: "name"; type: "string" } + Parameter { name: "axisX"; type: "QAbstractAxis"; isPointer: true } + Parameter { name: "axisY"; type: "QAbstractAxis"; isPointer: true } + } + Method { + name: "createSeries" + type: "QAbstractSeries*" + Parameter { name: "type"; type: "int" } + Parameter { name: "name"; type: "string" } + Parameter { name: "axisX"; type: "QAbstractAxis"; isPointer: true } + } + Method { + name: "createSeries" + type: "QAbstractSeries*" + Parameter { name: "type"; type: "int" } + Parameter { name: "name"; type: "string" } + } + Method { + name: "createSeries" + type: "QAbstractSeries*" + Parameter { name: "type"; type: "int" } + } + Method { + name: "removeSeries" + Parameter { name: "series"; type: "QAbstractSeries"; isPointer: true } + } + Method { name: "removeAllSeries" } + Method { + name: "setAxisX" + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + Parameter { name: "series"; type: "QAbstractSeries"; isPointer: true } + } + Method { + name: "setAxisX" + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Method { + name: "setAxisY" + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + Parameter { name: "series"; type: "QAbstractSeries"; isPointer: true } + } + Method { + name: "setAxisY" + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Method { + name: "axisX" + type: "QAbstractAxis*" + Parameter { name: "series"; type: "QAbstractSeries"; isPointer: true } + } + Method { name: "axisX"; type: "QAbstractAxis*" } + Method { + name: "axisY" + type: "QAbstractAxis*" + Parameter { name: "series"; type: "QAbstractSeries"; isPointer: true } + } + Method { name: "axisY"; type: "QAbstractAxis*" } + Method { + name: "zoom" + Parameter { name: "factor"; type: "double" } + } + Method { name: "zoomIn"; revision: 5 } + Method { + name: "zoomIn" + revision: 5 + Parameter { name: "rectangle"; type: "QRectF" } + } + Method { name: "zoomOut"; revision: 5 } + Method { name: "zoomReset"; revision: 5 } + Method { name: "isZoomed"; revision: 5; type: "bool" } + Method { + name: "scrollLeft" + Parameter { name: "pixels"; type: "double" } + } + Method { + name: "scrollRight" + Parameter { name: "pixels"; type: "double" } + } + Method { + name: "scrollUp" + Parameter { name: "pixels"; type: "double" } + } + Method { + name: "scrollDown" + Parameter { name: "pixels"; type: "double" } + } + Method { + name: "mapToValue" + revision: 5 + type: "QPointF" + Parameter { name: "position"; type: "QPointF" } + Parameter { name: "series"; type: "QAbstractSeries"; isPointer: true } + } + Method { + name: "mapToValue" + revision: 5 + type: "QPointF" + Parameter { name: "position"; type: "QPointF" } + } + Method { + name: "mapToPosition" + revision: 5 + type: "QPointF" + Parameter { name: "value"; type: "QPointF" } + Parameter { name: "series"; type: "QAbstractSeries"; isPointer: true } + } + Method { + name: "mapToPosition" + revision: 5 + type: "QPointF" + Parameter { name: "value"; type: "QPointF" } + } + } + Component { + name: "QtCharts::DeclarativeHorizontalBarSeries" + defaultProperty: "seriesChildren" + prototype: "QtCharts::QHorizontalBarSeries" + exports: [ + "QtCharts/HorizontalBarSeries 1.1", + "QtCharts/HorizontalBarSeries 1.2", + "QtCharts/HorizontalBarSeries 2.0" + ] + exportMetaObjectRevisions: [1, 2, 2] + Property { name: "axisX"; revision: 1; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisY"; revision: 1; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisXTop"; revision: 2; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisYRight"; revision: 2; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "seriesChildren"; type: "QObject"; isList: true; isReadonly: true } + Signal { + name: "axisXChanged" + revision: 1 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisYChanged" + revision: 1 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisXTopChanged" + revision: 2 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisYRightChanged" + revision: 2 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Method { + name: "appendSeriesChildren" + Parameter { name: "list"; type: "QObject"; isList: true; isPointer: true } + Parameter { name: "element"; type: "QObject"; isPointer: true } + } + Method { + name: "at" + type: "DeclarativeBarSet*" + Parameter { name: "index"; type: "int" } + } + Method { + name: "append" + type: "DeclarativeBarSet*" + Parameter { name: "label"; type: "string" } + Parameter { name: "values"; type: "QVariantList" } + } + Method { + name: "insert" + type: "DeclarativeBarSet*" + Parameter { name: "index"; type: "int" } + Parameter { name: "label"; type: "string" } + Parameter { name: "values"; type: "QVariantList" } + } + Method { + name: "remove" + type: "bool" + Parameter { name: "barset"; type: "QBarSet"; isPointer: true } + } + Method { name: "clear" } + } + Component { + name: "QtCharts::DeclarativeHorizontalPercentBarSeries" + defaultProperty: "seriesChildren" + prototype: "QtCharts::QHorizontalPercentBarSeries" + exports: [ + "QtCharts/HorizontalPercentBarSeries 1.1", + "QtCharts/HorizontalPercentBarSeries 1.2", + "QtCharts/HorizontalPercentBarSeries 2.0" + ] + exportMetaObjectRevisions: [1, 2, 2] + Property { name: "axisX"; revision: 1; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisY"; revision: 1; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisXTop"; revision: 2; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisYRight"; revision: 2; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "seriesChildren"; type: "QObject"; isList: true; isReadonly: true } + Signal { + name: "axisXChanged" + revision: 1 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisYChanged" + revision: 1 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisXTopChanged" + revision: 2 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisYRightChanged" + revision: 2 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Method { + name: "appendSeriesChildren" + Parameter { name: "list"; type: "QObject"; isList: true; isPointer: true } + Parameter { name: "element"; type: "QObject"; isPointer: true } + } + Method { + name: "at" + type: "DeclarativeBarSet*" + Parameter { name: "index"; type: "int" } + } + Method { + name: "append" + type: "DeclarativeBarSet*" + Parameter { name: "label"; type: "string" } + Parameter { name: "values"; type: "QVariantList" } + } + Method { + name: "insert" + type: "DeclarativeBarSet*" + Parameter { name: "index"; type: "int" } + Parameter { name: "label"; type: "string" } + Parameter { name: "values"; type: "QVariantList" } + } + Method { + name: "remove" + type: "bool" + Parameter { name: "barset"; type: "QBarSet"; isPointer: true } + } + Method { name: "clear" } + } + Component { + name: "QtCharts::DeclarativeHorizontalStackedBarSeries" + defaultProperty: "seriesChildren" + prototype: "QtCharts::QHorizontalStackedBarSeries" + exports: [ + "QtCharts/HorizontalStackedBarSeries 1.1", + "QtCharts/HorizontalStackedBarSeries 1.2", + "QtCharts/HorizontalStackedBarSeries 2.0" + ] + exportMetaObjectRevisions: [1, 2, 2] + Property { name: "axisX"; revision: 1; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisY"; revision: 1; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisXTop"; revision: 2; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisYRight"; revision: 2; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "seriesChildren"; type: "QObject"; isList: true; isReadonly: true } + Signal { + name: "axisXChanged" + revision: 1 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisYChanged" + revision: 1 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisXTopChanged" + revision: 2 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisYRightChanged" + revision: 2 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Method { + name: "appendSeriesChildren" + Parameter { name: "list"; type: "QObject"; isList: true; isPointer: true } + Parameter { name: "element"; type: "QObject"; isPointer: true } + } + Method { + name: "at" + type: "DeclarativeBarSet*" + Parameter { name: "index"; type: "int" } + } + Method { + name: "append" + type: "DeclarativeBarSet*" + Parameter { name: "label"; type: "string" } + Parameter { name: "values"; type: "QVariantList" } + } + Method { + name: "insert" + type: "DeclarativeBarSet*" + Parameter { name: "index"; type: "int" } + Parameter { name: "label"; type: "string" } + Parameter { name: "values"; type: "QVariantList" } + } + Method { + name: "remove" + type: "bool" + Parameter { name: "barset"; type: "QBarSet"; isPointer: true } + } + Method { name: "clear" } + } + Component { + name: "QtCharts::DeclarativeLineSeries" + defaultProperty: "declarativeChildren" + prototype: "QtCharts::QLineSeries" + exports: [ + "QtCharts/LineSeries 1.0", + "QtCharts/LineSeries 1.1", + "QtCharts/LineSeries 1.2", + "QtCharts/LineSeries 1.3", + "QtCharts/LineSeries 2.0", + "QtCharts/LineSeries 2.1" + ] + exportMetaObjectRevisions: [0, 1, 2, 3, 3, 4] + Property { name: "count"; type: "int"; isReadonly: true } + Property { name: "axisX"; revision: 1; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisY"; revision: 1; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisXTop"; revision: 2; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisYRight"; revision: 2; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisAngular"; revision: 3; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisRadial"; revision: 3; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "width"; revision: 1; type: "double" } + Property { name: "style"; revision: 1; type: "Qt::PenStyle" } + Property { name: "capStyle"; revision: 1; type: "Qt::PenCapStyle" } + Property { name: "declarativeChildren"; type: "QObject"; isList: true; isReadonly: true } + Signal { + name: "countChanged" + Parameter { name: "count"; type: "int" } + } + Signal { + name: "axisXChanged" + revision: 1 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisYChanged" + revision: 1 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisXTopChanged" + revision: 2 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisYRightChanged" + revision: 2 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisAngularChanged" + revision: 3 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisRadialChanged" + revision: 3 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "widthChanged" + revision: 1 + Parameter { name: "width"; type: "double" } + } + Signal { + name: "styleChanged" + revision: 1 + Parameter { name: "style"; type: "Qt::PenStyle" } + } + Signal { + name: "capStyleChanged" + revision: 1 + Parameter { name: "capStyle"; type: "Qt::PenCapStyle" } + } + Method { + name: "appendDeclarativeChildren" + Parameter { name: "list"; type: "QObject"; isList: true; isPointer: true } + Parameter { name: "element"; type: "QObject"; isPointer: true } + } + Method { + name: "handleCountChanged" + Parameter { name: "index"; type: "int" } + } + Method { + name: "append" + Parameter { name: "x"; type: "double" } + Parameter { name: "y"; type: "double" } + } + Method { + name: "replace" + Parameter { name: "oldX"; type: "double" } + Parameter { name: "oldY"; type: "double" } + Parameter { name: "newX"; type: "double" } + Parameter { name: "newY"; type: "double" } + } + Method { + name: "replace" + revision: 3 + Parameter { name: "index"; type: "int" } + Parameter { name: "newX"; type: "double" } + Parameter { name: "newY"; type: "double" } + } + Method { + name: "remove" + Parameter { name: "x"; type: "double" } + Parameter { name: "y"; type: "double" } + } + Method { + name: "remove" + revision: 3 + Parameter { name: "index"; type: "int" } + } + Method { + name: "removePoints" + revision: 4 + Parameter { name: "index"; type: "int" } + Parameter { name: "count"; type: "int" } + } + Method { + name: "insert" + Parameter { name: "index"; type: "int" } + Parameter { name: "x"; type: "double" } + Parameter { name: "y"; type: "double" } + } + Method { name: "clear" } + Method { + name: "at" + type: "QPointF" + Parameter { name: "index"; type: "int" } + } + } + Component { + name: "QtCharts::DeclarativeMargins" + prototype: "QObject" + exports: ["QtCharts/Margins 1.1", "QtCharts/Margins 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0, 0] + Property { name: "top"; type: "int" } + Property { name: "bottom"; type: "int" } + Property { name: "left"; type: "int" } + Property { name: "right"; type: "int" } + Signal { + name: "topChanged" + Parameter { name: "top"; type: "int" } + Parameter { name: "bottom"; type: "int" } + Parameter { name: "left"; type: "int" } + Parameter { name: "right"; type: "int" } + } + Signal { + name: "bottomChanged" + Parameter { name: "top"; type: "int" } + Parameter { name: "bottom"; type: "int" } + Parameter { name: "left"; type: "int" } + Parameter { name: "right"; type: "int" } + } + Signal { + name: "leftChanged" + Parameter { name: "top"; type: "int" } + Parameter { name: "bottom"; type: "int" } + Parameter { name: "left"; type: "int" } + Parameter { name: "right"; type: "int" } + } + Signal { + name: "rightChanged" + Parameter { name: "top"; type: "int" } + Parameter { name: "bottom"; type: "int" } + Parameter { name: "left"; type: "int" } + Parameter { name: "right"; type: "int" } + } + } + Component { + name: "QtCharts::DeclarativePercentBarSeries" + defaultProperty: "seriesChildren" + prototype: "QtCharts::QPercentBarSeries" + exports: [ + "QtCharts/PercentBarSeries 1.0", + "QtCharts/PercentBarSeries 1.1", + "QtCharts/PercentBarSeries 1.2", + "QtCharts/PercentBarSeries 2.0" + ] + exportMetaObjectRevisions: [0, 1, 2, 2] + Property { name: "axisX"; revision: 1; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisY"; revision: 1; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisXTop"; revision: 2; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisYRight"; revision: 2; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "seriesChildren"; type: "QObject"; isList: true; isReadonly: true } + Signal { + name: "axisXChanged" + revision: 1 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisYChanged" + revision: 1 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisXTopChanged" + revision: 2 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisYRightChanged" + revision: 2 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Method { + name: "appendSeriesChildren" + Parameter { name: "list"; type: "QObject"; isList: true; isPointer: true } + Parameter { name: "element"; type: "QObject"; isPointer: true } + } + Method { + name: "at" + type: "DeclarativeBarSet*" + Parameter { name: "index"; type: "int" } + } + Method { + name: "append" + type: "DeclarativeBarSet*" + Parameter { name: "label"; type: "string" } + Parameter { name: "values"; type: "QVariantList" } + } + Method { + name: "insert" + type: "DeclarativeBarSet*" + Parameter { name: "index"; type: "int" } + Parameter { name: "label"; type: "string" } + Parameter { name: "values"; type: "QVariantList" } + } + Method { + name: "remove" + type: "bool" + Parameter { name: "barset"; type: "QBarSet"; isPointer: true } + } + Method { name: "clear" } + } + Component { + name: "QtCharts::DeclarativePieSeries" + defaultProperty: "seriesChildren" + prototype: "QtCharts::QPieSeries" + exports: [ + "QtCharts/PieSeries 1.0", + "QtCharts/PieSeries 1.1", + "QtCharts/PieSeries 2.0" + ] + exportMetaObjectRevisions: [0, 0, 0] + Property { name: "seriesChildren"; type: "QObject"; isList: true; isReadonly: true } + Signal { + name: "sliceAdded" + Parameter { name: "slice"; type: "QPieSlice"; isPointer: true } + } + Signal { + name: "sliceRemoved" + Parameter { name: "slice"; type: "QPieSlice"; isPointer: true } + } + Method { + name: "appendSeriesChildren" + Parameter { name: "list"; type: "QObject"; isList: true; isPointer: true } + Parameter { name: "element"; type: "QObject"; isPointer: true } + } + Method { + name: "handleAdded" + Parameter { name: "slices"; type: "QList<QPieSlice*>" } + } + Method { + name: "handleRemoved" + Parameter { name: "slices"; type: "QList<QPieSlice*>" } + } + Method { + name: "at" + type: "QPieSlice*" + Parameter { name: "index"; type: "int" } + } + Method { + name: "find" + type: "QPieSlice*" + Parameter { name: "label"; type: "string" } + } + Method { + name: "append" + type: "DeclarativePieSlice*" + Parameter { name: "label"; type: "string" } + Parameter { name: "value"; type: "double" } + } + Method { + name: "remove" + type: "bool" + Parameter { name: "slice"; type: "QPieSlice"; isPointer: true } + } + Method { name: "clear" } + } + Component { + name: "QtCharts::DeclarativePieSlice" + prototype: "QtCharts::QPieSlice" + exports: ["QtCharts/PieSlice 1.4", "QtCharts/PieSlice 2.0"] + exportMetaObjectRevisions: [0, 0] + Property { name: "brushFilename"; type: "string" } + Signal { + name: "brushFilenameChanged" + Parameter { name: "brushFilename"; type: "string" } + } + } + Component { + name: "QtCharts::DeclarativePolarChart" + defaultProperty: "data" + prototype: "QtCharts::DeclarativeChart" + exports: [ + "QtCharts/PolarChartView 1.3", + "QtCharts/PolarChartView 2.0" + ] + exportMetaObjectRevisions: [1, 1] + } + Component { + name: "QtCharts::DeclarativeScatterSeries" + defaultProperty: "declarativeChildren" + prototype: "QtCharts::QScatterSeries" + exports: [ + "QtCharts/ScatterSeries 1.0", + "QtCharts/ScatterSeries 1.1", + "QtCharts/ScatterSeries 1.2", + "QtCharts/ScatterSeries 1.3", + "QtCharts/ScatterSeries 1.4", + "QtCharts/ScatterSeries 2.0", + "QtCharts/ScatterSeries 2.1" + ] + exportMetaObjectRevisions: [0, 1, 2, 3, 4, 4, 5] + Property { name: "count"; type: "int"; isReadonly: true } + Property { name: "axisX"; revision: 1; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisY"; revision: 1; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisXTop"; revision: 2; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisYRight"; revision: 2; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisAngular"; revision: 3; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisRadial"; revision: 3; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "borderWidth"; revision: 1; type: "double" } + Property { name: "declarativeChildren"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "brushFilename"; revision: 4; type: "string" } + Property { name: "brush"; revision: 4; type: "QBrush" } + Signal { + name: "countChanged" + Parameter { name: "count"; type: "int" } + } + Signal { + name: "axisXChanged" + revision: 1 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisYChanged" + revision: 1 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "borderWidthChanged" + revision: 1 + Parameter { name: "width"; type: "double" } + } + Signal { + name: "axisXTopChanged" + revision: 2 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisYRightChanged" + revision: 2 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisAngularChanged" + revision: 3 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisRadialChanged" + revision: 3 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "brushFilenameChanged" + revision: 4 + Parameter { name: "brushFilename"; type: "string" } + } + Signal { name: "brushChanged"; revision: 4 } + Method { + name: "appendDeclarativeChildren" + Parameter { name: "list"; type: "QObject"; isList: true; isPointer: true } + Parameter { name: "element"; type: "QObject"; isPointer: true } + } + Method { + name: "handleCountChanged" + Parameter { name: "index"; type: "int" } + } + Method { + name: "append" + Parameter { name: "x"; type: "double" } + Parameter { name: "y"; type: "double" } + } + Method { + name: "replace" + Parameter { name: "oldX"; type: "double" } + Parameter { name: "oldY"; type: "double" } + Parameter { name: "newX"; type: "double" } + Parameter { name: "newY"; type: "double" } + } + Method { + name: "replace" + revision: 3 + Parameter { name: "index"; type: "int" } + Parameter { name: "newX"; type: "double" } + Parameter { name: "newY"; type: "double" } + } + Method { + name: "remove" + Parameter { name: "x"; type: "double" } + Parameter { name: "y"; type: "double" } + } + Method { + name: "remove" + revision: 3 + Parameter { name: "index"; type: "int" } + } + Method { + name: "removePoints" + revision: 5 + Parameter { name: "index"; type: "int" } + Parameter { name: "count"; type: "int" } + } + Method { + name: "insert" + Parameter { name: "index"; type: "int" } + Parameter { name: "x"; type: "double" } + Parameter { name: "y"; type: "double" } + } + Method { name: "clear" } + Method { + name: "at" + type: "QPointF" + Parameter { name: "index"; type: "int" } + } + } + Component { + name: "QtCharts::DeclarativeSplineSeries" + defaultProperty: "declarativeChildren" + prototype: "QtCharts::QSplineSeries" + exports: [ + "QtCharts/SplineSeries 1.0", + "QtCharts/SplineSeries 1.1", + "QtCharts/SplineSeries 1.2", + "QtCharts/SplineSeries 1.3", + "QtCharts/SplineSeries 2.0", + "QtCharts/SplineSeries 2.1" + ] + exportMetaObjectRevisions: [0, 1, 2, 3, 3, 4] + Property { name: "count"; type: "int"; isReadonly: true } + Property { name: "axisX"; revision: 1; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisY"; revision: 1; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisXTop"; revision: 2; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisYRight"; revision: 2; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisAngular"; revision: 3; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisRadial"; revision: 3; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "width"; revision: 1; type: "double" } + Property { name: "style"; revision: 1; type: "Qt::PenStyle" } + Property { name: "capStyle"; revision: 1; type: "Qt::PenCapStyle" } + Property { name: "declarativeChildren"; type: "QObject"; isList: true; isReadonly: true } + Signal { + name: "countChanged" + Parameter { name: "count"; type: "int" } + } + Signal { + name: "axisXChanged" + revision: 1 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisYChanged" + revision: 1 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisXTopChanged" + revision: 2 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisYRightChanged" + revision: 2 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisAngularChanged" + revision: 3 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisRadialChanged" + revision: 3 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "widthChanged" + revision: 1 + Parameter { name: "width"; type: "double" } + } + Signal { + name: "styleChanged" + revision: 1 + Parameter { name: "style"; type: "Qt::PenStyle" } + } + Signal { + name: "capStyleChanged" + revision: 1 + Parameter { name: "capStyle"; type: "Qt::PenCapStyle" } + } + Method { + name: "appendDeclarativeChildren" + Parameter { name: "list"; type: "QObject"; isList: true; isPointer: true } + Parameter { name: "element"; type: "QObject"; isPointer: true } + } + Method { + name: "handleCountChanged" + Parameter { name: "index"; type: "int" } + } + Method { + name: "append" + Parameter { name: "x"; type: "double" } + Parameter { name: "y"; type: "double" } + } + Method { + name: "replace" + Parameter { name: "oldX"; type: "double" } + Parameter { name: "oldY"; type: "double" } + Parameter { name: "newX"; type: "double" } + Parameter { name: "newY"; type: "double" } + } + Method { + name: "replace" + revision: 3 + Parameter { name: "index"; type: "int" } + Parameter { name: "newX"; type: "double" } + Parameter { name: "newY"; type: "double" } + } + Method { + name: "remove" + Parameter { name: "x"; type: "double" } + Parameter { name: "y"; type: "double" } + } + Method { + name: "remove" + revision: 3 + Parameter { name: "index"; type: "int" } + } + Method { + name: "removePoints" + revision: 4 + Parameter { name: "index"; type: "int" } + Parameter { name: "count"; type: "int" } + } + Method { + name: "insert" + Parameter { name: "index"; type: "int" } + Parameter { name: "x"; type: "double" } + Parameter { name: "y"; type: "double" } + } + Method { name: "clear" } + Method { + name: "at" + type: "QPointF" + Parameter { name: "index"; type: "int" } + } + } + Component { + name: "QtCharts::DeclarativeStackedBarSeries" + defaultProperty: "seriesChildren" + prototype: "QtCharts::QStackedBarSeries" + exports: [ + "QtCharts/StackedBarSeries 1.0", + "QtCharts/StackedBarSeries 1.1", + "QtCharts/StackedBarSeries 1.2", + "QtCharts/StackedBarSeries 2.0" + ] + exportMetaObjectRevisions: [0, 1, 2, 2] + Property { name: "axisX"; revision: 1; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisY"; revision: 1; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisXTop"; revision: 2; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "axisYRight"; revision: 2; type: "QtCharts::QAbstractAxis"; isPointer: true } + Property { name: "seriesChildren"; type: "QObject"; isList: true; isReadonly: true } + Signal { + name: "axisXChanged" + revision: 1 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisYChanged" + revision: 1 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisXTopChanged" + revision: 2 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Signal { + name: "axisYRightChanged" + revision: 2 + Parameter { name: "axis"; type: "QAbstractAxis"; isPointer: true } + } + Method { + name: "appendSeriesChildren" + Parameter { name: "list"; type: "QObject"; isList: true; isPointer: true } + Parameter { name: "element"; type: "QObject"; isPointer: true } + } + Method { + name: "at" + type: "DeclarativeBarSet*" + Parameter { name: "index"; type: "int" } + } + Method { + name: "append" + type: "DeclarativeBarSet*" + Parameter { name: "label"; type: "string" } + Parameter { name: "values"; type: "QVariantList" } + } + Method { + name: "insert" + type: "DeclarativeBarSet*" + Parameter { name: "index"; type: "int" } + Parameter { name: "label"; type: "string" } + Parameter { name: "values"; type: "QVariantList" } + } + Method { + name: "remove" + type: "bool" + Parameter { name: "barset"; type: "QBarSet"; isPointer: true } + } + Method { name: "clear" } + } + Component { + name: "QtCharts::DeclarativeXYPoint" + prototype: "QObject" + exports: ["QtCharts/XYPoint 1.0", "QtCharts/XYPoint 2.0"] + exportMetaObjectRevisions: [0, 0] + Property { name: "x"; type: "double" } + Property { name: "y"; type: "double" } + } + Component { + name: "QtCharts::LegendScroller" + defaultProperty: "children" + prototype: "QtCharts::QLegend" + } + Component { + name: "QtCharts::QAbstractAxis" + prototype: "QObject" + exports: [ + "QtCharts/AbstractAxis 1.0", + "QtCharts/AbstractAxis 2.0", + "QtCharts/AbstractAxis 2.1" + ] + isCreatable: false + exportMetaObjectRevisions: [0, 0, 0] + Property { name: "visible"; type: "bool" } + Property { name: "lineVisible"; type: "bool" } + Property { name: "linePen"; type: "QPen" } + Property { name: "color"; type: "QColor" } + Property { name: "labelsVisible"; type: "bool" } + Property { name: "labelsBrush"; type: "QBrush" } + Property { name: "labelsAngle"; type: "int" } + Property { name: "labelsFont"; type: "QFont" } + Property { name: "labelsColor"; type: "QColor" } + Property { name: "gridVisible"; type: "bool" } + Property { name: "gridLinePen"; type: "QPen" } + Property { name: "minorGridVisible"; type: "bool" } + Property { name: "minorGridLinePen"; type: "QPen" } + Property { name: "gridLineColor"; type: "QColor" } + Property { name: "minorGridLineColor"; type: "QColor" } + Property { name: "shadesVisible"; type: "bool" } + Property { name: "shadesColor"; type: "QColor" } + Property { name: "shadesBorderColor"; type: "QColor" } + Property { name: "shadesPen"; type: "QPen" } + Property { name: "shadesBrush"; type: "QBrush" } + Property { name: "titleText"; type: "string" } + Property { name: "titleBrush"; type: "QBrush" } + Property { name: "titleVisible"; type: "bool" } + Property { name: "titleFont"; type: "QFont" } + Property { name: "orientation"; type: "Qt::Orientation"; isReadonly: true } + Property { name: "alignment"; type: "Qt::Alignment"; isReadonly: true } + Property { name: "reverse"; type: "bool" } + Signal { + name: "visibleChanged" + Parameter { name: "visible"; type: "bool" } + } + Signal { + name: "linePenChanged" + Parameter { name: "pen"; type: "QPen" } + } + Signal { + name: "lineVisibleChanged" + Parameter { name: "visible"; type: "bool" } + } + Signal { + name: "labelsVisibleChanged" + Parameter { name: "visible"; type: "bool" } + } + Signal { + name: "labelsBrushChanged" + Parameter { name: "brush"; type: "QBrush" } + } + Signal { + name: "labelsFontChanged" + Parameter { name: "pen"; type: "QFont" } + } + Signal { + name: "labelsAngleChanged" + Parameter { name: "angle"; type: "int" } + } + Signal { + name: "gridLinePenChanged" + Parameter { name: "pen"; type: "QPen" } + } + Signal { + name: "gridVisibleChanged" + Parameter { name: "visible"; type: "bool" } + } + Signal { + name: "minorGridVisibleChanged" + Parameter { name: "visible"; type: "bool" } + } + Signal { + name: "minorGridLinePenChanged" + Parameter { name: "pen"; type: "QPen" } + } + Signal { + name: "gridLineColorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "minorGridLineColorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "colorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "labelsColorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "titleTextChanged" + Parameter { name: "title"; type: "string" } + } + Signal { + name: "titleBrushChanged" + Parameter { name: "brush"; type: "QBrush" } + } + Signal { + name: "titleVisibleChanged" + Parameter { name: "visible"; type: "bool" } + } + Signal { + name: "titleFontChanged" + Parameter { name: "font"; type: "QFont" } + } + Signal { + name: "shadesVisibleChanged" + Parameter { name: "visible"; type: "bool" } + } + Signal { + name: "shadesColorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "shadesBorderColorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "shadesPenChanged" + Parameter { name: "pen"; type: "QPen" } + } + Signal { + name: "shadesBrushChanged" + Parameter { name: "brush"; type: "QBrush" } + } + Signal { + name: "reverseChanged" + Parameter { name: "reverse"; type: "bool" } + } + Signal { + name: "labelsEditableChanged" + Parameter { name: "editable"; type: "bool" } + } + } + Component { + name: "QtCharts::QAbstractBarSeries" + prototype: "QtCharts::QAbstractSeries" + exports: [ + "QtCharts/AbstractBarSeries 1.0", + "QtCharts/AbstractBarSeries 2.0" + ] + isCreatable: false + exportMetaObjectRevisions: [0, 0] + Enum { + name: "LabelsPosition" + values: { + "LabelsCenter": 0, + "LabelsInsideEnd": 1, + "LabelsInsideBase": 2, + "LabelsOutsideEnd": 3 + } + } + Property { name: "barWidth"; type: "double" } + Property { name: "count"; type: "int"; isReadonly: true } + Property { name: "labelsVisible"; type: "bool" } + Property { name: "labelsFormat"; type: "string" } + Property { name: "labelsPosition"; type: "LabelsPosition" } + Property { name: "labelsAngle"; type: "double" } + Property { name: "labelsPrecision"; type: "int" } + Signal { + name: "clicked" + Parameter { name: "index"; type: "int" } + Parameter { name: "barset"; type: "QBarSet"; isPointer: true } + } + Signal { + name: "hovered" + Parameter { name: "status"; type: "bool" } + Parameter { name: "index"; type: "int" } + Parameter { name: "barset"; type: "QBarSet"; isPointer: true } + } + Signal { + name: "pressed" + Parameter { name: "index"; type: "int" } + Parameter { name: "barset"; type: "QBarSet"; isPointer: true } + } + Signal { + name: "released" + Parameter { name: "index"; type: "int" } + Parameter { name: "barset"; type: "QBarSet"; isPointer: true } + } + Signal { + name: "doubleClicked" + Parameter { name: "index"; type: "int" } + Parameter { name: "barset"; type: "QBarSet"; isPointer: true } + } + Signal { + name: "labelsFormatChanged" + Parameter { name: "format"; type: "string" } + } + Signal { + name: "labelsPositionChanged" + Parameter { name: "position"; type: "QAbstractBarSeries::LabelsPosition" } + } + Signal { + name: "labelsAngleChanged" + Parameter { name: "angle"; type: "double" } + } + Signal { + name: "labelsPrecisionChanged" + Parameter { name: "precision"; type: "int" } + } + Signal { + name: "barsetsAdded" + Parameter { name: "sets"; type: "QList<QBarSet*>" } + } + Signal { + name: "barsetsRemoved" + Parameter { name: "sets"; type: "QList<QBarSet*>" } + } + } + Component { + name: "QtCharts::QAbstractSeries" + prototype: "QObject" + exports: [ + "QtCharts/AbstractSeries 1.0", + "QtCharts/AbstractSeries 2.0" + ] + isCreatable: false + exportMetaObjectRevisions: [0, 0] + Enum { + name: "SeriesType" + values: { + "SeriesTypeLine": 0, + "SeriesTypeArea": 1, + "SeriesTypeBar": 2, + "SeriesTypeStackedBar": 3, + "SeriesTypePercentBar": 4, + "SeriesTypePie": 5, + "SeriesTypeScatter": 6, + "SeriesTypeSpline": 7, + "SeriesTypeHorizontalBar": 8, + "SeriesTypeHorizontalStackedBar": 9, + "SeriesTypeHorizontalPercentBar": 10, + "SeriesTypeBoxPlot": 11, + "SeriesTypeCandlestick": 12 + } + } + Property { name: "name"; type: "string" } + Property { name: "visible"; type: "bool" } + Property { name: "opacity"; type: "double" } + Property { name: "type"; type: "SeriesType"; isReadonly: true } + Property { name: "useOpenGL"; type: "bool" } + } + Component { + name: "QtCharts::QAreaSeries" + prototype: "QtCharts::QAbstractSeries" + Property { name: "upperSeries"; type: "QtCharts::QLineSeries"; isReadonly: true; isPointer: true } + Property { name: "lowerSeries"; type: "QtCharts::QLineSeries"; isReadonly: true; isPointer: true } + Property { name: "color"; type: "QColor" } + Property { name: "borderColor"; type: "QColor" } + Property { name: "pointLabelsFormat"; type: "string" } + Property { name: "pointLabelsVisible"; type: "bool" } + Property { name: "pointLabelsFont"; type: "QFont" } + Property { name: "pointLabelsColor"; type: "QColor" } + Property { name: "pointLabelsClipping"; type: "bool" } + Signal { + name: "clicked" + Parameter { name: "point"; type: "QPointF" } + } + Signal { + name: "hovered" + Parameter { name: "point"; type: "QPointF" } + Parameter { name: "state"; type: "bool" } + } + Signal { + name: "pressed" + Parameter { name: "point"; type: "QPointF" } + } + Signal { + name: "released" + Parameter { name: "point"; type: "QPointF" } + } + Signal { + name: "doubleClicked" + Parameter { name: "point"; type: "QPointF" } + } + Signal { name: "selected" } + Signal { + name: "colorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "borderColorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "pointLabelsFormatChanged" + Parameter { name: "format"; type: "string" } + } + Signal { + name: "pointLabelsVisibilityChanged" + Parameter { name: "visible"; type: "bool" } + } + Signal { + name: "pointLabelsFontChanged" + Parameter { name: "font"; type: "QFont" } + } + Signal { + name: "pointLabelsColorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "pointLabelsClippingChanged" + Parameter { name: "clipping"; type: "bool" } + } + } + Component { + name: "QtCharts::QBarCategoryAxis" + prototype: "QtCharts::QAbstractAxis" + exports: [ + "QtCharts/BarCategoriesAxis 1.0", + "QtCharts/BarCategoryAxis 1.1", + "QtCharts/BarCategoryAxis 2.0" + ] + exportMetaObjectRevisions: [0, 0, 0] + Property { name: "categories"; type: "QStringList" } + Property { name: "min"; type: "string" } + Property { name: "max"; type: "string" } + Property { name: "count"; type: "int"; isReadonly: true } + Signal { + name: "minChanged" + Parameter { name: "min"; type: "string" } + } + Signal { + name: "maxChanged" + Parameter { name: "max"; type: "string" } + } + Signal { + name: "rangeChanged" + Parameter { name: "min"; type: "string" } + Parameter { name: "max"; type: "string" } + } + Method { name: "clear" } + } + Component { + name: "QtCharts::QBarModelMapper" + prototype: "QObject" + exports: [ + "QtCharts/BarModelMapper 1.0", + "QtCharts/BarModelMapper 2.0" + ] + isCreatable: false + exportMetaObjectRevisions: [0, 0] + } + Component { name: "QtCharts::QBarSeries"; prototype: "QtCharts::QAbstractBarSeries" } + Component { + name: "QtCharts::QBarSet" + prototype: "QObject" + exports: ["QtCharts/BarSetBase 1.0", "QtCharts/BarSetBase 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0, 0] + Property { name: "label"; type: "string" } + Property { name: "pen"; type: "QPen" } + Property { name: "brush"; type: "QBrush" } + Property { name: "labelBrush"; type: "QBrush" } + Property { name: "labelFont"; type: "QFont" } + Property { name: "color"; type: "QColor" } + Property { name: "borderColor"; type: "QColor" } + Property { name: "labelColor"; type: "QColor" } + Signal { + name: "clicked" + Parameter { name: "index"; type: "int" } + } + Signal { + name: "hovered" + Parameter { name: "status"; type: "bool" } + Parameter { name: "index"; type: "int" } + } + Signal { + name: "pressed" + Parameter { name: "index"; type: "int" } + } + Signal { + name: "released" + Parameter { name: "index"; type: "int" } + } + Signal { + name: "doubleClicked" + Parameter { name: "index"; type: "int" } + } + Signal { + name: "colorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "borderColorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "labelColorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "valuesAdded" + Parameter { name: "index"; type: "int" } + Parameter { name: "count"; type: "int" } + } + Signal { + name: "valuesRemoved" + Parameter { name: "index"; type: "int" } + Parameter { name: "count"; type: "int" } + } + Signal { + name: "valueChanged" + Parameter { name: "index"; type: "int" } + } + } + Component { + name: "QtCharts::QBoxPlotModelMapper" + prototype: "QObject" + exports: ["QtCharts/BoxPlotModelMapper 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + } + Component { + name: "QtCharts::QBoxPlotSeries" + prototype: "QtCharts::QAbstractSeries" + Property { name: "boxOutlineVisible"; type: "bool" } + Property { name: "boxWidth"; type: "double" } + Property { name: "pen"; type: "QPen" } + Property { name: "brush"; type: "QBrush" } + Property { name: "count"; revision: 1; type: "int"; isReadonly: true } + Signal { + name: "clicked" + Parameter { name: "boxset"; type: "QBoxSet"; isPointer: true } + } + Signal { + name: "hovered" + Parameter { name: "status"; type: "bool" } + Parameter { name: "boxset"; type: "QBoxSet"; isPointer: true } + } + Signal { + name: "pressed" + Parameter { name: "boxset"; type: "QBoxSet"; isPointer: true } + } + Signal { + name: "released" + Parameter { name: "boxset"; type: "QBoxSet"; isPointer: true } + } + Signal { + name: "doubleClicked" + Parameter { name: "boxset"; type: "QBoxSet"; isPointer: true } + } + Signal { name: "boxOutlineVisibilityChanged" } + Signal { + name: "boxsetsAdded" + Parameter { name: "sets"; type: "QList<QBoxSet*>" } + } + Signal { + name: "boxsetsRemoved" + Parameter { name: "sets"; type: "QList<QBoxSet*>" } + } + } + Component { + name: "QtCharts::QBoxSet" + prototype: "QObject" + Property { name: "pen"; type: "QPen" } + Property { name: "brush"; type: "QBrush" } + Signal { name: "clicked" } + Signal { + name: "hovered" + Parameter { name: "status"; type: "bool" } + } + Signal { name: "pressed" } + Signal { name: "released" } + Signal { name: "doubleClicked" } + Signal { name: "valuesChanged" } + Signal { + name: "valueChanged" + Parameter { name: "index"; type: "int" } + } + Signal { name: "cleared" } + } + Component { + name: "QtCharts::QCandlestickModelMapper" + prototype: "QObject" + exports: ["QtCharts/CandlestickModelMapper 2.2"] + isCreatable: false + exportMetaObjectRevisions: [0] + Property { name: "model"; type: "QAbstractItemModel"; isPointer: true } + Property { name: "series"; type: "QtCharts::QCandlestickSeries"; isPointer: true } + Signal { name: "modelReplaced" } + Signal { name: "seriesReplaced" } + } + Component { + name: "QtCharts::QCandlestickSeries" + prototype: "QtCharts::QAbstractSeries" + Property { name: "count"; type: "int"; isReadonly: true } + Property { name: "maximumColumnWidth"; type: "double" } + Property { name: "minimumColumnWidth"; type: "double" } + Property { name: "bodyWidth"; type: "double" } + Property { name: "bodyOutlineVisible"; type: "bool" } + Property { name: "capsWidth"; type: "double" } + Property { name: "capsVisible"; type: "bool" } + Property { name: "increasingColor"; type: "QColor" } + Property { name: "decreasingColor"; type: "QColor" } + Property { name: "brush"; type: "QBrush" } + Property { name: "pen"; type: "QPen" } + Signal { + name: "clicked" + Parameter { name: "set"; type: "QCandlestickSet"; isPointer: true } + } + Signal { + name: "hovered" + Parameter { name: "status"; type: "bool" } + Parameter { name: "set"; type: "QCandlestickSet"; isPointer: true } + } + Signal { + name: "pressed" + Parameter { name: "set"; type: "QCandlestickSet"; isPointer: true } + } + Signal { + name: "released" + Parameter { name: "set"; type: "QCandlestickSet"; isPointer: true } + } + Signal { + name: "doubleClicked" + Parameter { name: "set"; type: "QCandlestickSet"; isPointer: true } + } + Signal { + name: "candlestickSetsAdded" + Parameter { name: "sets"; type: "QList<QCandlestickSet*>" } + } + Signal { + name: "candlestickSetsRemoved" + Parameter { name: "sets"; type: "QList<QCandlestickSet*>" } + } + Signal { name: "bodyOutlineVisibilityChanged" } + Signal { name: "capsVisibilityChanged" } + } + Component { + name: "QtCharts::QCandlestickSet" + prototype: "QObject" + Property { name: "timestamp"; type: "double" } + Property { name: "open"; type: "double" } + Property { name: "high"; type: "double" } + Property { name: "low"; type: "double" } + Property { name: "close"; type: "double" } + Property { name: "brush"; type: "QBrush" } + Property { name: "pen"; type: "QPen" } + Signal { name: "clicked" } + Signal { + name: "hovered" + Parameter { name: "status"; type: "bool" } + } + Signal { name: "pressed" } + Signal { name: "released" } + Signal { name: "doubleClicked" } + } + Component { + name: "QtCharts::QCategoryAxis" + prototype: "QtCharts::QValueAxis" + Enum { + name: "AxisLabelsPosition" + values: { + "AxisLabelsPositionCenter": 0, + "AxisLabelsPositionOnValue": 1 + } + } + Property { name: "startValue"; type: "double" } + Property { name: "count"; type: "int"; isReadonly: true } + Property { name: "categoriesLabels"; type: "QStringList"; isReadonly: true } + Property { name: "labelsPosition"; type: "AxisLabelsPosition" } + Signal { name: "categoriesChanged" } + Signal { + name: "labelsPositionChanged" + Parameter { name: "position"; type: "QCategoryAxis::AxisLabelsPosition" } + } + } + Component { + name: "QtCharts::QDateTimeAxis" + prototype: "QtCharts::QAbstractAxis" + exports: ["QtCharts/DateTimeAxis 1.1", "QtCharts/DateTimeAxis 2.0"] + exportMetaObjectRevisions: [0, 0] + Property { name: "tickCount"; type: "int" } + Property { name: "min"; type: "QDateTime" } + Property { name: "max"; type: "QDateTime" } + Property { name: "format"; type: "string" } + Signal { + name: "minChanged" + Parameter { name: "min"; type: "QDateTime" } + } + Signal { + name: "maxChanged" + Parameter { name: "max"; type: "QDateTime" } + } + Signal { + name: "rangeChanged" + Parameter { name: "min"; type: "QDateTime" } + Parameter { name: "max"; type: "QDateTime" } + } + Signal { + name: "formatChanged" + Parameter { name: "format"; type: "string" } + } + Signal { + name: "tickCountChanged" + Parameter { name: "tick"; type: "int" } + } + } + Component { + name: "QtCharts::QHBarModelMapper" + prototype: "QtCharts::QBarModelMapper" + exports: [ + "QtCharts/HBarModelMapper 1.0", + "QtCharts/HBarModelMapper 2.0" + ] + exportMetaObjectRevisions: [0, 0] + Property { name: "series"; type: "QtCharts::QAbstractBarSeries"; isPointer: true } + Property { name: "model"; type: "QAbstractItemModel"; isPointer: true } + Property { name: "firstBarSetRow"; type: "int" } + Property { name: "lastBarSetRow"; type: "int" } + Property { name: "firstColumn"; type: "int" } + Property { name: "columnCount"; type: "int" } + Signal { name: "seriesReplaced" } + Signal { name: "modelReplaced" } + } + Component { + name: "QtCharts::QHBoxPlotModelMapper" + prototype: "QtCharts::QBoxPlotModelMapper" + exports: ["QtCharts/HBoxPlotModelMapper 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "series"; type: "QtCharts::QBoxPlotSeries"; isPointer: true } + Property { name: "model"; type: "QAbstractItemModel"; isPointer: true } + Property { name: "firstBoxSetRow"; type: "int" } + Property { name: "lastBoxSetRow"; type: "int" } + Property { name: "firstColumn"; type: "int" } + Property { name: "columnCount"; type: "int" } + Signal { name: "seriesReplaced" } + Signal { name: "modelReplaced" } + } + Component { + name: "QtCharts::QHCandlestickModelMapper" + prototype: "QtCharts::QCandlestickModelMapper" + exports: ["QtCharts/HCandlestickModelMapper 2.2"] + exportMetaObjectRevisions: [0] + Property { name: "timestampColumn"; type: "int" } + Property { name: "openColumn"; type: "int" } + Property { name: "highColumn"; type: "int" } + Property { name: "lowColumn"; type: "int" } + Property { name: "closeColumn"; type: "int" } + Property { name: "firstSetRow"; type: "int" } + Property { name: "lastSetRow"; type: "int" } + } + Component { + name: "QtCharts::QHPieModelMapper" + prototype: "QtCharts::QPieModelMapper" + exports: [ + "QtCharts/HPieModelMapper 1.0", + "QtCharts/HPieModelMapper 2.0" + ] + exportMetaObjectRevisions: [0, 0] + Property { name: "series"; type: "QtCharts::QPieSeries"; isPointer: true } + Property { name: "model"; type: "QAbstractItemModel"; isPointer: true } + Property { name: "valuesRow"; type: "int" } + Property { name: "labelsRow"; type: "int" } + Property { name: "firstColumn"; type: "int" } + Property { name: "columnCount"; type: "int" } + Signal { name: "seriesReplaced" } + Signal { name: "modelReplaced" } + } + Component { + name: "QtCharts::QHXYModelMapper" + prototype: "QtCharts::QXYModelMapper" + exports: [ + "QtCharts/HXYModelMapper 1.0", + "QtCharts/HXYModelMapper 2.0" + ] + exportMetaObjectRevisions: [0, 0] + Property { name: "series"; type: "QtCharts::QXYSeries"; isPointer: true } + Property { name: "model"; type: "QAbstractItemModel"; isPointer: true } + Property { name: "xRow"; type: "int" } + Property { name: "yRow"; type: "int" } + Property { name: "firstColumn"; type: "int" } + Property { name: "columnCount"; type: "int" } + Signal { name: "seriesReplaced" } + Signal { name: "modelReplaced" } + } + Component { name: "QtCharts::QHorizontalBarSeries"; prototype: "QtCharts::QAbstractBarSeries" } + Component { + name: "QtCharts::QHorizontalPercentBarSeries" + prototype: "QtCharts::QAbstractBarSeries" + } + Component { + name: "QtCharts::QHorizontalStackedBarSeries" + prototype: "QtCharts::QAbstractBarSeries" + } + Component { + name: "QtCharts::QLegend" + defaultProperty: "children" + prototype: "QGraphicsWidget" + exports: ["QtCharts/Legend 1.0", "QtCharts/Legend 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0, 0] + Enum { + name: "MarkerShape" + values: { + "MarkerShapeDefault": 0, + "MarkerShapeRectangle": 1, + "MarkerShapeCircle": 2, + "MarkerShapeFromSeries": 3 + } + } + Property { name: "alignment"; type: "Qt::Alignment" } + Property { name: "backgroundVisible"; type: "bool" } + Property { name: "color"; type: "QColor" } + Property { name: "borderColor"; type: "QColor" } + Property { name: "font"; type: "QFont" } + Property { name: "labelColor"; type: "QColor" } + Property { name: "reverseMarkers"; type: "bool" } + Property { name: "showToolTips"; type: "bool" } + Property { name: "markerShape"; type: "MarkerShape" } + Signal { + name: "backgroundVisibleChanged" + Parameter { name: "visible"; type: "bool" } + } + Signal { + name: "colorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "borderColorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "fontChanged" + Parameter { name: "font"; type: "QFont" } + } + Signal { + name: "labelColorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "reverseMarkersChanged" + Parameter { name: "reverseMarkers"; type: "bool" } + } + Signal { + name: "showToolTipsChanged" + Parameter { name: "showToolTips"; type: "bool" } + } + Signal { + name: "markerShapeChanged" + Parameter { name: "shape"; type: "MarkerShape" } + } + } + Component { name: "QtCharts::QLineSeries"; prototype: "QtCharts::QXYSeries" } + Component { + name: "QtCharts::QLogValueAxis" + prototype: "QtCharts::QAbstractAxis" + exports: ["QtCharts/LogValueAxis 1.3", "QtCharts/LogValueAxis 2.0"] + exportMetaObjectRevisions: [0, 1] + Property { name: "min"; type: "double" } + Property { name: "max"; type: "double" } + Property { name: "labelFormat"; type: "string" } + Property { name: "base"; type: "double" } + Property { name: "tickCount"; type: "int"; isReadonly: true } + Property { name: "minorTickCount"; type: "int" } + Signal { + name: "minChanged" + Parameter { name: "min"; type: "double" } + } + Signal { + name: "maxChanged" + Parameter { name: "max"; type: "double" } + } + Signal { + name: "rangeChanged" + Parameter { name: "min"; type: "double" } + Parameter { name: "max"; type: "double" } + } + Signal { + name: "labelFormatChanged" + Parameter { name: "format"; type: "string" } + } + Signal { + name: "baseChanged" + Parameter { name: "base"; type: "double" } + } + Signal { + name: "tickCountChanged" + Parameter { name: "tickCount"; type: "int" } + } + Signal { + name: "minorTickCountChanged" + Parameter { name: "minorTickCount"; type: "int" } + } + } + Component { name: "QtCharts::QPercentBarSeries"; prototype: "QtCharts::QAbstractBarSeries" } + Component { + name: "QtCharts::QPieModelMapper" + prototype: "QObject" + exports: [ + "QtCharts/PieModelMapper 1.0", + "QtCharts/PieModelMapper 2.0" + ] + isCreatable: false + exportMetaObjectRevisions: [0, 0] + } + Component { + name: "QtCharts::QPieSeries" + prototype: "QtCharts::QAbstractSeries" + exports: ["QtCharts/QPieSeries 1.0", "QtCharts/QPieSeries 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0, 0] + Property { name: "horizontalPosition"; type: "double" } + Property { name: "verticalPosition"; type: "double" } + Property { name: "size"; type: "double" } + Property { name: "startAngle"; type: "double" } + Property { name: "endAngle"; type: "double" } + Property { name: "count"; type: "int"; isReadonly: true } + Property { name: "sum"; type: "double"; isReadonly: true } + Property { name: "holeSize"; type: "double" } + Signal { + name: "added" + Parameter { name: "slices"; type: "QList<QPieSlice*>" } + } + Signal { + name: "removed" + Parameter { name: "slices"; type: "QList<QPieSlice*>" } + } + Signal { + name: "clicked" + Parameter { name: "slice"; type: "QPieSlice"; isPointer: true } + } + Signal { + name: "hovered" + Parameter { name: "slice"; type: "QPieSlice"; isPointer: true } + Parameter { name: "state"; type: "bool" } + } + Signal { + name: "pressed" + Parameter { name: "slice"; type: "QPieSlice"; isPointer: true } + } + Signal { + name: "released" + Parameter { name: "slice"; type: "QPieSlice"; isPointer: true } + } + Signal { + name: "doubleClicked" + Parameter { name: "slice"; type: "QPieSlice"; isPointer: true } + } + } + Component { + name: "QtCharts::QPieSlice" + prototype: "QObject" + exports: ["QtCharts/PieSlice 1.0", "QtCharts/PieSlice 2.0"] + exportMetaObjectRevisions: [0, 0] + Enum { + name: "LabelPosition" + values: { + "LabelOutside": 0, + "LabelInsideHorizontal": 1, + "LabelInsideTangential": 2, + "LabelInsideNormal": 3 + } + } + Property { name: "label"; type: "string" } + Property { name: "value"; type: "double" } + Property { name: "labelVisible"; type: "bool" } + Property { name: "labelPosition"; type: "LabelPosition" } + Property { name: "exploded"; type: "bool" } + Property { name: "pen"; type: "QPen" } + Property { name: "borderColor"; type: "QColor" } + Property { name: "borderWidth"; type: "int" } + Property { name: "brush"; type: "QBrush" } + Property { name: "color"; type: "QColor" } + Property { name: "labelBrush"; type: "QBrush" } + Property { name: "labelColor"; type: "QColor" } + Property { name: "labelFont"; type: "QFont" } + Property { name: "labelArmLengthFactor"; type: "double" } + Property { name: "explodeDistanceFactor"; type: "double" } + Property { name: "percentage"; type: "double"; isReadonly: true } + Property { name: "startAngle"; type: "double"; isReadonly: true } + Property { name: "angleSpan"; type: "double"; isReadonly: true } + Signal { name: "clicked" } + Signal { + name: "hovered" + Parameter { name: "state"; type: "bool" } + } + Signal { name: "pressed" } + Signal { name: "released" } + Signal { name: "doubleClicked" } + } + Component { + name: "QtCharts::QScatterSeries" + prototype: "QtCharts::QXYSeries" + Enum { + name: "MarkerShape" + values: { + "MarkerShapeCircle": 0, + "MarkerShapeRectangle": 1 + } + } + Property { name: "color"; type: "QColor" } + Property { name: "borderColor"; type: "QColor" } + Property { name: "markerShape"; type: "MarkerShape" } + Property { name: "markerSize"; type: "double" } + Property { name: "brush"; type: "QBrush" } + Signal { + name: "colorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "borderColorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "markerShapeChanged" + Parameter { name: "shape"; type: "MarkerShape" } + } + Signal { + name: "markerSizeChanged" + Parameter { name: "size"; type: "double" } + } + } + Component { name: "QtCharts::QSplineSeries"; prototype: "QtCharts::QLineSeries" } + Component { name: "QtCharts::QStackedBarSeries"; prototype: "QtCharts::QAbstractBarSeries" } + Component { + name: "QtCharts::QVBarModelMapper" + prototype: "QtCharts::QBarModelMapper" + exports: [ + "QtCharts/VBarModelMapper 1.0", + "QtCharts/VBarModelMapper 2.0" + ] + exportMetaObjectRevisions: [0, 0] + Property { name: "series"; type: "QtCharts::QAbstractBarSeries"; isPointer: true } + Property { name: "model"; type: "QAbstractItemModel"; isPointer: true } + Property { name: "firstBarSetColumn"; type: "int" } + Property { name: "lastBarSetColumn"; type: "int" } + Property { name: "firstRow"; type: "int" } + Property { name: "rowCount"; type: "int" } + Signal { name: "seriesReplaced" } + Signal { name: "modelReplaced" } + } + Component { + name: "QtCharts::QVBoxPlotModelMapper" + prototype: "QtCharts::QBoxPlotModelMapper" + exports: ["QtCharts/VBoxPlotModelMapper 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "series"; type: "QtCharts::QBoxPlotSeries"; isPointer: true } + Property { name: "model"; type: "QAbstractItemModel"; isPointer: true } + Property { name: "firstBoxSetColumn"; type: "int" } + Property { name: "lastBoxSetColumn"; type: "int" } + Property { name: "firstRow"; type: "int" } + Property { name: "rowCount"; type: "int" } + Signal { name: "seriesReplaced" } + Signal { name: "modelReplaced" } + } + Component { + name: "QtCharts::QVCandlestickModelMapper" + prototype: "QtCharts::QCandlestickModelMapper" + exports: ["QtCharts/VCandlestickModelMapper 2.2"] + exportMetaObjectRevisions: [0] + Property { name: "timestampRow"; type: "int" } + Property { name: "openRow"; type: "int" } + Property { name: "highRow"; type: "int" } + Property { name: "lowRow"; type: "int" } + Property { name: "closeRow"; type: "int" } + Property { name: "firstSetColumn"; type: "int" } + Property { name: "lastSetColumn"; type: "int" } + } + Component { + name: "QtCharts::QVPieModelMapper" + prototype: "QtCharts::QPieModelMapper" + exports: [ + "QtCharts/VPieModelMapper 1.0", + "QtCharts/VPieModelMapper 2.0" + ] + exportMetaObjectRevisions: [0, 0] + Property { name: "series"; type: "QtCharts::QPieSeries"; isPointer: true } + Property { name: "model"; type: "QAbstractItemModel"; isPointer: true } + Property { name: "valuesColumn"; type: "int" } + Property { name: "labelsColumn"; type: "int" } + Property { name: "firstRow"; type: "int" } + Property { name: "rowCount"; type: "int" } + Signal { name: "seriesReplaced" } + Signal { name: "modelReplaced" } + } + Component { + name: "QtCharts::QVXYModelMapper" + prototype: "QtCharts::QXYModelMapper" + exports: [ + "QtCharts/VXYModelMapper 1.0", + "QtCharts/VXYModelMapper 2.0" + ] + exportMetaObjectRevisions: [0, 0] + Property { name: "series"; type: "QtCharts::QXYSeries"; isPointer: true } + Property { name: "model"; type: "QAbstractItemModel"; isPointer: true } + Property { name: "xColumn"; type: "int" } + Property { name: "yColumn"; type: "int" } + Property { name: "firstRow"; type: "int" } + Property { name: "rowCount"; type: "int" } + Signal { name: "seriesReplaced" } + Signal { name: "modelReplaced" } + } + Component { + name: "QtCharts::QValueAxis" + prototype: "QtCharts::QAbstractAxis" + exports: [ + "QtCharts/ValueAxis 1.1", + "QtCharts/ValueAxis 2.0", + "QtCharts/ValueAxis 2.3", + "QtCharts/ValuesAxis 1.0" + ] + exportMetaObjectRevisions: [0, 0, 1, 0] + Enum { + name: "TickType" + values: { + "TicksDynamic": 0, + "TicksFixed": 1 + } + } + Property { name: "tickCount"; type: "int" } + Property { name: "min"; type: "double" } + Property { name: "max"; type: "double" } + Property { name: "labelFormat"; type: "string" } + Property { name: "minorTickCount"; type: "int" } + Property { name: "tickAnchor"; revision: 1; type: "double" } + Property { name: "tickInterval"; revision: 1; type: "double" } + Property { name: "tickType"; revision: 1; type: "TickType" } + Signal { + name: "minChanged" + Parameter { name: "min"; type: "double" } + } + Signal { + name: "maxChanged" + Parameter { name: "max"; type: "double" } + } + Signal { + name: "rangeChanged" + Parameter { name: "min"; type: "double" } + Parameter { name: "max"; type: "double" } + } + Signal { + name: "tickCountChanged" + Parameter { name: "tickCount"; type: "int" } + } + Signal { + name: "minorTickCountChanged" + Parameter { name: "tickCount"; type: "int" } + } + Signal { + name: "labelFormatChanged" + Parameter { name: "format"; type: "string" } + } + Signal { + name: "tickIntervalChanged" + revision: 1 + Parameter { name: "interval"; type: "double" } + } + Signal { + name: "tickAnchorChanged" + revision: 1 + Parameter { name: "anchor"; type: "double" } + } + Signal { + name: "tickTypeChanged" + revision: 1 + Parameter { name: "type"; type: "QValueAxis::TickType" } + } + Method { name: "applyNiceNumbers" } + } + Component { + name: "QtCharts::QXYModelMapper" + prototype: "QObject" + exports: ["QtCharts/XYModelMapper 1.0", "QtCharts/XYModelMapper 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0, 0] + } + Component { + name: "QtCharts::QXYSeries" + prototype: "QtCharts::QAbstractSeries" + exports: ["QtCharts/XYSeries 1.0", "QtCharts/XYSeries 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0, 0] + Property { name: "pointsVisible"; type: "bool" } + Property { name: "color"; type: "QColor" } + Property { name: "pointLabelsFormat"; type: "string" } + Property { name: "pointLabelsVisible"; type: "bool" } + Property { name: "pointLabelsFont"; type: "QFont" } + Property { name: "pointLabelsColor"; type: "QColor" } + Property { name: "pointLabelsClipping"; type: "bool" } + Signal { + name: "clicked" + Parameter { name: "point"; type: "QPointF" } + } + Signal { + name: "hovered" + Parameter { name: "point"; type: "QPointF" } + Parameter { name: "state"; type: "bool" } + } + Signal { + name: "pressed" + Parameter { name: "point"; type: "QPointF" } + } + Signal { + name: "released" + Parameter { name: "point"; type: "QPointF" } + } + Signal { + name: "doubleClicked" + Parameter { name: "point"; type: "QPointF" } + } + Signal { + name: "pointReplaced" + Parameter { name: "index"; type: "int" } + } + Signal { + name: "pointRemoved" + Parameter { name: "index"; type: "int" } + } + Signal { + name: "pointAdded" + Parameter { name: "index"; type: "int" } + } + Signal { + name: "colorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { name: "pointsReplaced" } + Signal { + name: "pointLabelsFormatChanged" + Parameter { name: "format"; type: "string" } + } + Signal { + name: "pointLabelsVisibilityChanged" + Parameter { name: "visible"; type: "bool" } + } + Signal { + name: "pointLabelsFontChanged" + Parameter { name: "font"; type: "QFont" } + } + Signal { + name: "pointLabelsColorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "pointLabelsClippingChanged" + Parameter { name: "clipping"; type: "bool" } + } + Signal { + name: "pointsRemoved" + Parameter { name: "index"; type: "int" } + Parameter { name: "count"; type: "int" } + } + Signal { + name: "penChanged" + Parameter { name: "pen"; type: "QPen" } + } + } +} diff --git a/deployment_test/QtCharts/qmldir b/deployment_test/QtCharts/qmldir new file mode 100644 index 0000000000000000000000000000000000000000..10f4c598eb699c4a986d95608b757fe2f5124b51 --- /dev/null +++ b/deployment_test/QtCharts/qmldir @@ -0,0 +1,4 @@ +module QtCharts +plugin qtchartsqml2 +classname QtChartsQml2Plugin + diff --git a/deployment_test/QtCharts/qtchartsqml2.dll b/deployment_test/QtCharts/qtchartsqml2.dll new file mode 100644 index 0000000000000000000000000000000000000000..48a63ab32ea09d0f251417d898a41157b5c9e313 Binary files /dev/null and b/deployment_test/QtCharts/qtchartsqml2.dll differ diff --git a/deployment_test/QtDataVisualization/datavisualizationqml2.dll b/deployment_test/QtDataVisualization/datavisualizationqml2.dll new file mode 100644 index 0000000000000000000000000000000000000000..82903d7a78f4c4a6f66d29c340402da8a47cb05e Binary files /dev/null and b/deployment_test/QtDataVisualization/datavisualizationqml2.dll differ diff --git a/deployment_test/QtDataVisualization/plugins.qmltypes b/deployment_test/QtDataVisualization/plugins.qmltypes new file mode 100644 index 0000000000000000000000000000000000000000..69a48706e76c6b41a03aa26899fa152af88c4e43 --- /dev/null +++ b/deployment_test/QtDataVisualization/plugins.qmltypes @@ -0,0 +1,2375 @@ +import QtQuick.tooling 1.2 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. +// +// This file was auto-generated by: +// 'qmlplugindump -nonrelocatable -defaultplatform QtDataVisualization 1.14' + +Module { + dependencies: ["QtQuick 2.0"] + Component { + name: "QAbstractItemModel" + prototype: "QObject" + exports: ["QtDataVisualization/AbstractItemModel 1.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Enum { + name: "LayoutChangeHint" + values: { + "NoLayoutChangeHint": 0, + "VerticalSortHint": 1, + "HorizontalSortHint": 2 + } + } + Enum { + name: "CheckIndexOption" + values: { + "NoOption": 0, + "IndexIsValid": 1, + "DoNotUseParent": 2, + "ParentIsInvalid": 4 + } + } + Signal { + name: "dataChanged" + Parameter { name: "topLeft"; type: "QModelIndex" } + Parameter { name: "bottomRight"; type: "QModelIndex" } + Parameter { name: "roles"; type: "QVector<int>" } + } + Signal { + name: "dataChanged" + Parameter { name: "topLeft"; type: "QModelIndex" } + Parameter { name: "bottomRight"; type: "QModelIndex" } + } + Signal { + name: "headerDataChanged" + Parameter { name: "orientation"; type: "Qt::Orientation" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "layoutChanged" + Parameter { name: "parents"; type: "QList<QPersistentModelIndex>" } + Parameter { name: "hint"; type: "QAbstractItemModel::LayoutChangeHint" } + } + Signal { + name: "layoutChanged" + Parameter { name: "parents"; type: "QList<QPersistentModelIndex>" } + } + Signal { name: "layoutChanged" } + Signal { + name: "layoutAboutToBeChanged" + Parameter { name: "parents"; type: "QList<QPersistentModelIndex>" } + Parameter { name: "hint"; type: "QAbstractItemModel::LayoutChangeHint" } + } + Signal { + name: "layoutAboutToBeChanged" + Parameter { name: "parents"; type: "QList<QPersistentModelIndex>" } + } + Signal { name: "layoutAboutToBeChanged" } + Signal { + name: "rowsAboutToBeInserted" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "rowsInserted" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "rowsAboutToBeRemoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "rowsRemoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "columnsAboutToBeInserted" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "columnsInserted" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "columnsAboutToBeRemoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "columnsRemoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { name: "modelAboutToBeReset" } + Signal { name: "modelReset" } + Signal { + name: "rowsAboutToBeMoved" + Parameter { name: "sourceParent"; type: "QModelIndex" } + Parameter { name: "sourceStart"; type: "int" } + Parameter { name: "sourceEnd"; type: "int" } + Parameter { name: "destinationParent"; type: "QModelIndex" } + Parameter { name: "destinationRow"; type: "int" } + } + Signal { + name: "rowsMoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + Parameter { name: "destination"; type: "QModelIndex" } + Parameter { name: "row"; type: "int" } + } + Signal { + name: "columnsAboutToBeMoved" + Parameter { name: "sourceParent"; type: "QModelIndex" } + Parameter { name: "sourceStart"; type: "int" } + Parameter { name: "sourceEnd"; type: "int" } + Parameter { name: "destinationParent"; type: "QModelIndex" } + Parameter { name: "destinationColumn"; type: "int" } + } + Signal { + name: "columnsMoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + Parameter { name: "destination"; type: "QModelIndex" } + Parameter { name: "column"; type: "int" } + } + Method { name: "submit"; type: "bool" } + Method { name: "revert" } + Method { + name: "hasIndex" + type: "bool" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { + name: "hasIndex" + type: "bool" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + } + Method { + name: "index" + type: "QModelIndex" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { + name: "index" + type: "QModelIndex" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + } + Method { + name: "parent" + type: "QModelIndex" + Parameter { name: "child"; type: "QModelIndex" } + } + Method { + name: "sibling" + type: "QModelIndex" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + Parameter { name: "idx"; type: "QModelIndex" } + } + Method { + name: "rowCount" + type: "int" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { name: "rowCount"; type: "int" } + Method { + name: "columnCount" + type: "int" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { name: "columnCount"; type: "int" } + Method { + name: "hasChildren" + type: "bool" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { name: "hasChildren"; type: "bool" } + Method { + name: "data" + type: "QVariant" + Parameter { name: "index"; type: "QModelIndex" } + Parameter { name: "role"; type: "int" } + } + Method { + name: "data" + type: "QVariant" + Parameter { name: "index"; type: "QModelIndex" } + } + Method { + name: "setData" + type: "bool" + Parameter { name: "index"; type: "QModelIndex" } + Parameter { name: "value"; type: "QVariant" } + Parameter { name: "role"; type: "int" } + } + Method { + name: "setData" + type: "bool" + Parameter { name: "index"; type: "QModelIndex" } + Parameter { name: "value"; type: "QVariant" } + } + Method { + name: "headerData" + type: "QVariant" + Parameter { name: "section"; type: "int" } + Parameter { name: "orientation"; type: "Qt::Orientation" } + Parameter { name: "role"; type: "int" } + } + Method { + name: "headerData" + type: "QVariant" + Parameter { name: "section"; type: "int" } + Parameter { name: "orientation"; type: "Qt::Orientation" } + } + Method { + name: "fetchMore" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { + name: "canFetchMore" + type: "bool" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { + name: "flags" + type: "Qt::ItemFlags" + Parameter { name: "index"; type: "QModelIndex" } + } + Method { + name: "match" + type: "QModelIndexList" + Parameter { name: "start"; type: "QModelIndex" } + Parameter { name: "role"; type: "int" } + Parameter { name: "value"; type: "QVariant" } + Parameter { name: "hits"; type: "int" } + Parameter { name: "flags"; type: "Qt::MatchFlags" } + } + Method { + name: "match" + type: "QModelIndexList" + Parameter { name: "start"; type: "QModelIndex" } + Parameter { name: "role"; type: "int" } + Parameter { name: "value"; type: "QVariant" } + Parameter { name: "hits"; type: "int" } + } + Method { + name: "match" + type: "QModelIndexList" + Parameter { name: "start"; type: "QModelIndex" } + Parameter { name: "role"; type: "int" } + Parameter { name: "value"; type: "QVariant" } + } + } + Component { + name: "QtDataVisualization::AbstractDeclarative" + defaultProperty: "data" + prototype: "QQuickItem" + exports: [ + "QtDataVisualization/AbstractGraph3D 1.0", + "QtDataVisualization/AbstractGraph3D 1.1", + "QtDataVisualization/AbstractGraph3D 1.2" + ] + isCreatable: false + exportMetaObjectRevisions: [0, 1, 2] + Enum { + name: "SelectionFlag" + values: { + "SelectionNone": 0, + "SelectionItem": 1, + "SelectionRow": 2, + "SelectionItemAndRow": 3, + "SelectionColumn": 4, + "SelectionItemAndColumn": 5, + "SelectionRowAndColumn": 6, + "SelectionItemRowAndColumn": 7, + "SelectionSlice": 8, + "SelectionMultiSeries": 16 + } + } + Enum { + name: "SelectionFlags" + values: { + "SelectionNone": 0, + "SelectionItem": 1, + "SelectionRow": 2, + "SelectionItemAndRow": 3, + "SelectionColumn": 4, + "SelectionItemAndColumn": 5, + "SelectionRowAndColumn": 6, + "SelectionItemRowAndColumn": 7, + "SelectionSlice": 8, + "SelectionMultiSeries": 16 + } + } + Enum { + name: "ShadowQuality" + values: { + "ShadowQualityNone": 0, + "ShadowQualityLow": 1, + "ShadowQualityMedium": 2, + "ShadowQualityHigh": 3, + "ShadowQualitySoftLow": 4, + "ShadowQualitySoftMedium": 5, + "ShadowQualitySoftHigh": 6 + } + } + Enum { + name: "ElementType" + values: { + "ElementNone": 0, + "ElementSeries": 1, + "ElementAxisXLabel": 2, + "ElementAxisYLabel": 3, + "ElementAxisZLabel": 4, + "ElementCustomItem": 5 + } + } + Enum { + name: "RenderingMode" + values: { + "RenderDirectToBackground": 0, + "RenderDirectToBackground_NoClear": 1, + "RenderIndirect": 2 + } + } + Enum { + name: "OptimizationHint" + values: { + "OptimizationDefault": 0, + "OptimizationStatic": 1 + } + } + Enum { + name: "OptimizationHints" + values: { + "OptimizationDefault": 0, + "OptimizationStatic": 1 + } + } + Property { name: "selectionMode"; type: "SelectionFlags" } + Property { name: "shadowQuality"; type: "ShadowQuality" } + Property { name: "shadowsSupported"; type: "bool"; isReadonly: true } + Property { name: "msaaSamples"; type: "int" } + Property { name: "scene"; type: "Declarative3DScene"; isReadonly: true; isPointer: true } + Property { name: "inputHandler"; type: "QAbstract3DInputHandler"; isPointer: true } + Property { name: "theme"; type: "Q3DTheme"; isPointer: true } + Property { name: "renderingMode"; type: "RenderingMode" } + Property { name: "measureFps"; revision: 1; type: "bool" } + Property { name: "currentFps"; revision: 1; type: "double"; isReadonly: true } + Property { + name: "customItemList" + revision: 1 + type: "QCustom3DItem" + isList: true + isReadonly: true + } + Property { name: "orthoProjection"; revision: 1; type: "bool" } + Property { name: "selectedElement"; revision: 1; type: "ElementType"; isReadonly: true } + Property { name: "aspectRatio"; revision: 1; type: "double" } + Property { name: "optimizationHints"; revision: 1; type: "OptimizationHints" } + Property { name: "polar"; revision: 2; type: "bool" } + Property { name: "radialLabelOffset"; revision: 2; type: "float" } + Property { name: "horizontalAspectRatio"; revision: 2; type: "double" } + Property { name: "reflection"; revision: 2; type: "bool" } + Property { name: "reflectivity"; revision: 2; type: "double" } + Property { name: "locale"; revision: 2; type: "QLocale" } + Property { name: "queriedGraphPosition"; revision: 2; type: "QVector3D"; isReadonly: true } + Property { name: "margin"; revision: 2; type: "double" } + Signal { + name: "selectionModeChanged" + Parameter { name: "mode"; type: "AbstractDeclarative::SelectionFlags" } + } + Signal { + name: "shadowQualityChanged" + Parameter { name: "quality"; type: "AbstractDeclarative::ShadowQuality" } + } + Signal { + name: "shadowsSupportedChanged" + Parameter { name: "supported"; type: "bool" } + } + Signal { + name: "msaaSamplesChanged" + Parameter { name: "samples"; type: "int" } + } + Signal { + name: "sceneChanged" + Parameter { name: "scene"; type: "Q3DScene"; isPointer: true } + } + Signal { + name: "inputHandlerChanged" + Parameter { name: "inputHandler"; type: "QAbstract3DInputHandler"; isPointer: true } + } + Signal { + name: "themeChanged" + Parameter { name: "theme"; type: "Q3DTheme"; isPointer: true } + } + Signal { + name: "renderingModeChanged" + Parameter { name: "mode"; type: "AbstractDeclarative::RenderingMode" } + } + Signal { + name: "measureFpsChanged" + revision: 1 + Parameter { name: "enabled"; type: "bool" } + } + Signal { + name: "currentFpsChanged" + revision: 1 + Parameter { name: "fps"; type: "double" } + } + Signal { + name: "selectedElementChanged" + revision: 1 + Parameter { name: "type"; type: "AbstractDeclarative::ElementType" } + } + Signal { + name: "orthoProjectionChanged" + revision: 1 + Parameter { name: "enabled"; type: "bool" } + } + Signal { + name: "aspectRatioChanged" + revision: 1 + Parameter { name: "ratio"; type: "double" } + } + Signal { + name: "optimizationHintsChanged" + revision: 1 + Parameter { name: "hints"; type: "AbstractDeclarative::OptimizationHints" } + } + Signal { + name: "polarChanged" + revision: 2 + Parameter { name: "enabled"; type: "bool" } + } + Signal { + name: "radialLabelOffsetChanged" + revision: 2 + Parameter { name: "offset"; type: "float" } + } + Signal { + name: "horizontalAspectRatioChanged" + revision: 2 + Parameter { name: "ratio"; type: "double" } + } + Signal { + name: "reflectionChanged" + revision: 2 + Parameter { name: "enabled"; type: "bool" } + } + Signal { + name: "reflectivityChanged" + revision: 2 + Parameter { name: "reflectivity"; type: "double" } + } + Signal { + name: "localeChanged" + revision: 2 + Parameter { name: "locale"; type: "QLocale" } + } + Signal { + name: "queriedGraphPositionChanged" + revision: 2 + Parameter { name: "data"; type: "QVector3D" } + } + Signal { + name: "marginChanged" + revision: 2 + Parameter { name: "margin"; type: "double" } + } + Method { + name: "handleAxisXChanged" + Parameter { name: "axis"; type: "QAbstract3DAxis"; isPointer: true } + } + Method { + name: "handleAxisYChanged" + Parameter { name: "axis"; type: "QAbstract3DAxis"; isPointer: true } + } + Method { + name: "handleAxisZChanged" + Parameter { name: "axis"; type: "QAbstract3DAxis"; isPointer: true } + } + Method { + name: "windowDestroyed" + Parameter { name: "obj"; type: "QObject"; isPointer: true } + } + Method { name: "destroyContext" } + Method { name: "clearSelection" } + Method { + name: "addCustomItem" + revision: 1 + type: "int" + Parameter { name: "item"; type: "QCustom3DItem"; isPointer: true } + } + Method { name: "removeCustomItems"; revision: 1 } + Method { + name: "removeCustomItem" + revision: 1 + Parameter { name: "item"; type: "QCustom3DItem"; isPointer: true } + } + Method { + name: "removeCustomItemAt" + revision: 1 + Parameter { name: "position"; type: "QVector3D" } + } + Method { + name: "releaseCustomItem" + revision: 1 + Parameter { name: "item"; type: "QCustom3DItem"; isPointer: true } + } + Method { name: "selectedLabelIndex"; revision: 1; type: "int" } + Method { name: "selectedAxis"; revision: 1; type: "QAbstract3DAxis*" } + Method { name: "selectedCustomItemIndex"; revision: 1; type: "int" } + Method { name: "selectedCustomItem"; revision: 1; type: "QCustom3DItem*" } + } + Component { + name: "QtDataVisualization::ColorGradient" + defaultProperty: "stops" + prototype: "QObject" + exports: ["QtDataVisualization/ColorGradient 1.0"] + exportMetaObjectRevisions: [0] + Property { name: "stops"; type: "ColorGradientStop"; isList: true; isReadonly: true } + Signal { name: "updated" } + } + Component { + name: "QtDataVisualization::ColorGradientStop" + prototype: "QObject" + exports: ["QtDataVisualization/ColorGradientStop 1.0"] + exportMetaObjectRevisions: [0] + Property { name: "position"; type: "double" } + Property { name: "color"; type: "QColor" } + Signal { + name: "positionChanged" + Parameter { name: "position"; type: "double" } + } + Signal { + name: "colorChanged" + Parameter { name: "color"; type: "QColor" } + } + } + Component { + name: "QtDataVisualization::Declarative3DScene" + prototype: "QtDataVisualization::Q3DScene" + exports: [ + "QtDataVisualization/Scene3D 1.0", + "QtDataVisualization/Scene3D 1.2" + ] + isCreatable: false + exportMetaObjectRevisions: [0, 1] + Property { name: "selectionQueryPosition"; type: "QPointF" } + Property { name: "invalidSelectionPoint"; type: "QPoint"; isReadonly: true } + Signal { + name: "selectionQueryPositionChanged" + Parameter { name: "position"; type: "QPointF" } + } + } + Component { + name: "QtDataVisualization::DeclarativeBar3DSeries" + defaultProperty: "seriesChildren" + prototype: "QtDataVisualization::QBar3DSeries" + exports: ["QtDataVisualization/Bar3DSeries 1.0"] + exportMetaObjectRevisions: [0] + Property { name: "seriesChildren"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "selectedBar"; type: "QPointF" } + Property { name: "invalidSelectionPosition"; type: "QPointF"; isReadonly: true } + Property { name: "baseGradient"; type: "ColorGradient"; isPointer: true } + Property { name: "singleHighlightGradient"; type: "ColorGradient"; isPointer: true } + Property { name: "multiHighlightGradient"; type: "ColorGradient"; isPointer: true } + Signal { + name: "selectedBarChanged" + Parameter { name: "position"; type: "QPointF" } + } + Signal { + name: "baseGradientChanged" + Parameter { name: "gradient"; type: "ColorGradient"; isPointer: true } + } + Signal { + name: "singleHighlightGradientChanged" + Parameter { name: "gradient"; type: "ColorGradient"; isPointer: true } + } + Signal { + name: "multiHighlightGradientChanged" + Parameter { name: "gradient"; type: "ColorGradient"; isPointer: true } + } + Method { name: "handleBaseGradientUpdate" } + Method { name: "handleSingleHighlightGradientUpdate" } + Method { name: "handleMultiHighlightGradientUpdate" } + } + Component { + name: "QtDataVisualization::DeclarativeBars" + defaultProperty: "seriesList" + prototype: "QtDataVisualization::AbstractDeclarative" + exports: [ + "QtDataVisualization/Bars3D 1.0", + "QtDataVisualization/Bars3D 1.2" + ] + exportMetaObjectRevisions: [0, 1] + Property { name: "rowAxis"; type: "QCategory3DAxis"; isPointer: true } + Property { name: "valueAxis"; type: "QValue3DAxis"; isPointer: true } + Property { name: "columnAxis"; type: "QCategory3DAxis"; isPointer: true } + Property { name: "multiSeriesUniform"; type: "bool" } + Property { name: "barThickness"; type: "float" } + Property { name: "barSpacing"; type: "QSizeF" } + Property { name: "barSpacingRelative"; type: "bool" } + Property { name: "seriesList"; type: "QBar3DSeries"; isList: true; isReadonly: true } + Property { name: "selectedSeries"; type: "QBar3DSeries"; isReadonly: true; isPointer: true } + Property { name: "primarySeries"; type: "QBar3DSeries"; isPointer: true } + Property { name: "floorLevel"; revision: 1; type: "float" } + Signal { + name: "rowAxisChanged" + Parameter { name: "axis"; type: "QCategory3DAxis"; isPointer: true } + } + Signal { + name: "valueAxisChanged" + Parameter { name: "axis"; type: "QValue3DAxis"; isPointer: true } + } + Signal { + name: "columnAxisChanged" + Parameter { name: "axis"; type: "QCategory3DAxis"; isPointer: true } + } + Signal { + name: "multiSeriesUniformChanged" + Parameter { name: "uniform"; type: "bool" } + } + Signal { + name: "barThicknessChanged" + Parameter { name: "thicknessRatio"; type: "float" } + } + Signal { + name: "barSpacingChanged" + Parameter { name: "spacing"; type: "QSizeF" } + } + Signal { + name: "barSpacingRelativeChanged" + Parameter { name: "relative"; type: "bool" } + } + Signal { + name: "meshFileNameChanged" + Parameter { name: "filename"; type: "string" } + } + Signal { + name: "primarySeriesChanged" + Parameter { name: "series"; type: "QBar3DSeries"; isPointer: true } + } + Signal { + name: "selectedSeriesChanged" + Parameter { name: "series"; type: "QBar3DSeries"; isPointer: true } + } + Signal { + name: "floorLevelChanged" + revision: 1 + Parameter { name: "level"; type: "float" } + } + Method { + name: "handleAxisXChanged" + Parameter { name: "axis"; type: "QAbstract3DAxis"; isPointer: true } + } + Method { + name: "handleAxisYChanged" + Parameter { name: "axis"; type: "QAbstract3DAxis"; isPointer: true } + } + Method { + name: "handleAxisZChanged" + Parameter { name: "axis"; type: "QAbstract3DAxis"; isPointer: true } + } + Method { + name: "addSeries" + Parameter { name: "series"; type: "QBar3DSeries"; isPointer: true } + } + Method { + name: "removeSeries" + Parameter { name: "series"; type: "QBar3DSeries"; isPointer: true } + } + Method { + name: "insertSeries" + Parameter { name: "index"; type: "int" } + Parameter { name: "series"; type: "QBar3DSeries"; isPointer: true } + } + } + Component { + name: "QtDataVisualization::DeclarativeColor" + prototype: "QObject" + exports: ["QtDataVisualization/ThemeColor 1.0"] + exportMetaObjectRevisions: [0] + Property { name: "color"; type: "QColor" } + Signal { + name: "colorChanged" + Parameter { name: "color"; type: "QColor" } + } + } + Component { + name: "QtDataVisualization::DeclarativeScatter" + defaultProperty: "seriesList" + prototype: "QtDataVisualization::AbstractDeclarative" + exports: ["QtDataVisualization/Scatter3D 1.0"] + exportMetaObjectRevisions: [0] + Property { name: "axisX"; type: "QValue3DAxis"; isPointer: true } + Property { name: "axisY"; type: "QValue3DAxis"; isPointer: true } + Property { name: "axisZ"; type: "QValue3DAxis"; isPointer: true } + Property { name: "selectedSeries"; type: "QScatter3DSeries"; isReadonly: true; isPointer: true } + Property { name: "seriesList"; type: "QScatter3DSeries"; isList: true; isReadonly: true } + Signal { + name: "axisXChanged" + Parameter { name: "axis"; type: "QValue3DAxis"; isPointer: true } + } + Signal { + name: "axisYChanged" + Parameter { name: "axis"; type: "QValue3DAxis"; isPointer: true } + } + Signal { + name: "axisZChanged" + Parameter { name: "axis"; type: "QValue3DAxis"; isPointer: true } + } + Signal { + name: "selectedSeriesChanged" + Parameter { name: "series"; type: "QScatter3DSeries"; isPointer: true } + } + Method { + name: "handleAxisXChanged" + Parameter { name: "axis"; type: "QAbstract3DAxis"; isPointer: true } + } + Method { + name: "handleAxisYChanged" + Parameter { name: "axis"; type: "QAbstract3DAxis"; isPointer: true } + } + Method { + name: "handleAxisZChanged" + Parameter { name: "axis"; type: "QAbstract3DAxis"; isPointer: true } + } + Method { + name: "addSeries" + Parameter { name: "series"; type: "QScatter3DSeries"; isPointer: true } + } + Method { + name: "removeSeries" + Parameter { name: "series"; type: "QScatter3DSeries"; isPointer: true } + } + } + Component { + name: "QtDataVisualization::DeclarativeScatter3DSeries" + defaultProperty: "seriesChildren" + prototype: "QtDataVisualization::QScatter3DSeries" + exports: ["QtDataVisualization/Scatter3DSeries 1.0"] + exportMetaObjectRevisions: [0] + Property { name: "seriesChildren"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "baseGradient"; type: "ColorGradient"; isPointer: true } + Property { name: "singleHighlightGradient"; type: "ColorGradient"; isPointer: true } + Property { name: "multiHighlightGradient"; type: "ColorGradient"; isPointer: true } + Property { name: "invalidSelectionIndex"; type: "int"; isReadonly: true } + Signal { + name: "baseGradientChanged" + Parameter { name: "gradient"; type: "ColorGradient"; isPointer: true } + } + Signal { + name: "singleHighlightGradientChanged" + Parameter { name: "gradient"; type: "ColorGradient"; isPointer: true } + } + Signal { + name: "multiHighlightGradientChanged" + Parameter { name: "gradient"; type: "ColorGradient"; isPointer: true } + } + Method { name: "handleBaseGradientUpdate" } + Method { name: "handleSingleHighlightGradientUpdate" } + Method { name: "handleMultiHighlightGradientUpdate" } + } + Component { + name: "QtDataVisualization::DeclarativeSurface" + defaultProperty: "seriesList" + prototype: "QtDataVisualization::AbstractDeclarative" + exports: [ + "QtDataVisualization/Surface3D 1.0", + "QtDataVisualization/Surface3D 1.2" + ] + exportMetaObjectRevisions: [0, 1] + Property { name: "axisX"; type: "QValue3DAxis"; isPointer: true } + Property { name: "axisY"; type: "QValue3DAxis"; isPointer: true } + Property { name: "axisZ"; type: "QValue3DAxis"; isPointer: true } + Property { name: "selectedSeries"; type: "QSurface3DSeries"; isReadonly: true; isPointer: true } + Property { name: "seriesList"; type: "QSurface3DSeries"; isList: true; isReadonly: true } + Property { name: "flipHorizontalGrid"; revision: 1; type: "bool" } + Signal { + name: "axisXChanged" + Parameter { name: "axis"; type: "QValue3DAxis"; isPointer: true } + } + Signal { + name: "axisYChanged" + Parameter { name: "axis"; type: "QValue3DAxis"; isPointer: true } + } + Signal { + name: "axisZChanged" + Parameter { name: "axis"; type: "QValue3DAxis"; isPointer: true } + } + Signal { + name: "selectedSeriesChanged" + Parameter { name: "series"; type: "QSurface3DSeries"; isPointer: true } + } + Signal { + name: "flipHorizontalGridChanged" + revision: 1 + Parameter { name: "flip"; type: "bool" } + } + Method { + name: "handleAxisXChanged" + Parameter { name: "axis"; type: "QAbstract3DAxis"; isPointer: true } + } + Method { + name: "handleAxisYChanged" + Parameter { name: "axis"; type: "QAbstract3DAxis"; isPointer: true } + } + Method { + name: "handleAxisZChanged" + Parameter { name: "axis"; type: "QAbstract3DAxis"; isPointer: true } + } + Method { + name: "addSeries" + Parameter { name: "series"; type: "QSurface3DSeries"; isPointer: true } + } + Method { + name: "removeSeries" + Parameter { name: "series"; type: "QSurface3DSeries"; isPointer: true } + } + } + Component { + name: "QtDataVisualization::DeclarativeSurface3DSeries" + defaultProperty: "seriesChildren" + prototype: "QtDataVisualization::QSurface3DSeries" + exports: ["QtDataVisualization/Surface3DSeries 1.0"] + exportMetaObjectRevisions: [0] + Property { name: "seriesChildren"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "selectedPoint"; type: "QPointF" } + Property { name: "invalidSelectionPosition"; type: "QPointF"; isReadonly: true } + Property { name: "baseGradient"; type: "ColorGradient"; isPointer: true } + Property { name: "singleHighlightGradient"; type: "ColorGradient"; isPointer: true } + Property { name: "multiHighlightGradient"; type: "ColorGradient"; isPointer: true } + Signal { + name: "selectedPointChanged" + Parameter { name: "position"; type: "QPointF" } + } + Signal { + name: "baseGradientChanged" + Parameter { name: "gradient"; type: "ColorGradient"; isPointer: true } + } + Signal { + name: "singleHighlightGradientChanged" + Parameter { name: "gradient"; type: "ColorGradient"; isPointer: true } + } + Signal { + name: "multiHighlightGradientChanged" + Parameter { name: "gradient"; type: "ColorGradient"; isPointer: true } + } + Method { name: "handleBaseGradientUpdate" } + Method { name: "handleSingleHighlightGradientUpdate" } + Method { name: "handleMultiHighlightGradientUpdate" } + } + Component { + name: "QtDataVisualization::DeclarativeTheme3D" + defaultProperty: "themeChildren" + prototype: "QtDataVisualization::Q3DTheme" + exports: ["QtDataVisualization/Theme3D 1.0"] + exportMetaObjectRevisions: [0] + Property { name: "themeChildren"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "baseColors"; type: "DeclarativeColor"; isList: true; isReadonly: true } + Property { name: "baseGradients"; type: "ColorGradient"; isList: true; isReadonly: true } + Property { name: "singleHighlightGradient"; type: "ColorGradient"; isPointer: true } + Property { name: "multiHighlightGradient"; type: "ColorGradient"; isPointer: true } + Signal { + name: "singleHighlightGradientChanged" + Parameter { name: "gradient"; type: "ColorGradient"; isPointer: true } + } + Signal { + name: "multiHighlightGradientChanged" + Parameter { name: "gradient"; type: "ColorGradient"; isPointer: true } + } + } + Component { + name: "QtDataVisualization::Q3DCamera" + prototype: "QtDataVisualization::Q3DObject" + exports: [ + "QtDataVisualization/Camera3D 1.0", + "QtDataVisualization/Camera3D 1.2" + ] + exportMetaObjectRevisions: [0, 1] + Enum { + name: "CameraPreset" + values: { + "CameraPresetNone": -1, + "CameraPresetFrontLow": 0, + "CameraPresetFront": 1, + "CameraPresetFrontHigh": 2, + "CameraPresetLeftLow": 3, + "CameraPresetLeft": 4, + "CameraPresetLeftHigh": 5, + "CameraPresetRightLow": 6, + "CameraPresetRight": 7, + "CameraPresetRightHigh": 8, + "CameraPresetBehindLow": 9, + "CameraPresetBehind": 10, + "CameraPresetBehindHigh": 11, + "CameraPresetIsometricLeft": 12, + "CameraPresetIsometricLeftHigh": 13, + "CameraPresetIsometricRight": 14, + "CameraPresetIsometricRightHigh": 15, + "CameraPresetDirectlyAbove": 16, + "CameraPresetDirectlyAboveCW45": 17, + "CameraPresetDirectlyAboveCCW45": 18, + "CameraPresetFrontBelow": 19, + "CameraPresetLeftBelow": 20, + "CameraPresetRightBelow": 21, + "CameraPresetBehindBelow": 22, + "CameraPresetDirectlyBelow": 23 + } + } + Property { name: "xRotation"; type: "float" } + Property { name: "yRotation"; type: "float" } + Property { name: "zoomLevel"; type: "float" } + Property { name: "cameraPreset"; type: "CameraPreset" } + Property { name: "wrapXRotation"; type: "bool" } + Property { name: "wrapYRotation"; type: "bool" } + Property { name: "target"; revision: 1; type: "QVector3D" } + Property { name: "minZoomLevel"; revision: 1; type: "float" } + Property { name: "maxZoomLevel"; revision: 1; type: "float" } + Signal { + name: "xRotationChanged" + Parameter { name: "rotation"; type: "float" } + } + Signal { + name: "yRotationChanged" + Parameter { name: "rotation"; type: "float" } + } + Signal { + name: "zoomLevelChanged" + Parameter { name: "zoomLevel"; type: "float" } + } + Signal { + name: "cameraPresetChanged" + Parameter { name: "preset"; type: "Q3DCamera::CameraPreset" } + } + Signal { + name: "wrapXRotationChanged" + Parameter { name: "isEnabled"; type: "bool" } + } + Signal { + name: "wrapYRotationChanged" + Parameter { name: "isEnabled"; type: "bool" } + } + Signal { + name: "targetChanged" + revision: 1 + Parameter { name: "target"; type: "QVector3D" } + } + Signal { + name: "minZoomLevelChanged" + revision: 1 + Parameter { name: "zoomLevel"; type: "float" } + } + Signal { + name: "maxZoomLevelChanged" + revision: 1 + Parameter { name: "zoomLevel"; type: "float" } + } + } + Component { + name: "QtDataVisualization::Q3DInputHandler" + prototype: "QtDataVisualization::QAbstract3DInputHandler" + exports: ["QtDataVisualization/InputHandler3D 1.2"] + exportMetaObjectRevisions: [0] + Property { name: "rotationEnabled"; type: "bool" } + Property { name: "zoomEnabled"; type: "bool" } + Property { name: "selectionEnabled"; type: "bool" } + Property { name: "zoomAtTargetEnabled"; type: "bool" } + Signal { + name: "rotationEnabledChanged" + Parameter { name: "enable"; type: "bool" } + } + Signal { + name: "zoomEnabledChanged" + Parameter { name: "enable"; type: "bool" } + } + Signal { + name: "selectionEnabledChanged" + Parameter { name: "enable"; type: "bool" } + } + Signal { + name: "zoomAtTargetEnabledChanged" + Parameter { name: "enable"; type: "bool" } + } + } + Component { + name: "QtDataVisualization::Q3DLight" + prototype: "QtDataVisualization::Q3DObject" + exports: [ + "QtDataVisualization/Light3D 1.0", + "QtDataVisualization/Light3D 1.3" + ] + exportMetaObjectRevisions: [0, 1] + Property { name: "autoPosition"; revision: 1; type: "bool" } + Signal { + name: "autoPositionChanged" + revision: 1 + Parameter { name: "autoPosition"; type: "bool" } + } + } + Component { + name: "QtDataVisualization::Q3DObject" + prototype: "QObject" + exports: ["QtDataVisualization/Object3D 1.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Property { name: "parentScene"; type: "Q3DScene"; isReadonly: true; isPointer: true } + Property { name: "position"; type: "QVector3D" } + Signal { + name: "positionChanged" + Parameter { name: "position"; type: "QVector3D" } + } + } + Component { + name: "QtDataVisualization::Q3DScene" + prototype: "QObject" + Property { name: "viewport"; type: "QRect"; isReadonly: true } + Property { name: "primarySubViewport"; type: "QRect" } + Property { name: "secondarySubViewport"; type: "QRect" } + Property { name: "selectionQueryPosition"; type: "QPoint" } + Property { name: "secondarySubviewOnTop"; type: "bool" } + Property { name: "slicingActive"; type: "bool" } + Property { name: "activeCamera"; type: "Q3DCamera"; isPointer: true } + Property { name: "activeLight"; type: "Q3DLight"; isPointer: true } + Property { name: "devicePixelRatio"; type: "float" } + Property { name: "graphPositionQuery"; revision: 1; type: "QPoint" } + Signal { + name: "viewportChanged" + Parameter { name: "viewport"; type: "QRect" } + } + Signal { + name: "primarySubViewportChanged" + Parameter { name: "subViewport"; type: "QRect" } + } + Signal { + name: "secondarySubViewportChanged" + Parameter { name: "subViewport"; type: "QRect" } + } + Signal { + name: "secondarySubviewOnTopChanged" + Parameter { name: "isSecondaryOnTop"; type: "bool" } + } + Signal { + name: "slicingActiveChanged" + Parameter { name: "isSlicingActive"; type: "bool" } + } + Signal { + name: "activeCameraChanged" + Parameter { name: "camera"; type: "Q3DCamera"; isPointer: true } + } + Signal { + name: "activeLightChanged" + Parameter { name: "light"; type: "Q3DLight"; isPointer: true } + } + Signal { + name: "devicePixelRatioChanged" + Parameter { name: "pixelRatio"; type: "float" } + } + Signal { + name: "selectionQueryPositionChanged" + Parameter { name: "position"; type: "QPoint" } + } + Signal { + name: "graphPositionQueryChanged" + revision: 1 + Parameter { name: "position"; type: "QPoint" } + } + } + Component { + name: "QtDataVisualization::Q3DTheme" + prototype: "QObject" + exports: ["QtDataVisualization/Q3DTheme 1.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Enum { + name: "ColorStyle" + values: { + "ColorStyleUniform": 0, + "ColorStyleObjectGradient": 1, + "ColorStyleRangeGradient": 2 + } + } + Enum { + name: "Theme" + values: { + "ThemeQt": 0, + "ThemePrimaryColors": 1, + "ThemeDigia": 2, + "ThemeStoneMoss": 3, + "ThemeArmyBlue": 4, + "ThemeRetro": 5, + "ThemeEbony": 6, + "ThemeIsabelle": 7, + "ThemeUserDefined": 8 + } + } + Property { name: "type"; type: "Theme" } + Property { name: "baseColors"; type: "QList<QColor>" } + Property { name: "backgroundColor"; type: "QColor" } + Property { name: "windowColor"; type: "QColor" } + Property { name: "labelTextColor"; type: "QColor" } + Property { name: "labelBackgroundColor"; type: "QColor" } + Property { name: "gridLineColor"; type: "QColor" } + Property { name: "singleHighlightColor"; type: "QColor" } + Property { name: "multiHighlightColor"; type: "QColor" } + Property { name: "lightColor"; type: "QColor" } + Property { name: "baseGradients"; type: "QList<QLinearGradient>" } + Property { name: "singleHighlightGradient"; type: "QLinearGradient" } + Property { name: "multiHighlightGradient"; type: "QLinearGradient" } + Property { name: "lightStrength"; type: "float" } + Property { name: "ambientLightStrength"; type: "float" } + Property { name: "highlightLightStrength"; type: "float" } + Property { name: "labelBorderEnabled"; type: "bool" } + Property { name: "font"; type: "QFont" } + Property { name: "backgroundEnabled"; type: "bool" } + Property { name: "gridEnabled"; type: "bool" } + Property { name: "labelBackgroundEnabled"; type: "bool" } + Property { name: "colorStyle"; type: "ColorStyle" } + Signal { + name: "typeChanged" + Parameter { name: "themeType"; type: "Q3DTheme::Theme" } + } + Signal { + name: "baseColorsChanged" + Parameter { name: "colors"; type: "QList<QColor>" } + } + Signal { + name: "backgroundColorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "windowColorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "labelTextColorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "labelBackgroundColorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "gridLineColorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "singleHighlightColorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "multiHighlightColorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "lightColorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "baseGradientsChanged" + Parameter { name: "gradients"; type: "QList<QLinearGradient>" } + } + Signal { + name: "singleHighlightGradientChanged" + Parameter { name: "gradient"; type: "QLinearGradient" } + } + Signal { + name: "multiHighlightGradientChanged" + Parameter { name: "gradient"; type: "QLinearGradient" } + } + Signal { + name: "lightStrengthChanged" + Parameter { name: "strength"; type: "float" } + } + Signal { + name: "ambientLightStrengthChanged" + Parameter { name: "strength"; type: "float" } + } + Signal { + name: "highlightLightStrengthChanged" + Parameter { name: "strength"; type: "float" } + } + Signal { + name: "labelBorderEnabledChanged" + Parameter { name: "enabled"; type: "bool" } + } + Signal { + name: "fontChanged" + Parameter { name: "font"; type: "QFont" } + } + Signal { + name: "backgroundEnabledChanged" + Parameter { name: "enabled"; type: "bool" } + } + Signal { + name: "gridEnabledChanged" + Parameter { name: "enabled"; type: "bool" } + } + Signal { + name: "labelBackgroundEnabledChanged" + Parameter { name: "enabled"; type: "bool" } + } + Signal { + name: "colorStyleChanged" + Parameter { name: "style"; type: "Q3DTheme::ColorStyle" } + } + } + Component { + name: "QtDataVisualization::QAbstract3DAxis" + prototype: "QObject" + exports: [ + "QtDataVisualization/AbstractAxis3D 1.0", + "QtDataVisualization/AbstractAxis3D 1.1" + ] + isCreatable: false + exportMetaObjectRevisions: [0, 1] + Enum { + name: "AxisOrientation" + values: { + "AxisOrientationNone": 0, + "AxisOrientationX": 1, + "AxisOrientationY": 2, + "AxisOrientationZ": 4 + } + } + Enum { + name: "AxisType" + values: { + "AxisTypeNone": 0, + "AxisTypeCategory": 1, + "AxisTypeValue": 2 + } + } + Property { name: "title"; type: "string" } + Property { name: "labels"; type: "QStringList" } + Property { name: "orientation"; type: "AxisOrientation"; isReadonly: true } + Property { name: "type"; type: "AxisType"; isReadonly: true } + Property { name: "min"; type: "float" } + Property { name: "max"; type: "float" } + Property { name: "autoAdjustRange"; type: "bool" } + Property { name: "labelAutoRotation"; revision: 1; type: "float" } + Property { name: "titleVisible"; revision: 1; type: "bool" } + Property { name: "titleFixed"; revision: 1; type: "bool" } + Signal { + name: "titleChanged" + Parameter { name: "newTitle"; type: "string" } + } + Signal { + name: "orientationChanged" + Parameter { name: "orientation"; type: "QAbstract3DAxis::AxisOrientation" } + } + Signal { + name: "minChanged" + Parameter { name: "value"; type: "float" } + } + Signal { + name: "maxChanged" + Parameter { name: "value"; type: "float" } + } + Signal { + name: "rangeChanged" + Parameter { name: "min"; type: "float" } + Parameter { name: "max"; type: "float" } + } + Signal { + name: "autoAdjustRangeChanged" + Parameter { name: "autoAdjust"; type: "bool" } + } + Signal { + name: "labelAutoRotationChanged" + revision: 1 + Parameter { name: "angle"; type: "float" } + } + Signal { + name: "titleVisibilityChanged" + revision: 1 + Parameter { name: "visible"; type: "bool" } + } + Signal { + name: "titleFixedChanged" + revision: 1 + Parameter { name: "fixed"; type: "bool" } + } + } + Component { + name: "QtDataVisualization::QAbstract3DInputHandler" + prototype: "QObject" + exports: ["QtDataVisualization/AbstractInputHandler3D 1.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Enum { + name: "InputView" + values: { + "InputViewNone": 0, + "InputViewOnPrimary": 1, + "InputViewOnSecondary": 2 + } + } + Property { name: "inputView"; type: "InputView" } + Property { name: "inputPosition"; type: "QPoint" } + Property { name: "scene"; type: "Q3DScene"; isPointer: true } + Signal { + name: "positionChanged" + Parameter { name: "position"; type: "QPoint" } + } + Signal { + name: "inputViewChanged" + Parameter { name: "view"; type: "QAbstract3DInputHandler::InputView" } + } + Signal { + name: "sceneChanged" + Parameter { name: "scene"; type: "Q3DScene"; isPointer: true } + } + } + Component { + name: "QtDataVisualization::QAbstract3DSeries" + prototype: "QObject" + exports: [ + "QtDataVisualization/Abstract3DSeries 1.0", + "QtDataVisualization/Abstract3DSeries 1.1" + ] + isCreatable: false + exportMetaObjectRevisions: [0, 1] + Enum { + name: "SeriesType" + values: { + "SeriesTypeNone": 0, + "SeriesTypeBar": 1, + "SeriesTypeScatter": 2, + "SeriesTypeSurface": 4 + } + } + Enum { + name: "Mesh" + values: { + "MeshUserDefined": 0, + "MeshBar": 1, + "MeshCube": 2, + "MeshPyramid": 3, + "MeshCone": 4, + "MeshCylinder": 5, + "MeshBevelBar": 6, + "MeshBevelCube": 7, + "MeshSphere": 8, + "MeshMinimal": 9, + "MeshArrow": 10, + "MeshPoint": 11 + } + } + Property { name: "type"; type: "SeriesType"; isReadonly: true } + Property { name: "itemLabelFormat"; type: "string" } + Property { name: "visible"; type: "bool" } + Property { name: "mesh"; type: "Mesh" } + Property { name: "meshSmooth"; type: "bool" } + Property { name: "meshRotation"; type: "QQuaternion" } + Property { name: "userDefinedMesh"; type: "string" } + Property { name: "colorStyle"; type: "QtDataVisualization::Q3DTheme::ColorStyle" } + Property { name: "baseColor"; type: "QColor" } + Property { name: "baseGradient"; type: "QLinearGradient" } + Property { name: "singleHighlightColor"; type: "QColor" } + Property { name: "singleHighlightGradient"; type: "QLinearGradient" } + Property { name: "multiHighlightColor"; type: "QColor" } + Property { name: "multiHighlightGradient"; type: "QLinearGradient" } + Property { name: "name"; type: "string" } + Property { name: "itemLabel"; revision: 1; type: "string"; isReadonly: true } + Property { name: "itemLabelVisible"; revision: 1; type: "bool" } + Signal { + name: "itemLabelFormatChanged" + Parameter { name: "format"; type: "string" } + } + Signal { + name: "visibilityChanged" + Parameter { name: "visible"; type: "bool" } + } + Signal { + name: "meshChanged" + Parameter { name: "mesh"; type: "QAbstract3DSeries::Mesh" } + } + Signal { + name: "meshSmoothChanged" + Parameter { name: "enabled"; type: "bool" } + } + Signal { + name: "meshRotationChanged" + Parameter { name: "rotation"; type: "QQuaternion" } + } + Signal { + name: "userDefinedMeshChanged" + Parameter { name: "fileName"; type: "string" } + } + Signal { + name: "colorStyleChanged" + Parameter { name: "style"; type: "Q3DTheme::ColorStyle" } + } + Signal { + name: "baseColorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "baseGradientChanged" + Parameter { name: "gradient"; type: "QLinearGradient" } + } + Signal { + name: "singleHighlightColorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "singleHighlightGradientChanged" + Parameter { name: "gradient"; type: "QLinearGradient" } + } + Signal { + name: "multiHighlightColorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "multiHighlightGradientChanged" + Parameter { name: "gradient"; type: "QLinearGradient" } + } + Signal { + name: "nameChanged" + Parameter { name: "name"; type: "string" } + } + Signal { + name: "itemLabelChanged" + revision: 1 + Parameter { name: "label"; type: "string" } + } + Signal { + name: "itemLabelVisibilityChanged" + revision: 1 + Parameter { name: "visible"; type: "bool" } + } + Method { + name: "setMeshAxisAndAngle" + Parameter { name: "axis"; type: "QVector3D" } + Parameter { name: "angle"; type: "float" } + } + } + Component { + name: "QtDataVisualization::QAbstractDataProxy" + prototype: "QObject" + exports: ["QtDataVisualization/AbstractDataProxy 1.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Enum { + name: "DataType" + values: { + "DataTypeNone": 0, + "DataTypeBar": 1, + "DataTypeScatter": 2, + "DataTypeSurface": 4 + } + } + Property { name: "type"; type: "DataType"; isReadonly: true } + } + Component { + name: "QtDataVisualization::QBar3DSeries" + prototype: "QtDataVisualization::QAbstract3DSeries" + exports: ["QtDataVisualization/QBar3DSeries 1.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Property { name: "dataProxy"; type: "QBarDataProxy"; isPointer: true } + Property { name: "selectedBar"; type: "QPoint" } + Property { name: "meshAngle"; type: "float" } + Signal { + name: "dataProxyChanged" + Parameter { name: "proxy"; type: "QBarDataProxy"; isPointer: true } + } + Signal { + name: "selectedBarChanged" + Parameter { name: "position"; type: "QPoint" } + } + Signal { + name: "meshAngleChanged" + Parameter { name: "angle"; type: "float" } + } + } + Component { + name: "QtDataVisualization::QBarDataProxy" + prototype: "QtDataVisualization::QAbstractDataProxy" + exports: ["QtDataVisualization/BarDataProxy 1.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Property { name: "rowCount"; type: "int"; isReadonly: true } + Property { name: "rowLabels"; type: "QStringList" } + Property { name: "columnLabels"; type: "QStringList" } + Property { name: "series"; type: "QBar3DSeries"; isReadonly: true; isPointer: true } + Signal { name: "arrayReset" } + Signal { + name: "rowsAdded" + Parameter { name: "startIndex"; type: "int" } + Parameter { name: "count"; type: "int" } + } + Signal { + name: "rowsChanged" + Parameter { name: "startIndex"; type: "int" } + Parameter { name: "count"; type: "int" } + } + Signal { + name: "rowsRemoved" + Parameter { name: "startIndex"; type: "int" } + Parameter { name: "count"; type: "int" } + } + Signal { + name: "rowsInserted" + Parameter { name: "startIndex"; type: "int" } + Parameter { name: "count"; type: "int" } + } + Signal { + name: "itemChanged" + Parameter { name: "rowIndex"; type: "int" } + Parameter { name: "columnIndex"; type: "int" } + } + Signal { + name: "rowCountChanged" + Parameter { name: "count"; type: "int" } + } + Signal { + name: "seriesChanged" + Parameter { name: "series"; type: "QBar3DSeries"; isPointer: true } + } + } + Component { + name: "QtDataVisualization::QCategory3DAxis" + prototype: "QtDataVisualization::QAbstract3DAxis" + exports: ["QtDataVisualization/CategoryAxis3D 1.0"] + exportMetaObjectRevisions: [0] + Property { name: "labels"; type: "QStringList" } + } + Component { + name: "QtDataVisualization::QCustom3DItem" + prototype: "QObject" + exports: [ + "QtDataVisualization/Custom3DItem 1.1", + "QtDataVisualization/Custom3DItem 1.2" + ] + exportMetaObjectRevisions: [0, 1] + Property { name: "meshFile"; type: "string" } + Property { name: "textureFile"; type: "string" } + Property { name: "position"; type: "QVector3D" } + Property { name: "positionAbsolute"; type: "bool" } + Property { name: "scaling"; type: "QVector3D" } + Property { name: "rotation"; type: "QQuaternion" } + Property { name: "visible"; type: "bool" } + Property { name: "shadowCasting"; type: "bool" } + Property { name: "scalingAbsolute"; revision: 1; type: "bool" } + Signal { + name: "meshFileChanged" + Parameter { name: "meshFile"; type: "string" } + } + Signal { + name: "textureFileChanged" + Parameter { name: "textureFile"; type: "string" } + } + Signal { + name: "positionChanged" + Parameter { name: "position"; type: "QVector3D" } + } + Signal { + name: "positionAbsoluteChanged" + Parameter { name: "positionAbsolute"; type: "bool" } + } + Signal { + name: "scalingChanged" + Parameter { name: "scaling"; type: "QVector3D" } + } + Signal { + name: "rotationChanged" + Parameter { name: "rotation"; type: "QQuaternion" } + } + Signal { + name: "visibleChanged" + Parameter { name: "visible"; type: "bool" } + } + Signal { + name: "shadowCastingChanged" + Parameter { name: "shadowCasting"; type: "bool" } + } + Signal { + name: "scalingAbsoluteChanged" + revision: 1 + Parameter { name: "scalingAbsolute"; type: "bool" } + } + Method { + name: "setRotationAxisAndAngle" + Parameter { name: "axis"; type: "QVector3D" } + Parameter { name: "angle"; type: "float" } + } + } + Component { + name: "QtDataVisualization::QCustom3DLabel" + prototype: "QtDataVisualization::QCustom3DItem" + exports: ["QtDataVisualization/Custom3DLabel 1.1"] + exportMetaObjectRevisions: [0] + Property { name: "text"; type: "string" } + Property { name: "font"; type: "QFont" } + Property { name: "textColor"; type: "QColor" } + Property { name: "backgroundColor"; type: "QColor" } + Property { name: "borderEnabled"; type: "bool" } + Property { name: "backgroundEnabled"; type: "bool" } + Property { name: "facingCamera"; type: "bool" } + Signal { + name: "textChanged" + Parameter { name: "text"; type: "string" } + } + Signal { + name: "fontChanged" + Parameter { name: "font"; type: "QFont" } + } + Signal { + name: "textColorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "backgroundColorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "borderEnabledChanged" + Parameter { name: "enabled"; type: "bool" } + } + Signal { + name: "backgroundEnabledChanged" + Parameter { name: "enabled"; type: "bool" } + } + Signal { + name: "facingCameraChanged" + Parameter { name: "enabled"; type: "bool" } + } + } + Component { + name: "QtDataVisualization::QCustom3DVolume" + prototype: "QtDataVisualization::QCustom3DItem" + exports: ["QtDataVisualization/Custom3DVolume 1.2"] + exportMetaObjectRevisions: [0] + Property { name: "textureWidth"; type: "int" } + Property { name: "textureHeight"; type: "int" } + Property { name: "textureDepth"; type: "int" } + Property { name: "sliceIndexX"; type: "int" } + Property { name: "sliceIndexY"; type: "int" } + Property { name: "sliceIndexZ"; type: "int" } + Property { name: "colorTable"; type: "QVector<QRgb>" } + Property { name: "textureData"; type: "QVector<uchar>"; isPointer: true } + Property { name: "alphaMultiplier"; type: "float" } + Property { name: "preserveOpacity"; type: "bool" } + Property { name: "useHighDefShader"; type: "bool" } + Property { name: "drawSlices"; type: "bool" } + Property { name: "drawSliceFrames"; type: "bool" } + Property { name: "sliceFrameColor"; type: "QColor" } + Property { name: "sliceFrameWidths"; type: "QVector3D" } + Property { name: "sliceFrameGaps"; type: "QVector3D" } + Property { name: "sliceFrameThicknesses"; type: "QVector3D" } + Signal { + name: "textureWidthChanged" + Parameter { name: "value"; type: "int" } + } + Signal { + name: "textureHeightChanged" + Parameter { name: "value"; type: "int" } + } + Signal { + name: "textureDepthChanged" + Parameter { name: "value"; type: "int" } + } + Signal { + name: "sliceIndexXChanged" + Parameter { name: "value"; type: "int" } + } + Signal { + name: "sliceIndexYChanged" + Parameter { name: "value"; type: "int" } + } + Signal { + name: "sliceIndexZChanged" + Parameter { name: "value"; type: "int" } + } + Signal { + name: "textureDataChanged" + Parameter { name: "data"; type: "QVector<uchar>"; isPointer: true } + } + Signal { + name: "textureFormatChanged" + Parameter { name: "format"; type: "QImage::Format" } + } + Signal { + name: "alphaMultiplierChanged" + Parameter { name: "mult"; type: "float" } + } + Signal { + name: "preserveOpacityChanged" + Parameter { name: "enabled"; type: "bool" } + } + Signal { + name: "useHighDefShaderChanged" + Parameter { name: "enabled"; type: "bool" } + } + Signal { + name: "drawSlicesChanged" + Parameter { name: "enabled"; type: "bool" } + } + Signal { + name: "drawSliceFramesChanged" + Parameter { name: "enabled"; type: "bool" } + } + Signal { + name: "sliceFrameColorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "sliceFrameWidthsChanged" + Parameter { name: "values"; type: "QVector3D" } + } + Signal { + name: "sliceFrameGapsChanged" + Parameter { name: "values"; type: "QVector3D" } + } + Signal { + name: "sliceFrameThicknessesChanged" + Parameter { name: "values"; type: "QVector3D" } + } + } + Component { + name: "QtDataVisualization::QHeightMapSurfaceDataProxy" + prototype: "QtDataVisualization::QSurfaceDataProxy" + exports: ["QtDataVisualization/HeightMapSurfaceDataProxy 1.0"] + exportMetaObjectRevisions: [0] + Property { name: "heightMap"; type: "QImage" } + Property { name: "heightMapFile"; type: "string" } + Property { name: "minXValue"; type: "float" } + Property { name: "maxXValue"; type: "float" } + Property { name: "minZValue"; type: "float" } + Property { name: "maxZValue"; type: "float" } + Signal { + name: "heightMapChanged" + Parameter { name: "image"; type: "QImage" } + } + Signal { + name: "heightMapFileChanged" + Parameter { name: "filename"; type: "string" } + } + Signal { + name: "minXValueChanged" + Parameter { name: "value"; type: "float" } + } + Signal { + name: "maxXValueChanged" + Parameter { name: "value"; type: "float" } + } + Signal { + name: "minZValueChanged" + Parameter { name: "value"; type: "float" } + } + Signal { + name: "maxZValueChanged" + Parameter { name: "value"; type: "float" } + } + } + Component { + name: "QtDataVisualization::QItemModelBarDataProxy" + prototype: "QtDataVisualization::QBarDataProxy" + exports: [ + "QtDataVisualization/ItemModelBarDataProxy 1.0", + "QtDataVisualization/ItemModelBarDataProxy 1.1" + ] + exportMetaObjectRevisions: [0, 1] + Enum { + name: "MultiMatchBehavior" + values: { + "MMBFirst": 0, + "MMBLast": 1, + "MMBAverage": 2, + "MMBCumulative": 3 + } + } + Property { name: "itemModel"; type: "QAbstractItemModel"; isPointer: true } + Property { name: "rowRole"; type: "string" } + Property { name: "columnRole"; type: "string" } + Property { name: "valueRole"; type: "string" } + Property { name: "rotationRole"; type: "string" } + Property { name: "rowCategories"; type: "QStringList" } + Property { name: "columnCategories"; type: "QStringList" } + Property { name: "useModelCategories"; type: "bool" } + Property { name: "autoRowCategories"; type: "bool" } + Property { name: "autoColumnCategories"; type: "bool" } + Property { name: "rowRolePattern"; revision: 1; type: "QRegExp" } + Property { name: "columnRolePattern"; revision: 1; type: "QRegExp" } + Property { name: "valueRolePattern"; revision: 1; type: "QRegExp" } + Property { name: "rotationRolePattern"; revision: 1; type: "QRegExp" } + Property { name: "rowRoleReplace"; revision: 1; type: "string" } + Property { name: "columnRoleReplace"; revision: 1; type: "string" } + Property { name: "valueRoleReplace"; revision: 1; type: "string" } + Property { name: "rotationRoleReplace"; revision: 1; type: "string" } + Property { name: "multiMatchBehavior"; revision: 1; type: "MultiMatchBehavior" } + Signal { + name: "itemModelChanged" + Parameter { name: "itemModel"; type: "const QAbstractItemModel"; isPointer: true } + } + Signal { + name: "rowRoleChanged" + Parameter { name: "role"; type: "string" } + } + Signal { + name: "columnRoleChanged" + Parameter { name: "role"; type: "string" } + } + Signal { + name: "valueRoleChanged" + Parameter { name: "role"; type: "string" } + } + Signal { + name: "rotationRoleChanged" + Parameter { name: "role"; type: "string" } + } + Signal { + name: "useModelCategoriesChanged" + Parameter { name: "enable"; type: "bool" } + } + Signal { + name: "autoRowCategoriesChanged" + Parameter { name: "enable"; type: "bool" } + } + Signal { + name: "autoColumnCategoriesChanged" + Parameter { name: "enable"; type: "bool" } + } + Signal { + name: "rowRolePatternChanged" + revision: 1 + Parameter { name: "pattern"; type: "QRegExp" } + } + Signal { + name: "columnRolePatternChanged" + revision: 1 + Parameter { name: "pattern"; type: "QRegExp" } + } + Signal { + name: "valueRolePatternChanged" + revision: 1 + Parameter { name: "pattern"; type: "QRegExp" } + } + Signal { + name: "rotationRolePatternChanged" + revision: 1 + Parameter { name: "pattern"; type: "QRegExp" } + } + Signal { + name: "rowRoleReplaceChanged" + revision: 1 + Parameter { name: "replace"; type: "string" } + } + Signal { + name: "columnRoleReplaceChanged" + revision: 1 + Parameter { name: "replace"; type: "string" } + } + Signal { + name: "valueRoleReplaceChanged" + revision: 1 + Parameter { name: "replace"; type: "string" } + } + Signal { + name: "rotationRoleReplaceChanged" + revision: 1 + Parameter { name: "replace"; type: "string" } + } + Signal { + name: "multiMatchBehaviorChanged" + revision: 1 + Parameter { name: "behavior"; type: "MultiMatchBehavior" } + } + Method { + name: "rowCategoryIndex" + type: "int" + Parameter { name: "category"; type: "string" } + } + Method { + name: "columnCategoryIndex" + type: "int" + Parameter { name: "category"; type: "string" } + } + } + Component { + name: "QtDataVisualization::QItemModelScatterDataProxy" + prototype: "QtDataVisualization::QScatterDataProxy" + exports: [ + "QtDataVisualization/ItemModelScatterDataProxy 1.0", + "QtDataVisualization/ItemModelScatterDataProxy 1.1" + ] + exportMetaObjectRevisions: [0, 1] + Property { name: "itemModel"; type: "QAbstractItemModel"; isPointer: true } + Property { name: "xPosRole"; type: "string" } + Property { name: "yPosRole"; type: "string" } + Property { name: "zPosRole"; type: "string" } + Property { name: "rotationRole"; type: "string" } + Property { name: "xPosRolePattern"; revision: 1; type: "QRegExp" } + Property { name: "yPosRolePattern"; revision: 1; type: "QRegExp" } + Property { name: "zPosRolePattern"; revision: 1; type: "QRegExp" } + Property { name: "rotationRolePattern"; revision: 1; type: "QRegExp" } + Property { name: "xPosRoleReplace"; revision: 1; type: "string" } + Property { name: "yPosRoleReplace"; revision: 1; type: "string" } + Property { name: "zPosRoleReplace"; revision: 1; type: "string" } + Property { name: "rotationRoleReplace"; revision: 1; type: "string" } + Signal { + name: "itemModelChanged" + Parameter { name: "itemModel"; type: "const QAbstractItemModel"; isPointer: true } + } + Signal { + name: "xPosRoleChanged" + Parameter { name: "role"; type: "string" } + } + Signal { + name: "yPosRoleChanged" + Parameter { name: "role"; type: "string" } + } + Signal { + name: "zPosRoleChanged" + Parameter { name: "role"; type: "string" } + } + Signal { + name: "rotationRoleChanged" + Parameter { name: "role"; type: "string" } + } + Signal { + name: "xPosRolePatternChanged" + revision: 1 + Parameter { name: "pattern"; type: "QRegExp" } + } + Signal { + name: "yPosRolePatternChanged" + revision: 1 + Parameter { name: "pattern"; type: "QRegExp" } + } + Signal { + name: "zPosRolePatternChanged" + revision: 1 + Parameter { name: "pattern"; type: "QRegExp" } + } + Signal { + name: "rotationRolePatternChanged" + revision: 1 + Parameter { name: "pattern"; type: "QRegExp" } + } + Signal { + name: "rotationRoleReplaceChanged" + revision: 1 + Parameter { name: "replace"; type: "string" } + } + Signal { + name: "xPosRoleReplaceChanged" + revision: 1 + Parameter { name: "replace"; type: "string" } + } + Signal { + name: "yPosRoleReplaceChanged" + revision: 1 + Parameter { name: "replace"; type: "string" } + } + Signal { + name: "zPosRoleReplaceChanged" + revision: 1 + Parameter { name: "replace"; type: "string" } + } + } + Component { + name: "QtDataVisualization::QItemModelSurfaceDataProxy" + prototype: "QtDataVisualization::QSurfaceDataProxy" + exports: [ + "QtDataVisualization/ItemModelSurfaceDataProxy 1.0", + "QtDataVisualization/ItemModelSurfaceDataProxy 1.1" + ] + exportMetaObjectRevisions: [0, 1] + Enum { + name: "MultiMatchBehavior" + values: { + "MMBFirst": 0, + "MMBLast": 1, + "MMBAverage": 2, + "MMBCumulativeY": 3 + } + } + Property { name: "itemModel"; type: "QAbstractItemModel"; isPointer: true } + Property { name: "rowRole"; type: "string" } + Property { name: "columnRole"; type: "string" } + Property { name: "xPosRole"; type: "string" } + Property { name: "yPosRole"; type: "string" } + Property { name: "zPosRole"; type: "string" } + Property { name: "rowCategories"; type: "QStringList" } + Property { name: "columnCategories"; type: "QStringList" } + Property { name: "useModelCategories"; type: "bool" } + Property { name: "autoRowCategories"; type: "bool" } + Property { name: "autoColumnCategories"; type: "bool" } + Property { name: "rowRolePattern"; revision: 1; type: "QRegExp" } + Property { name: "columnRolePattern"; revision: 1; type: "QRegExp" } + Property { name: "xPosRolePattern"; revision: 1; type: "QRegExp" } + Property { name: "yPosRolePattern"; revision: 1; type: "QRegExp" } + Property { name: "zPosRolePattern"; revision: 1; type: "QRegExp" } + Property { name: "rowRoleReplace"; revision: 1; type: "string" } + Property { name: "columnRoleReplace"; revision: 1; type: "string" } + Property { name: "xPosRoleReplace"; revision: 1; type: "string" } + Property { name: "yPosRoleReplace"; revision: 1; type: "string" } + Property { name: "zPosRoleReplace"; revision: 1; type: "string" } + Property { name: "multiMatchBehavior"; revision: 1; type: "MultiMatchBehavior" } + Signal { + name: "itemModelChanged" + Parameter { name: "itemModel"; type: "const QAbstractItemModel"; isPointer: true } + } + Signal { + name: "rowRoleChanged" + Parameter { name: "role"; type: "string" } + } + Signal { + name: "columnRoleChanged" + Parameter { name: "role"; type: "string" } + } + Signal { + name: "xPosRoleChanged" + Parameter { name: "role"; type: "string" } + } + Signal { + name: "yPosRoleChanged" + Parameter { name: "role"; type: "string" } + } + Signal { + name: "zPosRoleChanged" + Parameter { name: "role"; type: "string" } + } + Signal { + name: "useModelCategoriesChanged" + Parameter { name: "enable"; type: "bool" } + } + Signal { + name: "autoRowCategoriesChanged" + Parameter { name: "enable"; type: "bool" } + } + Signal { + name: "autoColumnCategoriesChanged" + Parameter { name: "enable"; type: "bool" } + } + Signal { + name: "rowRolePatternChanged" + revision: 1 + Parameter { name: "pattern"; type: "QRegExp" } + } + Signal { + name: "columnRolePatternChanged" + revision: 1 + Parameter { name: "pattern"; type: "QRegExp" } + } + Signal { + name: "xPosRolePatternChanged" + revision: 1 + Parameter { name: "pattern"; type: "QRegExp" } + } + Signal { + name: "yPosRolePatternChanged" + revision: 1 + Parameter { name: "pattern"; type: "QRegExp" } + } + Signal { + name: "zPosRolePatternChanged" + revision: 1 + Parameter { name: "pattern"; type: "QRegExp" } + } + Signal { + name: "rowRoleReplaceChanged" + revision: 1 + Parameter { name: "replace"; type: "string" } + } + Signal { + name: "columnRoleReplaceChanged" + revision: 1 + Parameter { name: "replace"; type: "string" } + } + Signal { + name: "xPosRoleReplaceChanged" + revision: 1 + Parameter { name: "replace"; type: "string" } + } + Signal { + name: "yPosRoleReplaceChanged" + revision: 1 + Parameter { name: "replace"; type: "string" } + } + Signal { + name: "zPosRoleReplaceChanged" + revision: 1 + Parameter { name: "replace"; type: "string" } + } + Signal { + name: "multiMatchBehaviorChanged" + revision: 1 + Parameter { name: "behavior"; type: "MultiMatchBehavior" } + } + Method { + name: "rowCategoryIndex" + type: "int" + Parameter { name: "category"; type: "string" } + } + Method { + name: "columnCategoryIndex" + type: "int" + Parameter { name: "category"; type: "string" } + } + } + Component { + name: "QtDataVisualization::QLogValue3DAxisFormatter" + prototype: "QtDataVisualization::QValue3DAxisFormatter" + exports: ["QtDataVisualization/LogValueAxis3DFormatter 1.1"] + exportMetaObjectRevisions: [0] + Property { name: "base"; type: "double" } + Property { name: "autoSubGrid"; type: "bool" } + Property { name: "showEdgeLabels"; type: "bool" } + Signal { + name: "baseChanged" + Parameter { name: "base"; type: "double" } + } + Signal { + name: "autoSubGridChanged" + Parameter { name: "enabled"; type: "bool" } + } + Signal { + name: "showEdgeLabelsChanged" + Parameter { name: "enabled"; type: "bool" } + } + } + Component { + name: "QtDataVisualization::QScatter3DSeries" + prototype: "QtDataVisualization::QAbstract3DSeries" + exports: ["QtDataVisualization/QScatter3DSeries 1.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Property { name: "dataProxy"; type: "QScatterDataProxy"; isPointer: true } + Property { name: "selectedItem"; type: "int" } + Property { name: "itemSize"; type: "float" } + Signal { + name: "dataProxyChanged" + Parameter { name: "proxy"; type: "QScatterDataProxy"; isPointer: true } + } + Signal { + name: "selectedItemChanged" + Parameter { name: "index"; type: "int" } + } + Signal { + name: "itemSizeChanged" + Parameter { name: "size"; type: "float" } + } + } + Component { + name: "QtDataVisualization::QScatterDataProxy" + prototype: "QtDataVisualization::QAbstractDataProxy" + exports: ["QtDataVisualization/ScatterDataProxy 1.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Property { name: "itemCount"; type: "int"; isReadonly: true } + Property { name: "series"; type: "QScatter3DSeries"; isReadonly: true; isPointer: true } + Signal { name: "arrayReset" } + Signal { + name: "itemsAdded" + Parameter { name: "startIndex"; type: "int" } + Parameter { name: "count"; type: "int" } + } + Signal { + name: "itemsChanged" + Parameter { name: "startIndex"; type: "int" } + Parameter { name: "count"; type: "int" } + } + Signal { + name: "itemsRemoved" + Parameter { name: "startIndex"; type: "int" } + Parameter { name: "count"; type: "int" } + } + Signal { + name: "itemsInserted" + Parameter { name: "startIndex"; type: "int" } + Parameter { name: "count"; type: "int" } + } + Signal { + name: "itemCountChanged" + Parameter { name: "count"; type: "int" } + } + Signal { + name: "seriesChanged" + Parameter { name: "series"; type: "QScatter3DSeries"; isPointer: true } + } + } + Component { + name: "QtDataVisualization::QSurface3DSeries" + prototype: "QtDataVisualization::QAbstract3DSeries" + exports: ["QtDataVisualization/QSurface3DSeries 1.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Enum { + name: "DrawFlag" + values: { + "DrawWireframe": 1, + "DrawSurface": 2, + "DrawSurfaceAndWireframe": 3 + } + } + Enum { + name: "DrawFlags" + values: { + "DrawWireframe": 1, + "DrawSurface": 2, + "DrawSurfaceAndWireframe": 3 + } + } + Property { name: "dataProxy"; type: "QSurfaceDataProxy"; isPointer: true } + Property { name: "selectedPoint"; type: "QPoint" } + Property { name: "flatShadingEnabled"; type: "bool" } + Property { name: "flatShadingSupported"; type: "bool"; isReadonly: true } + Property { name: "drawMode"; type: "DrawFlags" } + Property { name: "texture"; type: "QImage" } + Property { name: "textureFile"; type: "string" } + Signal { + name: "dataProxyChanged" + Parameter { name: "proxy"; type: "QSurfaceDataProxy"; isPointer: true } + } + Signal { + name: "selectedPointChanged" + Parameter { name: "position"; type: "QPoint" } + } + Signal { + name: "flatShadingEnabledChanged" + Parameter { name: "enable"; type: "bool" } + } + Signal { + name: "flatShadingSupportedChanged" + Parameter { name: "enable"; type: "bool" } + } + Signal { + name: "drawModeChanged" + Parameter { name: "mode"; type: "QSurface3DSeries::DrawFlags" } + } + Signal { + name: "textureChanged" + Parameter { name: "image"; type: "QImage" } + } + Signal { + name: "textureFileChanged" + Parameter { name: "filename"; type: "string" } + } + } + Component { + name: "QtDataVisualization::QSurfaceDataProxy" + prototype: "QtDataVisualization::QAbstractDataProxy" + exports: ["QtDataVisualization/SurfaceDataProxy 1.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Property { name: "rowCount"; type: "int"; isReadonly: true } + Property { name: "columnCount"; type: "int"; isReadonly: true } + Property { name: "series"; type: "QSurface3DSeries"; isReadonly: true; isPointer: true } + Signal { name: "arrayReset" } + Signal { + name: "rowsAdded" + Parameter { name: "startIndex"; type: "int" } + Parameter { name: "count"; type: "int" } + } + Signal { + name: "rowsChanged" + Parameter { name: "startIndex"; type: "int" } + Parameter { name: "count"; type: "int" } + } + Signal { + name: "rowsRemoved" + Parameter { name: "startIndex"; type: "int" } + Parameter { name: "count"; type: "int" } + } + Signal { + name: "rowsInserted" + Parameter { name: "startIndex"; type: "int" } + Parameter { name: "count"; type: "int" } + } + Signal { + name: "itemChanged" + Parameter { name: "rowIndex"; type: "int" } + Parameter { name: "columnIndex"; type: "int" } + } + Signal { + name: "rowCountChanged" + Parameter { name: "count"; type: "int" } + } + Signal { + name: "columnCountChanged" + Parameter { name: "count"; type: "int" } + } + Signal { + name: "seriesChanged" + Parameter { name: "series"; type: "QSurface3DSeries"; isPointer: true } + } + } + Component { + name: "QtDataVisualization::QTouch3DInputHandler" + prototype: "QtDataVisualization::Q3DInputHandler" + exports: ["QtDataVisualization/TouchInputHandler3D 1.2"] + exportMetaObjectRevisions: [0] + } + Component { + name: "QtDataVisualization::QValue3DAxis" + prototype: "QtDataVisualization::QAbstract3DAxis" + exports: [ + "QtDataVisualization/ValueAxis3D 1.0", + "QtDataVisualization/ValueAxis3D 1.1" + ] + exportMetaObjectRevisions: [0, 1] + Property { name: "segmentCount"; type: "int" } + Property { name: "subSegmentCount"; type: "int" } + Property { name: "labelFormat"; type: "string" } + Property { name: "formatter"; revision: 1; type: "QValue3DAxisFormatter"; isPointer: true } + Property { name: "reversed"; revision: 1; type: "bool" } + Signal { + name: "segmentCountChanged" + Parameter { name: "count"; type: "int" } + } + Signal { + name: "subSegmentCountChanged" + Parameter { name: "count"; type: "int" } + } + Signal { + name: "labelFormatChanged" + Parameter { name: "format"; type: "string" } + } + Signal { + name: "formatterChanged" + revision: 1 + Parameter { name: "formatter"; type: "QValue3DAxisFormatter"; isPointer: true } + } + Signal { + name: "reversedChanged" + revision: 1 + Parameter { name: "enable"; type: "bool" } + } + } + Component { + name: "QtDataVisualization::QValue3DAxisFormatter" + prototype: "QObject" + exports: ["QtDataVisualization/ValueAxis3DFormatter 1.1"] + exportMetaObjectRevisions: [0] + } +} diff --git a/deployment_test/QtDataVisualization/qmldir b/deployment_test/QtDataVisualization/qmldir new file mode 100644 index 0000000000000000000000000000000000000000..bbd178680440e52a25bcdb5fd6e688cbcaf24489 --- /dev/null +++ b/deployment_test/QtDataVisualization/qmldir @@ -0,0 +1,4 @@ +module QtDataVisualization +plugin datavisualizationqml2 +classname QtDataVisualizationQml2Plugin + diff --git a/deployment_test/QtGraphicalEffects/Blend.qml b/deployment_test/QtGraphicalEffects/Blend.qml new file mode 100644 index 0000000000000000000000000000000000000000..e5f4816a9529da8b460f0dbe2405501313d9c87f --- /dev/null +++ b/deployment_test/QtGraphicalEffects/Blend.qml @@ -0,0 +1,486 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtGraphicalEffects.private 1.12 + +/*! + \qmltype Blend + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-blend + \brief Merges two source items by using a blend mode. + + Blend mode can be selected with the \l{Blend::mode}{mode} property. + + \table + \header + \li source + \li foregroundSource + \li Effect applied + \row + \li \image Original_bug.png + \li \image Original_butterfly.png + \li \image Blend_bug_and_butterfly.png + \endtable + + \note This effect is available when running with OpenGL. + + \section1 Example + + The following example shows how to apply the effect. + \snippet Blend-example.qml example + +*/ + +Item { + id: rootItem + + /*! + This property defines the source item that is going to be the base when + \l{Blend::foregroundSource}{foregroundSource} is blended over it. + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property variant source + + /*! + This property defines the item that is going to be blended over the + \l{Blend::source}{source}. + + \note It is not supported to let the effect include itself, for + instance by setting foregroundSource to the effect's parent. + */ + property variant foregroundSource + + /*! + This property defines the mode which is used when foregroundSource is + blended over source. Values are case insensitive. + + \table + \header + \li mode + \li description + \row + \li normal + \li The pixel component values from foregroundSource are written + over source by using alpha blending. + \row + \li addition + \li The pixel component values from source and foregroundSource are + added together and written. + \row + \li average + \li The pixel component values from source and foregroundSource are + averaged and written. + \row + \li color + \li The lightness value from source is combined with hue and + saturation from foregroundSource and written. + \row + \li colorBurn + \li The darker pixels from source are darkened more, if both source + and foregroundSource pixels are light the result is light. + \row + \li colorDodge + \li The lighter pixels from source are lightened more, if both + source and foregroundSource pixels are dark the result is dark. + \row + \li darken + \li The darker pixel component value from source and + foregroundSource is written. + \row + \li darkerColor + \li The lower luminance pixel rgb-value from source and + foregroundSource is written. + \row + \li difference + \li The absolute pixel component value difference between source and + foregroundSource is written. + \row + \li divide + \li The pixel component values from source is divided by the value + from foregroundSource and written. + \row + \li exclusion + \li The pixel component value difference with reduced contrast + between source and foregroundSource is written. + \row + \li hardLight + \li The pixel component values from source are lightened or darkened + according to foregroundSource values and written. + \row + \li hue + \li The hue value from foregroundSource is combined with saturation + and lightness from source and written. + \row + \li lighten + \li The lightest pixel component value from source and + foregroundSource is written. + \row + \li lighterColor + \li The higher luminance pixel rgb-value from source and + foregroundSource is written. + \row + \li lightness + \li The lightness value from foregroundSource is combined with hue + and saturation from source and written. + \row + \li multiply + \li The pixel component values from source and foregroundSource are + multiplied together and written. + \row + \li negation + \li The inverted absolute pixel component value difference between + source and foregroundSource is written. + \row + \li saturation + \li The saturation value from foregroundSource is combined with hue + and lightness from source and written. + \row + \li screen + \li The pixel values from source and foregroundSource are negated, + then multiplied, negated again, and written. + \row + \li subtract + \li Pixel value from foregroundSource is subracted from source and + written. + \row + \li softLight + \li The pixel component values from source are lightened or darkened + slightly according to foregroundSource values and written. + + \endtable + + \table + \header + \li Example source + \li Example foregroundSource + \row + \li \image Original_bug.png + \li \image Original_butterfly.png + \endtable + + \table + \header + \li Output examples with different mode values + \li + \li + \row + \li \image Blend_mode1.png + \li \image Blend_mode2.png + \li \image Blend_mode3.png + \row + \li \b { mode: normal } + \li \b { mode: addition } + \li \b { mode: average } + \row + \li \image Blend_mode4.png + \li \image Blend_mode5.png + \li \image Blend_mode6.png + \row + \li \b { mode: color } + \li \b { mode: colorBurn } + \li \b { mode: colorDodge } + \row + \li \image Blend_mode7.png + \li \image Blend_mode8.png + \li \image Blend_mode9.png + \row + \li \b { mode: darken } + \li \b { mode: darkerColor } + \li \b { mode: difference } + \row + \li \image Blend_mode10.png + \li \image Blend_mode11.png + \li \image Blend_mode12.png + \row + \li \b { mode: divide } + \li \b { mode: exclusion } + \li \b { mode: hardlight } + \row + \li \image Blend_mode13.png + \li \image Blend_mode14.png + \li \image Blend_mode15.png + \row + \li \b { mode: hue } + \li \b { mode: lighten } + \li \b { mode: lighterColor } + \row + \li \image Blend_mode16.png + \li \image Blend_mode17.png + \li \image Blend_mode18.png + \row + \li \b { mode: lightness } + \li \b { mode: negation } + \li \b { mode: multiply } + \row + \li \image Blend_mode19.png + \li \image Blend_mode20.png + \li \image Blend_mode21.png + \row + \li \b { mode: saturation } + \li \b { mode: screen } + \li \b { mode: subtract } + \row + \li \image Blend_mode22.png + \row + \li \b { mode: softLight } + \endtable + */ + property string mode: "normal" + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + + Every time the source or effect properties are changed, the pixels in the + cache must be updated. Memory consumption is increased, because an extra + buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to false. + + */ + property bool cached: false + + SourceProxy { + id: backgroundSourceProxy + input: rootItem.source + } + + SourceProxy { + id: foregroundSourceProxy + input: rootItem.foregroundSource + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: parent + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + ShaderEffect { + id: shaderItem + property variant backgroundSource: backgroundSourceProxy.output + property variant foregroundSource: foregroundSourceProxy.output + property string mode: rootItem.mode + anchors.fill: parent + + fragmentShader: fragmentShaderBegin + blendModeNormal + fragmentShaderEnd + + function buildFragmentShader() { + var shader = fragmentShaderBegin + + switch (mode.toLowerCase()) { + case "addition" : shader += blendModeAddition; break; + case "average" : shader += blendModeAverage; break; + case "color" : shader += blendModeColor; break; + case "colorburn" : shader += blendModeColorBurn; break; + case "colordodge" : shader += blendModeColorDodge; break; + case "darken" : shader += blendModeDarken; break; + case "darkercolor" : shader += blendModeDarkerColor; break; + case "difference" : shader += blendModeDifference; break; + case "divide" : shader += blendModeDivide; break; + case "exclusion" : shader += blendModeExclusion; break; + case "hardlight" : shader += blendModeHardLight; break; + case "hue" : shader += blendModeHue; break; + case "lighten" : shader += blendModeLighten; break; + case "lightercolor" : shader += blendModeLighterColor; break; + case "lightness" : shader += blendModeLightness; break; + case "negation" : shader += blendModeNegation; break; + case "normal" : shader += blendModeNormal; break; + case "multiply" : shader += blendModeMultiply; break; + case "saturation" : shader += blendModeSaturation; break; + case "screen" : shader += blendModeScreen; break; + case "subtract" : shader += blendModeSubtract; break; + case "softlight" : shader += blendModeSoftLight; break; + default: shader += "gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);"; break; + } + + shader += fragmentShaderEnd + fragmentShader = shader + + // Workaraound for a bug just to make sure display gets updated when the mode changes. + backgroundSourceChanged() + } + + Component.onCompleted: { + buildFragmentShader() + } + + onModeChanged: { + buildFragmentShader() + } + + property string blendModeAddition: "result.rgb = min(rgb1 + rgb2, 1.0);" + property string blendModeAverage: "result.rgb = 0.5 * (rgb1 + rgb2);" + property string blendModeColor: "result.rgb = HSLtoRGB(vec3(RGBtoHSL(rgb2).xy, RGBtoL(rgb1)));" + property string blendModeColorBurn: "result.rgb = clamp(1.0 - ((1.0 - rgb1) / max(vec3(1.0 / 256.0), rgb2)), vec3(0.0), vec3(1.0));" + property string blendModeColorDodge: "result.rgb = clamp(rgb1 / max(vec3(1.0 / 256.0), (1.0 - rgb2)), vec3(0.0), vec3(1.0));" + property string blendModeDarken: "result.rgb = min(rgb1, rgb2);" + property string blendModeDarkerColor: "result.rgb = 0.3 * rgb1.r + 0.59 * rgb1.g + 0.11 * rgb1.b > 0.3 * rgb2.r + 0.59 * rgb2.g + 0.11 * rgb2.b ? rgb2 : rgb1;" + property string blendModeDifference: "result.rgb = abs(rgb1 - rgb2);" + property string blendModeDivide: "result.rgb = clamp(rgb1 / rgb2, 0.0, 1.0);" + property string blendModeExclusion: "result.rgb = rgb1 + rgb2 - 2.0 * rgb1 * rgb2;" + property string blendModeHardLight: "result.rgb = vec3(channelBlendHardLight(rgb1.r, rgb2.r), channelBlendHardLight(rgb1.g, rgb2.g), channelBlendHardLight(rgb1.b, rgb2.b));" + property string blendModeHue: "result.rgb = HSLtoRGB(vec3(RGBtoHSL(rgb2).x, RGBtoHSL(rgb1).yz));" + property string blendModeLighten: "result.rgb = max(rgb1, rgb2);" + property string blendModeLighterColor: "result.rgb = 0.3 * rgb1.r + 0.59 * rgb1.g + 0.11 * rgb1.b > 0.3 * rgb2.r + 0.59 * rgb2.g + 0.11 * rgb2.b ? rgb1 : rgb2;" + property string blendModeLightness: "result.rgb = HSLtoRGB(vec3(RGBtoHSL(rgb1).xy, RGBtoL(rgb2)));" + property string blendModeMultiply: "result.rgb = rgb1 * rgb2;" + property string blendModeNegation: "result.rgb = 1.0 - abs(1.0 - rgb1 - rgb2);" + property string blendModeNormal: "result.rgb = rgb2; a = max(color1.a, color2.a);" + property string blendModeSaturation: "lowp vec3 hsl1 = RGBtoHSL(rgb1); result.rgb = HSLtoRGB(vec3(hsl1.x, RGBtoHSL(rgb2).y, hsl1.z));" + property string blendModeScreen: "result.rgb = 1.0 - (vec3(1.0) - rgb1) * (vec3(1.0) - rgb2);" + property string blendModeSubtract: "result.rgb = max(rgb1 - rgb2, vec3(0.0));" + property string blendModeSoftLight: "result.rgb = rgb1 * ((1.0 - rgb1) * rgb2 + (1.0 - (1.0 - rgb1) * (1.0 - rgb2)));" + + property string fragmentCoreShaderWorkaround: (GraphicsInfo.profile === GraphicsInfo.OpenGLCoreProfile ? "#version 150 core + #define varying in + #define texture2D texture + out vec4 fragColor; + #define gl_FragColor fragColor + " : "") + + property string fragmentShaderBegin: fragmentCoreShaderWorkaround + " + varying mediump vec2 qt_TexCoord0; + uniform highp float qt_Opacity; + uniform lowp sampler2D backgroundSource; + uniform lowp sampler2D foregroundSource; + + highp float RGBtoL(highp vec3 color) { + highp float cmin = min(color.r, min(color.g, color.b)); + highp float cmax = max(color.r, max(color.g, color.b)); + highp float l = (cmin + cmax) / 2.0; + return l; + } + + highp vec3 RGBtoHSL(highp vec3 color) { + highp float cmin = min(color.r, min(color.g, color.b)); + highp float cmax = max(color.r, max(color.g, color.b)); + highp float h = 0.0; + highp float s = 0.0; + highp float l = (cmin + cmax) / 2.0; + highp float diff = cmax - cmin; + + if (diff > 1.0 / 256.0) { + if (l < 0.5) + s = diff / (cmin + cmax); + else + s = diff / (2.0 - (cmin + cmax)); + + if (color.r == cmax) + h = (color.g - color.b) / diff; + else if (color.g == cmax) + h = 2.0 + (color.b - color.r) / diff; + else + h = 4.0 + (color.r - color.g) / diff; + + h /= 6.0; + } + return vec3(h, s, l); + } + + highp float hueToIntensity(highp float v1, highp float v2, highp float h) { + h = fract(h); + if (h < 1.0 / 6.0) + return v1 + (v2 - v1) * 6.0 * h; + else if (h < 1.0 / 2.0) + return v2; + else if (h < 2.0 / 3.0) + return v1 + (v2 - v1) * 6.0 * (2.0 / 3.0 - h); + + return v1; + } + + highp vec3 HSLtoRGB(highp vec3 color) { + highp float h = color.x; + highp float l = color.z; + highp float s = color.y; + + if (s < 1.0 / 256.0) + return vec3(l, l, l); + + highp float v1; + highp float v2; + if (l < 0.5) + v2 = l * (1.0 + s); + else + v2 = (l + s) - (s * l); + + v1 = 2.0 * l - v2; + + highp float d = 1.0 / 3.0; + highp float r = hueToIntensity(v1, v2, h + d); + highp float g = hueToIntensity(v1, v2, h); + highp float b = hueToIntensity(v1, v2, h - d); + return vec3(r, g, b); + } + + lowp float channelBlendHardLight(lowp float c1, lowp float c2) { + return c2 > 0.5 ? (1.0 - (1.0 - 2.0 * (c2 - 0.5)) * (1.0 - c1)) : (2.0 * c1 * c2); + } + + void main() { + lowp vec4 result = vec4(0.0); + lowp vec4 color1 = texture2D(backgroundSource, qt_TexCoord0); + lowp vec4 color2 = texture2D(foregroundSource, qt_TexCoord0); + lowp vec3 rgb1 = color1.rgb / max(1.0/256.0, color1.a); + lowp vec3 rgb2 = color2.rgb / max(1.0/256.0, color2.a); + highp float a = max(color1.a, color1.a * color2.a); + " + + property string fragmentShaderEnd: " + gl_FragColor.rgb = mix(rgb1, result.rgb, color2.a); + gl_FragColor.rbg *= a; + gl_FragColor.a = a; + gl_FragColor *= qt_Opacity; + } + " + } +} diff --git a/deployment_test/QtGraphicalEffects/BrightnessContrast.qml b/deployment_test/QtGraphicalEffects/BrightnessContrast.qml new file mode 100644 index 0000000000000000000000000000000000000000..85b38bb20bee284b98e6c8edb9a2582d78d22001 --- /dev/null +++ b/deployment_test/QtGraphicalEffects/BrightnessContrast.qml @@ -0,0 +1,194 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtGraphicalEffects.private 1.12 + +/*! + \qmltype BrightnessContrast + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-color + \brief Adjusts brightness and contrast. + + This effect adjusts the source item colors. + Brightness adjustment changes the perceived luminance of the source item. + Contrast adjustment increases or decreases the color + and brightness variations. + + \table + \header + \li Source + \li Effect applied + \row + \li \image Original_bug.png + \li \image BrightnessContrast_bug.png + \endtable + + \note This effect is available when running with OpenGL. + + \section1 Example + + The following example shows how to apply the effect. + \snippet BrightnessContrast-example.qml example + +*/ +Item { + id: rootItem + + /*! + This property defines the source item that provides the source pixels + for the effect. + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property variant source + + /*! + This property defines how much the source brightness is increased or + decreased. + + The value ranges from -1.0 to 1.0. By default, the property is set to \c + 0.0 (no change). + + \table + \header + \li Output examples with different brightness values + \li + \li + \row + \li \image BrightnessContrast_brightness1.png + \li \image BrightnessContrast_brightness2.png + \li \image BrightnessContrast_brightness3.png + \row + \li \b { brightness: -0.25 } + \li \b { brightness: 0 } + \li \b { brightness: 0.5 } + \row + \li \l contrast: 0 + \li \l contrast: 0 + \li \l contrast: 0 + \endtable + + */ + property real brightness: 0.0 + + /*! + This property defines how much the source contrast is increased or + decreased. The decrease of the contrast is linear, but the increase is + applied with a non-linear curve to allow very high contrast adjustment at + the high end of the value range. + + \table + \header + \li Contrast adjustment curve + \row + \li \image BrightnessContrast_contrast_graph.png + \endtable + + The value ranges from -1.0 to 1.0. By default, the property is set to \c 0.0 (no change). + + \table + \header + \li Output examples with different contrast values + \li + \li + \row + \li \image BrightnessContrast_contrast1.png + \li \image BrightnessContrast_contrast2.png + \li \image BrightnessContrast_contrast3.png + \row + \li \b { contrast: -0.5 } + \li \b { contrast: 0 } + \li \b { contrast: 0.5 } + \row + \li \l brightness: 0 + \li \l brightness: 0 + \li \l brightness: 0 + \endtable + + */ + property real contrast: 0.0 + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + + Every time the source or effect properties are changed, the pixels in + the cache must be updated. Memory consumption is increased, because an + extra buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + + */ + property bool cached: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + interpolation: input && input.smooth ? SourceProxy.LinearInterpolation : SourceProxy.NearestInterpolation + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: parent + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + ShaderEffect { + id: shaderItem + property variant source: sourceProxy.output + property real brightness: rootItem.brightness + property real contrast: rootItem.contrast + + anchors.fill: parent + blending: !rootItem.cached + + fragmentShader: "qrc:/qt-project.org/imports/QtGraphicalEffects/shaders/brightnesscontrast.frag" + } +} diff --git a/deployment_test/QtGraphicalEffects/ColorOverlay.qml b/deployment_test/QtGraphicalEffects/ColorOverlay.qml new file mode 100644 index 0000000000000000000000000000000000000000..f3485418ca114a0e3eb2c7512e3522baad7d61b3 --- /dev/null +++ b/deployment_test/QtGraphicalEffects/ColorOverlay.qml @@ -0,0 +1,148 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtGraphicalEffects.private 1.12 + +/*! + \qmltype ColorOverlay + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-color + \brief Alters the colors of the source item by applying an overlay color. + + The effect is similar to what happens when a colorized glass is put on top + of a grayscale image. The color for the overlay is given in the RGBA format. + + \table + \header + \li Source + \li Effect applied + \row + \li \image Original_butterfly.png + \li \image ColorOverlay_butterfly.png + \endtable + + \note This effect is available when running with OpenGL. + + \section1 Example + + The following example shows how to apply the effect. + \snippet ColorOverlay-example.qml example + +*/ +Item { + id: rootItem + + /*! + This property defines the source item that provides the source pixels + for the effect. + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property variant source + + /*! + This property defines the RGBA color value which is used to colorize the + source. + + By default, the property is set to \c "transparent". + + \table + \header + \li Output examples with different color values + \li + \li + \row + \li \image ColorOverlay_color1.png + \li \image ColorOverlay_color2.png + \li \image ColorOverlay_color3.png + \row + \li \b { color: #80ff0000 } + \li \b { color: #8000ff00 } + \li \b { color: #800000ff } + \endtable + + */ + property color color: "transparent" + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + + Every time the source or effect properties are changed, the pixels in + the cache must be updated. Memory consumption is increased, because an + extra buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + + */ + property bool cached: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + interpolation: input && input.smooth ? SourceProxy.LinearInterpolation : SourceProxy.NearestInterpolation + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: parent + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + ShaderEffect { + id: shaderItem + property variant source: sourceProxy.output + property color color: rootItem.color + + anchors.fill: parent + + fragmentShader: "qrc:/qt-project.org/imports/QtGraphicalEffects/shaders/coloroverlay.frag" + } +} diff --git a/deployment_test/QtGraphicalEffects/Colorize.qml b/deployment_test/QtGraphicalEffects/Colorize.qml new file mode 100644 index 0000000000000000000000000000000000000000..42f17965ff0d94d69ff288b519b76bba3d6a794c --- /dev/null +++ b/deployment_test/QtGraphicalEffects/Colorize.qml @@ -0,0 +1,238 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtGraphicalEffects.private 1.12 + +/*! + \qmltype Colorize + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-color + \brief Sets the color in the HSL color space. + + The effect is similar to what happens when a colorized glass is put on top + of a grayscale image. Colorize uses the hue, saturation, and lightness (HSL) + color space. You can specify a desired value for each property. You can + shift all HSL values with the + \l{QtGraphicalEffects::HueSaturation}{HueSaturation} effect. + + Alternatively, you can use the + \l{QtGraphicalEffects::ColorOverlay}{ColorOverlay} effect to colorize the + source item in the RGBA color space. + + \table + \header + \li Source + \li Effect applied + \row + \li \image Original_bug.png + \li \image Colorize_bug.png + \endtable + + \note This effect is available when running with OpenGL. + + \section1 Example + + The following example shows how to apply the effect. + \snippet Colorize-example.qml example +*/ +Item { + id: rootItem + + /*! + This property defines the source item that provides the source pixels + for the effect. + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property variant source + + /*! + This property defines the hue value which is used to colorize the + source. + + The value ranges from 0.0 to 1.0. By default, the property is set to \c + 0.0, which produces a slightly red color. + + \table + \header + \li Allowed hue values + \row + \li \image Colorize_hue_scale.png + \endtable + + \table + \header + \li Output examples with different hue values + \li + \li + \row + \li \image Colorize_hue1.png + \li \image Colorize_hue2.png + \li \image Colorize_hue3.png + \row + \li \b { hue: 0.2 } + \li \b { hue: 0.5 } + \li \b { hue: 0.8 } + \row + \li \l saturation: 1 + \li \l saturation: 1 + \li \l saturation: 1 + \row + \li \l lightness: 0 + \li \l lightness: 0 + \li \l lightness: 0 + \endtable + */ + property real hue: 0.0 + + /*! + This property defines the saturation value which is used to colorize the + source. + + The value ranges from 0.0 (desaturated) to 1.0 (saturated). By default, + the property is set to \c 1.0 (saturated). + + \table + \header + \li Output examples with different saturation values + \li + \li + \row + \li \image Colorize_saturation1.png + \li \image Colorize_saturation2.png + \li \image Colorize_saturation3.png + \row + \li \b { saturation: 0 } + \li \b { saturation: 0.5 } + \li \b { saturation: 1 } + \row + \li \l hue: 0 + \li \l hue: 0 + \li \l hue: 0 + \row + \li \l lightness: 0 + \li \l lightness: 0 + \li \l lightness: 0 + \endtable + */ + property real saturation: 1.0 + + /*! + This property defines how much the source lightness value is increased + or decreased. + + Unlike hue and saturation properties, lightness does not set the used + value, but it shifts the existing source pixel lightness value. + + The value ranges from -1.0 (decreased) to 1.0 (increased). By default, + the property is set to \c 0.0 (no change). + + \table + \header + \li Output examples with different lightness values + \li + \li + \row + \li \image Colorize_lightness1.png + \li \image Colorize_lightness2.png + \li \image Colorize_lightness3.png + \row + \li \b { lightness: -0.75 } + \li \b { lightness: 0 } + \li \b { lightness: 0.75 } + \row + \li \l hue: 0 + \li \l hue: 0 + \li \l hue: 0 + \row + \li \l saturation: 1 + \li \l saturation: 1 + \li \l saturation: 1 + \endtable + */ + property real lightness: 0.0 + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + + Every time the source or effect properties are changed, the pixels in + the cache must be updated. Memory consumption is increased, because an + extra buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + */ + property bool cached: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + interpolation: input && input.smooth ? SourceProxy.LinearInterpolation : SourceProxy.NearestInterpolation + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: parent + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + ShaderEffect { + id: shaderItem + property variant source: sourceProxy.output + property real hue: rootItem.hue + property real saturation: rootItem.saturation + property real lightness: rootItem.lightness + + anchors.fill: parent + + fragmentShader: "qrc:/qt-project.org/imports/QtGraphicalEffects/shaders/colorize.frag" + + } +} diff --git a/deployment_test/QtGraphicalEffects/ConicalGradient.qml b/deployment_test/QtGraphicalEffects/ConicalGradient.qml new file mode 100644 index 0000000000000000000000000000000000000000..c8d68b1b78273629a6f7e7f905367a4dc0cfa2cd --- /dev/null +++ b/deployment_test/QtGraphicalEffects/ConicalGradient.qml @@ -0,0 +1,333 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtGraphicalEffects.private 1.12 + +/*! + \qmltype ConicalGradient + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-gradient + \brief Draws a conical gradient. + + A gradient is defined by two or more colors, which are blended seamlessly. + The colors start from the specified angle and end at 360 degrees larger + angle value. + + \table + \header + \li Effect applied + \row + \li \image ConicalGradient.png + \endtable + + \note This effect is available when running with OpenGL. + + \section1 Example + + The following example shows how to apply the effect. + \snippet ConicalGradient-example.qml example + +*/ +Item { + id: rootItem + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + + Every time the source or effect properties are changed, the pixels in + the cache must be updated. Memory consumption is increased, because an + extra buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + + */ + property bool cached: false + + /*! + This property defines the starting angle where the color at the gradient + position of 0.0 is rendered. Colors at larger position values are + rendered into larger angle values and blended seamlessly. Angle values + increase clockwise. + + \table + \header + \li Output examples with different angle values + \li + \li + \row + \li \image ConicalGradient_angle1.png + \li \image ConicalGradient_angle2.png + \li \image ConicalGradient_angle3.png + \row + \li \b { angle: 0 } + \li \b { angle: 45 } + \li \b { angle: 185 } + \row + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \row + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \endtable + + */ + property real angle: 0.0 + + /*! + \qmlproperty real QtGraphicalEffects::ConicalGradient::horizontalOffset + \qmlproperty real QtGraphicalEffects::ConicalGradient::verticalOffset + + The horizontalOffset and verticalOffset properties define the offset in + pixels for the center point of the gradient compared to the item center. + + The value ranges from -inf to inf. By default, the properties are set to \c + 0. + + \table + \header + \li Output examples with different horizontalOffset values + \li + \li + \row + \li \image ConicalGradient_horizontalOffset1.png + \li \image ConicalGradient_horizontalOffset2.png + \li \image ConicalGradient_horizontalOffset3.png + \row + \li \b { horizontalOffset: -50 } + \li \b { horizontalOffset: 0 } + \li \b { horizontalOffset: 50 } + \row + \li \l angle: 0 + \li \l angle: 0 + \li \l angle: 0 + \row + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \endtable + */ + property real horizontalOffset: 0.0 + property real verticalOffset: 0.0 + + /*! + This property defines the item that is going to be filled with gradient. + Source item gets rendered into an intermediate pixel buffer and the + alpha values from the result are used to determine the gradient's pixels + visibility in the display. The default value for source is undefined and + in that case whole effect area is filled with gradient. + + \table + \header + \li Output examples with different source values + \li + \row + \li \image ConicalGradient_maskSource1.png + \li \image ConicalGradient_maskSource2.png + \row + \li \b { source: undefined } + \li \b { source: } + \row + \li \l angle: 0 + \li \l angle: 0 + \row + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \row + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \endtable + + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property variant source + +/*! + A gradient is defined by two or more colors, which are blended seamlessly. + The colors are specified as a set of GradientStop child items, each of which + defines a position on the gradient (from 0.0 to 1.0), and a color. + The position of each GradientStop is defined by the position property. + The color is defined by the color property. + + \table + \header + \li Output examples with different gradient values + \li + \li + \row + \li \image ConicalGradient_gradient1.png + \li \image ConicalGradient_gradient2.png + \li \image ConicalGradient_gradient3.png + \row + \li \b {gradient:} \code +Gradient { + GradientStop { + position: 0.000 + color: Qt.rgba(1, 0, 0, 1) + } + GradientStop { + position: 0.167 + color: Qt.rgba(1, 1, 0, 1) + } + GradientStop { + position: 0.333 + color: Qt.rgba(0, 1, 0, 1) + } + GradientStop { + position: 0.500 + color: Qt.rgba(0, 1, 1, 1) + } + GradientStop { + position: 0.667 + color: Qt.rgba(0, 0, 1, 1) + } + GradientStop { + position: 0.833 + color: Qt.rgba(1, 0, 1, 1) + } + GradientStop { + position: 1.000 + color: Qt.rgba(1, 0, 0, 1) + } +} + \endcode + \li \b {gradient:} \code +Gradient { + GradientStop { + position: 0.0 + color: "#F0F0F0" + } + GradientStop { + position: 0.5 + color: "#000000" + } + GradientStop { + position: 1.0 + color: "#F0F0F0" + } +} + \endcode + \li \b {gradient:} \code +Gradient { + GradientStop { + position: 0.0 + color: "#00000000" + } + GradientStop { + position: 1.0 + color: "#FF000000" + } +} + \endcode + \row + \li \l angle: 0 + \li \l angle: 0 + \li \l angle: 0 + \row + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \row + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \endtable + +*/ + property Gradient gradient: Gradient { + GradientStop { position: 0.0; color: "white" } + GradientStop { position: 1.0; color: "black" } + } + + SourceProxy { + id: maskSourceProxy + input: rootItem.source + } + + Rectangle { + id: gradientRect + width: 16 + height: 256 + gradient: rootItem.gradient + smooth: true + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: parent + visible: rootItem.cached + smooth: true + rotation: shaderItem.rotation + sourceItem: shaderItem + live: true + hideSource: visible + } + + ShaderEffect { + id: shaderItem + property variant gradientSource: ShaderEffectSource { + sourceItem: gradientRect + smooth: true + hideSource: true + visible: false + } + property variant maskSource: maskSourceProxy.output + property real startAngle: (rootItem.angle - 90) * Math.PI/180 + property variant center: Qt.point(0.5 + horizontalOffset / width, 0.5 + verticalOffset / height) + + anchors.fill: parent + + fragmentShader: maskSource == undefined ? noMaskShader : maskShader + + onFragmentShaderChanged: startAngleChanged() + + property string noMaskShader: "qrc:/qt-project.org/imports/QtGraphicalEffects/shaders/conicalgradient_nomask.frag" + property string maskShader: "qrc:/qt-project.org/imports/QtGraphicalEffects/shaders/conicalgradient_mask.frag" + } +} diff --git a/deployment_test/QtGraphicalEffects/Desaturate.qml b/deployment_test/QtGraphicalEffects/Desaturate.qml new file mode 100644 index 0000000000000000000000000000000000000000..e56de5532ce44d2f12e411649c35a92abaffc6e4 --- /dev/null +++ b/deployment_test/QtGraphicalEffects/Desaturate.qml @@ -0,0 +1,147 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtGraphicalEffects.private 1.12 + +/*! + \qmltype Desaturate + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-color + \brief Reduces the saturation of the colors. + + Desaturated pixel values are calculated as averages of the original RGB + component values of the source item. + + \table + \header + \li Source + \li Effect applied + \row + \li \image Original_bug.png + \li \image Desaturate_bug.png + \endtable + + \note This effect is available when running with OpenGL. + + \section1 Example + + The following example shows how to apply the effect. + \snippet Desaturate-example.qml example + +*/ +Item { + id: rootItem + + /*! + This property defines the source item that provides the source pixels to + the effect. + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property variant source + + /*! + This property defines how much the source colors are desaturated. + + The value ranges from 0.0 (no change) to 1.0 (desaturated). By default, + the property is set to \c 0.0 (no change). + + \table + \header + \li Output examples with different desaturation values + \li + \li + \row + \li \image Desaturate_desaturation1.png + \li \image Desaturate_desaturation2.png + \li \image Desaturate_desaturation3.png + \row + \li \b { desaturation: 0.0 } + \li \b { desaturation: 0.5 } + \li \b { desaturation: 1.0 } + \endtable + */ + property real desaturation: 0.0 + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + + Every time the source or effect properties are changed, the pixels in + the cache must be updated. Memory consumption is increased, because an + extra buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + + */ + property bool cached: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + interpolation: input && input.smooth ? SourceProxy.LinearInterpolation : SourceProxy.NearestInterpolation + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: parent + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + ShaderEffect { + id: shaderItem + property variant source: sourceProxy.output + property real desaturation: rootItem.desaturation + + anchors.fill: parent + + fragmentShader: "qrc:/qt-project.org/imports/QtGraphicalEffects/shaders/desaturate.frag" + } +} diff --git a/deployment_test/QtGraphicalEffects/DirectionalBlur.qml b/deployment_test/QtGraphicalEffects/DirectionalBlur.qml new file mode 100644 index 0000000000000000000000000000000000000000..42ea0781a841f544e2cef54ebe788eddf2020588 --- /dev/null +++ b/deployment_test/QtGraphicalEffects/DirectionalBlur.qml @@ -0,0 +1,293 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtGraphicalEffects.private 1.12 + +/*! + \qmltype DirectionalBlur + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-motion-blur + \brief Applies blur effect to the specified direction. + + Effect creates perceived impression that the source item appears to be + moving in the direction of the blur. Blur is applied to both sides of + each pixel, therefore setting the direction to 0 and 180 provides the + same result. + + Other available motionblur effects are \l{QtGraphicalEffects::ZoomBlur}{ZoomBlur} and + \l{QtGraphicalEffects::RadialBlur}{RadialBlur}. + + \table + \header + \li Source + \li Effect applied + \row + \li \image Original_bug.png + \li \image DirectionalBlur_bug.png + \endtable + + \note This effect is available when running with OpenGL. + + \section1 Example + + The following example shows how to apply the effect. + \snippet DirectionalBlur-example.qml example + +*/ +Item { + id: rootItem + + /*! + This property defines the source item that is going to be blurred. + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property variant source + + /*! + This property defines the perceived amount of movement for each pixel. + The movement is divided evenly to both sides of each pixel. + + The quality of the blur depends on \l{DirectionalBlur::samples}{samples} + property. If length value is large, more samples are needed to keep the + visual quality at high level. + + The value ranges from 0.0 to inf. + By default the property is set to \c 0.0 (no blur). + + \table + \header + \li Output examples with different length values + \li + \li + \row + \li \image DirectionalBlur_length1.png + \li \image DirectionalBlur_length2.png + \li \image DirectionalBlur_length3.png + \row + \li \b { length: 0.0 } + \li \b { length: 32.0 } + \li \b { length: 48.0 } + \row + \li \l samples: 24 + \li \l samples: 24 + \li \l samples: 24 + \row + \li \l angle: 0 + \li \l angle: 0 + \li \l angle: 0 + \endtable + + */ + property real length: 0.0 + + /*! + This property defines how many samples are taken per pixel when blur + calculation is done. Larger value produces better quality, but is slower + to render. + + This property is not intended to be animated. Changing this property may + cause the underlying OpenGL shaders to be recompiled. + + Allowed values are between 0 and inf (practical maximum depends on GPU). + By default the property is set to \c 0 (no samples). + + */ + property int samples: 0 + + /*! + This property defines the direction for the blur. Blur is applied to + both sides of each pixel, therefore setting the direction to 0 and 180 + produces the same result. + + The value ranges from -180.0 to 180.0. + By default the property is set to \c 0.0. + + \table + \header + \li Output examples with different angle values + \li + \li + \row + \li \image DirectionalBlur_angle1.png + \li \image DirectionalBlur_angle2.png + \li \image DirectionalBlur_angle3.png + \row + \li \b { angle: 0.0 } + \li \b { angle: 45.0 } + \li \b { angle: 90.0 } + \row + \li \l samples: 24 + \li \l samples: 24 + \li \l samples: 24 + \row + \li \l length: 32 + \li \l length: 32 + \li \l length: 32 + \endtable + + */ + property real angle: 0.0 + + /*! + This property defines the blur behavior near the edges of the item, + where the pixel blurring is affected by the pixels outside the source + edges. + + If the property is set to \c true, the pixels outside the source are + interpreted to be transparent, which is similar to OpenGL + clamp-to-border extension. The blur is expanded slightly outside the + effect item area. + + If the property is set to \c false, the pixels outside the source are + interpreted to contain the same color as the pixels at the edge of the + item, which is similar to OpenGL clamp-to-edge behavior. The blur does + not expand outside the effect item area. + + By default, the property is set to \c false. + + */ + property bool transparentBorder: false + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + + Every time the source or effect properties are changed, the pixels in + the cache must be updated. Memory consumption is increased, because an + extra buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + + */ + property bool cached: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + sourceRect: rootItem.transparentBorder ? Qt.rect(-1, -1, parent.width + 2.0, parent.height + 2.0) : Qt.rect(0, 0, 0, 0) + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: shaderItem + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + ShaderEffect { + id: shaderItem + property variant source: sourceProxy.output + property real len: rootItem.length + property bool transparentBorder: rootItem.transparentBorder + property real samples: rootItem.samples + property real weight: 1.0 / Math.max(1.0, rootItem.samples) + property variant expandPixels: transparentBorder ? Qt.size(rootItem.samples, rootItem.samples) : Qt.size(0,0) + property variant expand: transparentBorder ? Qt.size(expandPixels.width / width, expandPixels.height / height) : Qt.size(0,0) + property variant delta: Qt.size(1.0 / rootItem.width * Math.cos((rootItem.angle + 90) * Math.PI/180), 1.0 / rootItem.height * Math.sin((rootItem.angle + 90) * Math.PI/180)) + + x: transparentBorder ? -expandPixels.width - 1: 0 + y: transparentBorder ? -expandPixels.height - 1 : 0 + width: transparentBorder ? parent.width + 2.0 * expandPixels.width + 2 : parent.width + height: transparentBorder ? parent.height + 2.0 * expandPixels.height + 2 : parent.height + + property string fragmentShaderSkeleton: " + varying highp vec2 qt_TexCoord0; + uniform highp float qt_Opacity; + uniform lowp sampler2D source; + uniform highp float len; + uniform highp float samples; + uniform highp float weight; + uniform highp vec2 expand; + uniform highp vec2 delta; + + void main(void) { + highp vec2 shift = delta * len / max(1.0, samples - 1.0); + mediump vec2 texCoord = qt_TexCoord0; + gl_FragColor = vec4(0.0); + + PLACEHOLDER_EXPAND_STEPS + + texCoord -= shift * max(0.0, samples - 1.0) * 0.5; + + PLACEHOLDER_UNROLLED_LOOP + + gl_FragColor *= weight * qt_Opacity; + } + " + + function buildFragmentShader() { + var shader = "" + if (GraphicsInfo.profile === GraphicsInfo.OpenGLCoreProfile) + shader += "#version 150 core\n#define varying in\n#define texture2D texture\nout vec4 fragColor;\n#define gl_FragColor fragColor\n" + shader += fragmentShaderSkeleton + var expandSteps = "" + + if (transparentBorder) { + expandSteps += "texCoord = (texCoord - expand) / (1.0 - 2.0 * expand);" + } + + var unrolledLoop = "gl_FragColor += texture2D(source, texCoord);\n" + + if (rootItem.samples > 1) { + unrolledLoop = "" + for (var i = 0; i < rootItem.samples; i++) + unrolledLoop += "gl_FragColor += texture2D(source, texCoord); texCoord += shift;\n" + } + + shader = shader.replace("PLACEHOLDER_EXPAND_STEPS", expandSteps) + fragmentShader = shader.replace("PLACEHOLDER_UNROLLED_LOOP", unrolledLoop) + } + + onFragmentShaderChanged: sourceChanged() + onSamplesChanged: buildFragmentShader() + onTransparentBorderChanged: buildFragmentShader() + Component.onCompleted: buildFragmentShader() + } +} diff --git a/deployment_test/QtGraphicalEffects/Displace.qml b/deployment_test/QtGraphicalEffects/Displace.qml new file mode 100644 index 0000000000000000000000000000000000000000..3400222954422090e5c4e78a4414ecd980c56c01 --- /dev/null +++ b/deployment_test/QtGraphicalEffects/Displace.qml @@ -0,0 +1,190 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtGraphicalEffects.private 1.12 + +/*! + \qmltype Displace + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-distortion + \brief Moves the pixels of the source item according to the given + displacement map. + + \table + \header + \li Source + \li DisplacementSource + \li Effect applied + \row + \li \image Original_bug.png + \li \image Displace_map.png + \li \image Displace_bug.png + \endtable + + \note This effect is available when running with OpenGL. + + \section1 Example + + The following example shows how to apply the effect. + \snippet Displace-example.qml example + +*/ +Item { + id: rootItem + + /*! + This property defines the source item for the pixels that are going to + be displaced according to the data from + \l{Displace::displacementSource}{displacementSource}. + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property variant source + + /*! + This property defines the item that is going to be used as the + displacement map. The displacementSource item gets rendered into the + intermediate pixel buffer. The red and green component values from the + result determine the displacement of the pixels from the source item. + + The format for the displacement map is similar to the tangent space + normal maps, which can be created with most 3D-modeling tools. Many + image processing tools include the support for generating normal maps. + Alternatively, the displacement map for this effect can also be a QML + element which is colored appropriately. Like any QML element, it can be + animated. It is recommended that the size of the diplacement map matches + the size of the \l{Displace::source}{source}. + + The displace data is interpreted in the RGBA format. For every pixel: + the red channel stores the x-axis displacement, and the green channel + stores the y-axis displacement. Blue and alpha channels are ignored for + this effect. + + Assuming that red channel value 1.0 is fully red (0.0 having no red at + all), this effect considers pixel component value 0.5 to cause no + displacement at all. Values above 0.5 shift pixels to the left, values + below 0.5 do the shift to the right. In a similar way, green channel + values above 0.5 displace the pixels upwards, and values below 0.5 shift + the pixels downwards. The actual amount of displacement in pixels + depends on the \l displacement property. + + */ + property variant displacementSource + + /*! + This property defines the scale for the displacement. The bigger scale, + the bigger the displacement of the pixels. The value set to 0.0 causes + no displacement. + + The value ranges from -1.0 (inverted maximum shift, according to + displacementSource) to 1.0 (maximum shift, according to + displacementSource). By default, the property is set to \c 0.0 (no + displacement). + + \table + \header + \li Output examples with different displacement values + \li + \li + \row + \li \image Displace_displacement1.png + \li \image Displace_displacement2.png + \li \image Displace_displacement3.png + \row + \li \b { displacement: -0.2 } + \li \b { displacement: 0.0 } + \li \b { displacement: 0.2 } + \endtable + + */ + property real displacement: 0.0 + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + + Every time the source or effect properties are changed, the pixels in + the cache must be updated. Memory consumption is increased, because an + extra buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + + */ + property bool cached: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + } + + SourceProxy { + id: displacementSourceProxy + input: rootItem.displacementSource + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: parent + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + ShaderEffect { + id: shaderItem + property variant source: sourceProxy.output + property variant displacementSource: displacementSourceProxy.output + property real displacement: rootItem.displacement + property real xPixel: 1.0/width + property real yPixel: 1.0/height + + anchors.fill: parent + + fragmentShader: "qrc:/qt-project.org/imports/QtGraphicalEffects/shaders/displace.frag" + } +} diff --git a/deployment_test/QtGraphicalEffects/DropShadow.qml b/deployment_test/QtGraphicalEffects/DropShadow.qml new file mode 100644 index 0000000000000000000000000000000000000000..0f30e5aa4d82955d697b2b7422226ef79fb846e2 --- /dev/null +++ b/deployment_test/QtGraphicalEffects/DropShadow.qml @@ -0,0 +1,362 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Copyright (C) 2017 Jolla Ltd, author: <gunnar.sletta@jollamobile.com> +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtGraphicalEffects.private 1.12 + +/*! + \qmltype DropShadow + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-drop-shadow + + \brief Generates a soft shadow behind the source item. + + The DropShadow effect blurs the alpha channel of the input, colorizes the + result and places it behind the source object to create a soft shadow. The + shadow's color can be changed using the \l {DropShadow::color}{color} + property. The location of the shadow can be changed with the \l + horizontalOffset and \l verticalOffset properties. + + \table + \header + \li Source + \li Effect applied + \row + \li \image Original_butterfly.png + \li \image DropShadow_butterfly.png + \endtable + + The soft shadow is created by blurring the image live using a gaussian + blur. Performing blur live is a costly operation. Fullscreen gaussian blur + with even a moderate number of samples will only run at 60 fps on highend + graphics hardware. + + When the source is static, the \l cached property can be set to allocate + another buffer to avoid performing the blur every time it is drawn. + + \note This effect is available when running with OpenGL. + + \section1 Example + + The following example shows how to apply the effect. + \snippet DropShadow-example.qml example + +*/ +Item { + id: root + + DropShadowBase { + id: dbs + anchors.fill: parent + } + + /*! + This property defines the source item that is going to be used as the + source for the generated shadow. + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property alias source: dbs.source + + /*! + \qmlproperty int DropShadow::radius + + Radius defines the softness of the shadow. A larger radius causes the + edges of the shadow to appear more blurry. + + The ideal blur is achieved by selecting \c samples and \c radius such + that \c {samples = 1 + radius * 2}, such as: + + \table + \header \li Radius \li Samples + \row \li 0 \e{(no blur)} \li 1 + \row \li 1 \li 3 + \row \li 2 \li 5 + \row \li 3 \li 7 + \endtable + + By default, the property is set to \c {floor(samples/2)}. + + \table + \header + \li Output examples with different radius values + \li + \li + \row + \li \image DropShadow_radius1.png + \li \image DropShadow_radius2.png + \li \image DropShadow_radius3.png + \row + \li \b { radius: 0 } + \li \b { radius: 6 } + \li \b { radius: 12 } + \row + \li \l samples: 25 + \li \l samples: 25 + \li \l samples: 25 + \row + \li \l color: #000000 + \li \l color: #000000 + \li \l color: #000000 + \row + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \row + \li \l verticalOffset: 20 + \li \l verticalOffset: 20 + \li \l verticalOffset: 20 + \row + \li \l spread: 0 + \li \l spread: 0 + \li \l spread: 0 + \endtable + */ + property alias radius: dbs.radius; + + /*! + This property defines how many samples are taken per pixel when edge + softening blur calculation is done. Larger value produces better + quality, but is slower to render. + + Ideally, this value should be twice as large as the highest required + radius value plus one, such as: + + \table + \header \li Radius \li Samples + \row \li 0 \e{(no blur)} \li 1 + \row \li 1 \li 3 + \row \li 2 \li 5 + \row \li 3 \li 7 + \endtable + + By default, the property is set to \c 9. + + This property is not intended to be animated. Changing this property will + cause the underlying OpenGL shaders to be recompiled. + */ + property alias samples: dbs.samples + + /*! + This property defines the RGBA color value which is used for the shadow. + + By default, the property is set to \c "black". + + \table + \header + \li Output examples with different color values + \li + \li + \row + \li \image DropShadow_color1.png + \li \image DropShadow_color2.png + \li \image DropShadow_color3.png + \row + \li \b { color: #000000 } + \li \b { color: #0000ff } + \li \b { color: #aa000000 } + \row + \li \l radius: 8 + \li \l radius: 8 + \li \l radius: 8 + \row + \li \l samples: 17 + \li \l samples: 17 + \li \l samples: 17 + \row + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \row + \li \l verticalOffset: 20 + \li \l verticalOffset: 20 + \li \l verticalOffset: 20 + \row + \li \l spread: 0 + \li \l spread: 0 + \li \l spread: 0 + \endtable + */ + property alias color: dbs.color + + /*! + \qmlproperty real QtGraphicalEffects::DropShadow::horizontalOffset + \qmlproperty real QtGraphicalEffects::DropShadow::verticalOffset + + HorizontalOffset and verticalOffset properties define the offset for the + rendered shadow compared to the DropShadow item position. Often, the + DropShadow item is anchored so that it fills the source element. In this + case, if the HorizontalOffset and verticalOffset properties are set to + 0, the shadow is rendered exactly under the source item. By changing the + offset properties, the shadow can be positioned relatively to the source + item. + + The values range from -inf to inf. By default, the properties are set to + \c 0. + + \table + \header + \li Output examples with different horizontalOffset values + \li + \li + \row + \li \image DropShadow_horizontalOffset1.png + \li \image DropShadow_horizontalOffset2.png + \li \image DropShadow_horizontalOffset3.png + \row + \li \b { horizontalOffset: -20 } + \li \b { horizontalOffset: 0 } + \li \b { horizontalOffset: 20 } + \row + \li \l radius: 4 + \li \l radius: 4 + \li \l radius: 4 + \row + \li \l samples: 9 + \li \l samples: 9 + \li \l samples: 9 + \row + \li \l color: #000000 + \li \l color: #000000 + \li \l color: #000000 + \row + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \row + \li \l spread: 0 + \li \l spread: 0 + \li \l spread: 0 + \endtable + */ + property alias horizontalOffset: dbs.horizontalOffset + property alias verticalOffset: dbs.verticalOffset + + /*! + This property defines how large part of the shadow color is strengthened + near the source edges. + + The value ranges from 0.0 to 1.0. By default, the property is set to \c + 0.0. + + \table + \header + \li Output examples with different spread values + \li + \li + \row + \li \image DropShadow_spread1.png + \li \image DropShadow_spread2.png + \li \image DropShadow_spread3.png + \row + \li \b { spread: 0.0 } + \li \b { spread: 0.5 } + \li \b { spread: 1.0 } + \row + \li \l radius: 8 + \li \l radius: 8 + \li \l radius: 8 + \row + \li \l samples: 17 + \li \l samples: 17 + \li \l samples: 17 + \row + \li \l color: #000000 + \li \l color: #000000 + \li \l color: #000000 + \row + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \row + \li \l verticalOffset: 20 + \li \l verticalOffset: 20 + \li \l verticalOffset: 20 + \endtable + */ + property alias spread: dbs.spread + + /*! + \internal + + Starting Qt 5.6, this property has no effect. It is left here + for source compatibility only. + + ### Qt 6: remove + */ + property bool fast: false + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. Every time the source or effect + properties are changed, the pixels in the cache must be updated. Memory + consumption is increased, because an extra buffer of memory is required + for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + */ + property alias cached: dbs.cached + + /*! + This property determines whether or not the effect has a transparent + border. + + When set to \c true, the exterior of the item is padded with a 1 pixel + wide transparent edge, making sampling outside the source texture use + transparency instead of the edge pixels. Without this property, an + image which has opaque edges will not get a blurred shadow. + + In the image below, the Rectangle on the left has transparent borders + and has blurred edges, whereas the Rectangle on the right does not: + + By default, this property is set to \c true. + + \snippet DropShadow-transparentBorder-example.qml example + + \image DropShadow-transparentBorder.png + */ + property alias transparentBorder: dbs.transparentBorder +} diff --git a/deployment_test/QtGraphicalEffects/FastBlur.qml b/deployment_test/QtGraphicalEffects/FastBlur.qml new file mode 100644 index 0000000000000000000000000000000000000000..1d8a547d823ff4599d28879f173138db9fec3ba8 --- /dev/null +++ b/deployment_test/QtGraphicalEffects/FastBlur.qml @@ -0,0 +1,442 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtGraphicalEffects.private 1.12 + +/*! + \qmltype FastBlur + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-blur + \brief Applies a fast blur effect to one or more source items. + + FastBlur offers lower blur quality than + \l{QtGraphicalEffects::GaussianBlur}{GaussianBlur}, but it is faster to + render. The FastBlur effect softens the source content by blurring it with + algorithm which uses the source content downscaling and bilinear filtering. + Use this effect in situations where the source content is rapidly changing + and the highest possible blur quality is not + needed. + + \table + \header + \li Source + \li Effect applied + \row + \li \image Original_bug.png + \li \image FastBlur_bug.png + \endtable + + \note This effect is available when running with OpenGL. + s + \section1 Example + + The following example shows how to apply the effect. + \snippet FastBlur-example.qml example + +*/ +Item { + id: rootItem + + /*! + This property defines the source item that is going to be blurred. + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property variant source + + /*! + This property defines the distance of the neighboring pixels which affect + the blurring of an individual pixel. A larger radius increases the blur + effect. FastBlur algorithm may internally reduce the accuracy of the radius in order to + provide good rendering performance. + + The value ranges from 0.0 (no blur) to inf. Visual quality of the blur is reduced when + radius exceeds value 64. By default, the property is set to \c 0.0 (no blur). + + \table + \header + \li Output examples with different blur values + \li + \li + \row + \li \image FastBlur_radius1.png + \li \image FastBlur_radius2.png + \li \image FastBlur_radius3.png + \row + \li \b { radius: 0 } + \li \b { radius: 32 } + \li \b { radius: 64 } + \endtable + */ + property real radius: 0.0 + + /*! + This property defines the blur behavior near the edges of the item, + where the pixel blurring is affected by the pixels outside the source + edges. + + If the property is set to \c true, the pixels outside the source are + interpreted to be transparent, which is similar to OpenGL + clamp-to-border extension. The blur is expanded slightly outside the + effect item area. + + If the property is set to \c false, the pixels outside the source are + interpreted to contain the same color as the pixels at the edge of the + item, which is similar to OpenGL clamp-to-edge behavior. The blur does + not expand outside the effect item area. + + By default, the property is set to \c false. + + \table + \header + \li Output examples with different transparentBorder values + \li + \li + \row + \li \image FastBlur_transparentBorder1.png + \li \image FastBlur_transparentBorder2.png + \row + \li \b { transparentBorder: false } + \li \b { transparentBorder: true } + \row + \li \l radius: 64 + \li \l radius: 64 + \endtable + */ + property bool transparentBorder: false + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + + Every time the source or effect properties are changed, the pixels in + the cache must be updated. Memory consumption is increased, because an + extra buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + + */ + property bool cached: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: shaderItem + visible: rootItem.cached + sourceItem: shaderItem + live: true + hideSource: visible + smooth: rootItem.radius > 0 + } + + /*! \internal */ + property string __internalBlurVertexShader: "qrc:/qt-project.org/imports/QtGraphicalEffects/shaders/fastblur_internal.vert" + + /*! \internal */ + property string __internalBlurFragmentShader: "qrc:/qt-project.org/imports/QtGraphicalEffects/shaders/fastblur_internal.frag" + + ShaderEffect { + id: level0 + property variant source: sourceProxy.output + anchors.fill: parent + visible: false + smooth: true + } + + ShaderEffectSource { + id: level1 + width: Math.ceil(shaderItem.width / 32) * 32 + height: Math.ceil(shaderItem.height / 32) * 32 + sourceItem: level0 + hideSource: rootItem.visible + sourceRect: transparentBorder ? Qt.rect(-64, -64, shaderItem.width, shaderItem.height) : Qt.rect(0, 0, 0, 0) + visible: false + smooth: rootItem.radius > 0 + } + + ShaderEffect { + id: effect1 + property variant source: level1 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level2 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level2 + width: level1.width / 2 + height: level1.height / 2 + sourceItem: effect1 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect2 + property variant source: level2 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level3 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level3 + width: level2.width / 2 + height: level2.height / 2 + sourceItem: effect2 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect3 + property variant source: level3 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level4 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level4 + width: level3.width / 2 + height: level3.height / 2 + sourceItem: effect3 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect4 + property variant source: level4 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level5 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level5 + width: level4.width / 2 + height: level4.height / 2 + sourceItem: effect4 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect5 + property variant source: level5 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level6 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level6 + width: level5.width / 2 + height: level5.height / 2 + sourceItem: effect5 + hideSource: rootItem.visible + visible: false + smooth: true + } + + Item { + id: dummysource + width: 1 + height: 1 + visible: false + } + + ShaderEffectSource { + id: dummy + width: 1 + height: 1 + sourceItem: dummysource + visible: false + smooth: false + live: false + } + + ShaderEffect { + id: shaderItem + + property variant source1: level1 + property variant source2: level2 + property variant source3: level3 + property variant source4: level4 + property variant source5: level5 + property variant source6: level6 + property real lod: Math.sqrt(rootItem.radius / 64.0) * 1.2 - 0.2 + property real weight1 + property real weight2 + property real weight3 + property real weight4 + property real weight5 + property real weight6 + + x: transparentBorder ? -64 : 0 + y: transparentBorder ? -64 : 0 + width: transparentBorder ? parent.width + 128 : parent.width + height: transparentBorder ? parent.height + 128 : parent.height + + function weight(v) { + if (v <= 0.0) + return 1.0 + if (v >= 0.5) + return 0.0 + + return 1.0 - v * 2.0 + } + + function calculateWeights() { + + var w1 = weight(Math.abs(lod - 0.100)) + var w2 = weight(Math.abs(lod - 0.300)) + var w3 = weight(Math.abs(lod - 0.500)) + var w4 = weight(Math.abs(lod - 0.700)) + var w5 = weight(Math.abs(lod - 0.900)) + var w6 = weight(Math.abs(lod - 1.100)) + + var sum = w1 + w2 + w3 + w4 + w5 + w6; + weight1 = w1 / sum; + weight2 = w2 / sum; + weight3 = w3 / sum; + weight4 = w4 / sum; + weight5 = w5 / sum; + weight6 = w6 / sum; + + upateSources() + } + + function upateSources() { + var sources = new Array(); + var weights = new Array(); + + if (weight1 > 0) { + sources.push(level1) + weights.push(weight1) + } + + if (weight2 > 0) { + sources.push(level2) + weights.push(weight2) + } + + if (weight3 > 0) { + sources.push(level3) + weights.push(weight3) + } + + if (weight4 > 0) { + sources.push(level4) + weights.push(weight4) + } + + if (weight5 > 0) { + sources.push(level5) + weights.push(weight5) + } + + if (weight6 > 0) { + sources.push(level6) + weights.push(weight6) + } + + for (var j = sources.length; j < 6; j++) { + sources.push(dummy) + weights.push(0.0) + } + + source1 = sources[0] + source2 = sources[1] + source3 = sources[2] + source4 = sources[3] + source5 = sources[4] + source6 = sources[5] + + weight1 = weights[0] + weight2 = weights[1] + weight3 = weights[2] + weight4 = weights[3] + weight5 = weights[4] + weight6 = weights[5] + } + + Component.onCompleted: calculateWeights() + + onLodChanged: calculateWeights() + + fragmentShader: "qrc:/qt-project.org/imports/QtGraphicalEffects/shaders/fastblur.frag" + } +} diff --git a/deployment_test/QtGraphicalEffects/GammaAdjust.qml b/deployment_test/QtGraphicalEffects/GammaAdjust.qml new file mode 100644 index 0000000000000000000000000000000000000000..2c3edbb8bdc0a98efa68c97171691d7f1f4b2bde --- /dev/null +++ b/deployment_test/QtGraphicalEffects/GammaAdjust.qml @@ -0,0 +1,184 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtGraphicalEffects.private 1.12 + +/*! + \qmltype GammaAdjust + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-color + \brief Alters the luminance of the source item. + + GammaAdjust is applied to each pixel according to the curve which is + pre-defined as a power-law expression, where the property gamma is used as the + reciprocal scaling exponent. Refer to the property documentation of \l{GammaAdjust::gamma}{gamma} + for more details. + + \table + \header + \li Source + \li Effect applied + \row + \li \image Original_bug.png + \li \image GammaAdjust_bug.png + \endtable + + \note This effect is available when running with OpenGL. + + \section1 Example + + The following example shows how to apply the effect. + \snippet GammaAdjust-example.qml example + +*/ +Item { + id: rootItem + + /*! + This property defines the source item for which the luminance is going to be + adjusted. + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property variant source + + /*! + This property defines the change factor for how the luminance of each pixel + is altered according to the equation: + + \code +luminance = pow(original_luminance, 1.0 / gamma); // The luminance is assumed to be between 0.0 and 1.0 + \endcode + + Setting the gamma values under 1.0 makes the image darker, the values + above 1.0 lighten it. + + The value ranges from 0.0 (darkest) to inf (lightest). By default, the + property is set to \c 1.0 (no change). + + \table + \header + \li Output examples with different gamma values + \li + \li + \row + \li \image GammaAdjust_gamma1.png + \li \image GammaAdjust_gamma2.png + \li \image GammaAdjust_gamma3.png + \row + \li \b { gamma: 0.5 } + \li \b { gamma: 1.0 } + \li \b { gamma: 2.0 } + \endtable + + \table + \header + \li Pixel luminance curves of the above images. + \li + \li + \row + \li \image GammaAdjust_gamma1_graph.png + \li \image GammaAdjust_gamma2_graph.png + \li \image GammaAdjust_gamma3_graph.png + \row + \li Red curve: default gamma (1.0) + \li + \li + \row + \li Yellow curve: effect applied + \li + \li + \row + \li X-axis: pixel original luminance + \li + \li + \row + \li Y-axis: pixel luminance with effect applied + \li + \li + \endtable + + */ + property real gamma: 1.0 + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + + Every time the source or effect properties are changed, the pixels in + the cache must be updated. Memory consumption is increased, because an + extra buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + */ + property bool cached: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + interpolation: input && input.smooth ? SourceProxy.LinearInterpolation : SourceProxy.NearestInterpolation + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: parent + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + ShaderEffect { + id: shaderItem + property variant source: sourceProxy.output + property real gamma: 1.0 / Math.max(rootItem.gamma, 0.0001) + + anchors.fill: parent + + fragmentShader: "qrc:/qt-project.org/imports/QtGraphicalEffects/shaders/gammaadjust.frag" + } +} diff --git a/deployment_test/QtGraphicalEffects/GaussianBlur.qml b/deployment_test/QtGraphicalEffects/GaussianBlur.qml new file mode 100644 index 0000000000000000000000000000000000000000..4af97148c45b8ce6b50fa6ca0e17a9e0e064b5e6 --- /dev/null +++ b/deployment_test/QtGraphicalEffects/GaussianBlur.qml @@ -0,0 +1,372 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Copyright (C) 2017 Jolla Ltd, author: <gunnar.sletta@jollamobile.com> +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Window 2.12 +import QtGraphicalEffects.private 1.12 + +/*! + \qmltype GaussianBlur + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-blur + \brief Applies a higher quality blur effect. + + GaussianBlur effect softens the image by blurring it with an algorithm that + uses the Gaussian function to calculate the effect. The effect produces + higher quality than \l{QtGraphicalEffects::FastBlur}{FastBlur}, but is + slower to render. + + \table + \header + \li Source + \li Effect applied + \row + \li \image Original_bug.png + \li \image GaussianBlur_bug.png + \endtable + + \note This effect is available when running with OpenGL. + + \section1 Example + + The following example shows how to apply the effect. + \snippet GaussianBlur-example.qml example + + Performing blur live is a costly operation. Fullscreen gaussian blur + with even a moderate number of samples will only run at 60 fps on highend + graphics hardware. + +*/ +Item { + id: root + + /*! + This property defines the source item that is going to be blurred. + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property variant source + + /*! + This property defines the distance of the neighboring pixels which + affect the blurring of an individual pixel. A larger radius increases + the blur effect. + + The ideal blur is achieved by selecting \c samples and \c radius such + that \c {samples = 1 + radius * 2}, such as: + + \table + \header \li Radius \li Samples + \row \li 0 \e{(no blur)} \li 1 + \row \li 1 \li 3 + \row \li 2 \li 5 + \row \li 3 \li 7 + \endtable + + The value ranges from 0.0 (no blur) to inf. By default, the property is + set to \c floor(samples / 2.0). + + \table + \header + \li Output examples with different radius values + \li + \li + \row + \li \image GaussianBlur_radius1.png + \li \image GaussianBlur_radius2.png + \li \image GaussianBlur_radius3.png + \row + \li \b { radius: 0 } + \li \b { radius: 4 } + \li \b { radius: 8 } + \row + \li \l samples: 16 + \li \l samples: 16 + \li \l samples: 16 + \row + \li \l deviation: 3 + \li \l deviation: 3 + \li \l deviation: 3 + \endtable + + */ + property real radius: Math.floor(samples / 2); + + /*! + This property defines how many samples are taken per pixel when blur + calculation is done. Larger value produces better quality, but is slower + to render. + + Ideally, this value should be twice as large as the highest required + radius value plus 1, for example, if the radius is animated between 0.0 + and 4.0, samples should be set to 9. + + By default, the property is set to \c 9. + + \note This property is not intended to be animated. Changing this property may + cause the underlying OpenGL shaders to be recompiled. + + */ + property int samples: 9 + + /*! + This property is a parameter to the gaussian function that is used when + calculating neighboring pixel weights for the blurring. A larger + deviation causes image to appear more blurry, but it also reduces the + quality of the blur. A very large deviation value causes the effect to + look a bit similar to what, for exmple, a box blur algorithm produces. A + too small deviation values makes the effect insignificant for the pixels + near the radius. + + \inlineimage GaussianBlur_deviation_graph.png + \caption The image above shows the Gaussian function with two different + deviation values, yellow (1) and cyan (2.7). The y-axis shows the + weights, the x-axis shows the pixel distance. + + The value ranges from 0.0 (no deviation) to inf (maximum deviation). By + default, devaition is binded to radius. When radius increases, deviation + is automatically increased linearly. With the radius value of 8, the + deviation default value becomes approximately 2.7034. This value + produces a compromise between the blur quality and overall blurriness. + + \table + \header + \li Output examples with different deviation values + \li + \li + \row + \li \image GaussianBlur_deviation1.png + \li \image GaussianBlur_deviation2.png + \li \image GaussianBlur_deviation3.png + \row + \li \b { deviation: 1 } + \li \b { deviation: 2 } + \li \b { deviation: 4 } + \row + \li \l radius: 8 + \li \l radius: 8 + \li \l radius: 8 + \row + \li \l samples: 16 + \li \l samples: 16 + \li \l samples: 16 + \endtable + + */ + property real deviation: (radius + 1) / 3.3333 + + /*! + This property defines the blur behavior near the edges of the item, + where the pixel blurring is affected by the pixels outside the source + edges. + + If the property is set to \c true, the pixels outside the source are + interpreted to be transparent, which is similar to OpenGL + clamp-to-border extension. The blur is expanded slightly outside the + effect item area. + + If the property is set to \c false, the pixels outside the source are + interpreted to contain the same color as the pixels at the edge of the + item, which is similar to OpenGL clamp-to-edge behavior. The blur does + not expand outside the effect item area. + + By default, the property is set to \c false. + + \table + \header + \li Output examples with different transparentBorder values + \li + \li + \row + \li \image GaussianBlur_transparentBorder1.png + \li \image GaussianBlur_transparentBorder2.png + \row + \li \b { transparentBorder: false } + \li \b { transparentBorder: true } + \row + \li \l radius: 8 + \li \l radius: 8 + \row + \li \l samples: 16 + \li \l samples: 16 + \row + \li \l deviation: 2.7 + \li \l deviation: 2.7 + \endtable + */ + property bool transparentBorder: false + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + Every time the source or effect properties are changed, the pixels in + the cache must be updated. Memory consumption is increased, because an + extra buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + + */ + property bool cached: false + + + // private members... + /*! \internal */ + property int _paddedTexWidth: transparentBorder ? width + 2 * radius: width; + /*! \internal */ + property int _paddedTexHeight: transparentBorder ? height + 2 * radius: height; + /*! \internal */ + property int _kernelRadius: Math.max(0, samples / 2); + /*! \internal */ + property int _kernelSize: _kernelRadius * 2 + 1; + /*! \internal */ + property real _dpr: Screen.devicePixelRatio; + /*! \internal */ + property bool _alphaOnly: false; + /*! \internal */ + property var _maskSource: undefined + + /*! \internal */ + property alias _output: sourceProxy.output; + /*! \internal */ + property alias _outputRect: sourceProxy.sourceRect; + /*! \internal */ + property alias _color: verticalBlur.color; + /*! \internal */ + property real _thickness: 0; + + onSamplesChanged: _rebuildShaders(); + on_KernelSizeChanged: _rebuildShaders(); + onDeviationChanged: _rebuildShaders(); + on_DprChanged: _rebuildShaders(); + on_MaskSourceChanged: _rebuildShaders(); + Component.onCompleted: _rebuildShaders(); + + /*! \internal */ + function _rebuildShaders() { + var params = { + radius: _kernelRadius, + // Limit deviation to something very small avoid getting NaN in the shader. + deviation: Math.max(0.00001, deviation), + alphaOnly: root._alphaOnly, + masked: _maskSource != undefined, + fallback: root.radius != _kernelRadius + } + var shaders = ShaderBuilder.gaussianBlur(params); + horizontalBlur.fragmentShader = shaders.fragmentShader; + horizontalBlur.vertexShader = shaders.vertexShader; + } + + SourceProxy { + id: sourceProxy + interpolation: SourceProxy.LinearInterpolation + input: root.source + sourceRect: root.transparentBorder + ? Qt.rect(-root.radius, 0, root._paddedTexWidth, parent.height) + : Qt.rect(0, 0, 0, 0) + } + + ShaderEffect { + id: horizontalBlur + width: root.transparentBorder ? root._paddedTexWidth : root.width + height: root.height; + + // Used by all shaders + property Item source: sourceProxy.output; + property real spread: root.radius / root._kernelRadius; + property var dirstep: Qt.vector2d(1 / (root._paddedTexWidth * root._dpr), 0); + + // Used by fallback shader (sampleCount exceeds number of varyings) + property real deviation: root.deviation + + // Only in use for DropShadow and Glow + property color color: "white" + property real thickness: Math.max(0, Math.min(0.98, 1 - root._thickness * 0.98)); + + // Only in use for MaskedBlur + property var mask: root._maskSource; + + layer.enabled: true + layer.smooth: true + layer.sourceRect: root.transparentBorder + ? Qt.rect(0, -root.radius, width, root._paddedTexHeight) + : Qt.rect(0, 0, 0, 0) + visible: false + blending: false + } + + ShaderEffect { + id: verticalBlur + x: transparentBorder ? -root.radius : 0 + y: x; + width: root.transparentBorder ? root._paddedTexWidth: root.width + height: root.transparentBorder ? root._paddedTexHeight : root.height; + fragmentShader: horizontalBlur.fragmentShader + vertexShader: horizontalBlur.vertexShader + + property Item source: horizontalBlur + property real spread: horizontalBlur.spread + property var dirstep: Qt.vector2d(0, 1 / (root._paddedTexHeight * root._dpr)); + + property real deviation: horizontalBlur.deviation + + property color color: "black" + property real thickness: horizontalBlur.thickness; + + property var mask: horizontalBlur.mask; + + visible: true + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: verticalBlur + visible: root.cached + smooth: true + sourceItem: verticalBlur + hideSource: visible + } + +} diff --git a/deployment_test/QtGraphicalEffects/Glow.qml b/deployment_test/QtGraphicalEffects/Glow.qml new file mode 100644 index 0000000000000000000000000000000000000000..39e69a35c36a0757bf477d766acdc6a60fcd9743 --- /dev/null +++ b/deployment_test/QtGraphicalEffects/Glow.qml @@ -0,0 +1,294 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Copyright (C) 2017 Jolla Ltd, author: <gunnar.sletta@jollamobile.com> +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtGraphicalEffects.private 1.12 + +/*! + \qmltype Glow + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-glow + \brief Generates a halo like glow around the source item. + + The Glow effect blurs the alpha channel of the source and colorizes it + with \l {Glow::color}{color} and places it behind the source, resulting in a halo or glow + around the object. The quality of the blurred edge can be controlled using + \l samples and \l radius and the strength of the glow can be changed using + \l spread. + + \table + \header + \li Source + \li Effect applied + \row + \li \image Original_butterfly_black.png + \li \image Glow_butterfly.png + \endtable + + The glow is created by blurring the image live using a gaussian blur. + Performing blur live is a costly operation. Fullscreen gaussian blur with + even a moderate number of samples will only run at 60 fps on highend + graphics hardware. + + \note This effect is available when running with OpenGL. + + \section1 Example + + The following example shows how to apply the effect. + \snippet Glow-example.qml example + +*/ +Item { + id: root + + DropShadowBase { + id: dps + anchors.fill: parent + color: "white" + spread: 0.5 + horizontalOffset: 0 + verticalOffset: 0 + } + + /*! + This property defines the source item that is going to be used as source + for the generated glow. + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property alias source: dps.source + + /*! + Radius defines the softness of the glow. A larger radius causes the + edges of the glow to appear more blurry. + + Depending on the radius value, value of the \l{Glow::samples}{samples} + should be set to sufficiently large to ensure the visual quality. + + The ideal blur is achieved by selecting \c samples and \c radius such + that \c {samples = 1 + radius * 2}, such as: + + \table + \header \li Radius \li Samples + \row \li 0 \e{(no blur)} \li 1 + \row \li 1 \li 3 + \row \li 2 \li 5 + \row \li 3 \li 7 + \endtable + + By default, the property is set to \c {floor(samples/2)}. + + \table + \header + \li Output examples with different radius values + \li + \li + \row + \li \image Glow_radius1.png + \li \image Glow_radius2.png + \li \image Glow_radius3.png + \row + \li \b { radius: 0 } + \li \b { radius: 6 } + \li \b { radius: 12 } + \row + \li \l samples: 25 + \li \l samples: 25 + \li \l samples: 25 + \row + \li \l color: #ffffff + \li \l color: #ffffff + \li \l color: #ffffff + \row + \li \l spread: 0 + \li \l spread: 0 + \li \l spread: 0 + \endtable + */ + property alias radius: dps.radius + + /*! + This property defines how many samples are taken per pixel when edge + softening blur calculation is done. Larger value produces better + quality, but is slower to render. + + Ideally, this value should be twice as large as the highest required + radius value plus one, such as: + + \table + \header \li Radius \li Samples + \row \li 0 \e{(no blur)} \li 1 + \row \li 1 \li 3 + \row \li 2 \li 5 + \row \li 3 \li 7 + \endtable + + By default, the property is set to \c 9. + + This property is not intended to be animated. Changing this property will + cause the underlying OpenGL shaders to be recompiled. + */ + property alias samples: dps.samples + + /*! + This property defines how large part of the glow color is strengthened + near the source edges. + + The values range from 0.0 to 1.0. By default, the property is set to \c + 0.5. + + \note The implementation is optimized for medium and low spread values. + Depending on the source, spread values closer to 1.0 may yield visually + asymmetrical results. + + \table + \header + \li Output examples with different spread values + \li + \li + \row + \li \image Glow_spread1.png + \li \image Glow_spread2.png + \li \image Glow_spread3.png + \row + \li \b { spread: 0.0 } + \li \b { spread: 0.5 } + \li \b { spread: 1.0 } + \row + \li \l radius: 8 + \li \l radius: 8 + \li \l radius: 8 + \row + \li \l samples: 17 + \li \l samples: 17 + \li \l samples: 17 + \row + \li \l color: #ffffff + \li \l color: #ffffff + \li \l color: #ffffff + \endtable + */ + property alias spread: dps.spread + + /*! + This property defines the RGBA color value which is used for the glow. + + By default, the property is set to \c "white". + + \table + \header + \li Output examples with different color values + \li + \li + \row + \li \image Glow_color1.png + \li \image Glow_color2.png + \li \image Glow_color3.png + \row + \li \b { color: #ffffff } + \li \b { color: #00ff00 } + \li \b { color: #aa00ff00 } + \row + \li \l radius: 8 + \li \l radius: 8 + \li \l radius: 8 + \row + \li \l samples: 17 + \li \l samples: 17 + \li \l samples: 17 + \row + \li \l spread: 0.5 + \li \l spread: 0.5 + \li \l spread: 0.5 + \endtable + + */ + property alias color: dps.color + + /*! + \internal + + Starting Qt 5.6, this property has no effect. It is left here + for source compatibility only. + + ### Qt 6: remove + */ + property bool fast: false + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + + Every time the source or effect properties are changed, the pixels in + the cache must be updated. Memory consumption is increased, because an + extra buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + + */ + property alias cached: dps.cached + + /*! + This property determines whether or not the effect has a transparent + border. + + When set to \c true, the exterior of the item is padded with a + transparent edge, making sampling outside the source texture use + transparency instead of the edge pixels. Without this property, an + image which has opaque edges will not get a blurred edge. + + By default, the property is set to \c true. Set it to false if the source + already has a transparent edge to make the blurring a tiny bit faster. + + In the snippet below, the Rectangle on the left has transparent borders + and has blurred edges, whereas the Rectangle on the right does not. + + \snippet Glow-transparentBorder-example.qml example + + \image Glow-transparentBorder.png + */ + property alias transparentBorder: dps.transparentBorder +} diff --git a/deployment_test/QtGraphicalEffects/HueSaturation.qml b/deployment_test/QtGraphicalEffects/HueSaturation.qml new file mode 100644 index 0000000000000000000000000000000000000000..eb13dcb6342ec3c47b137e7afa9dc4cdf8275a87 --- /dev/null +++ b/deployment_test/QtGraphicalEffects/HueSaturation.qml @@ -0,0 +1,224 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtGraphicalEffects.private 1.12 + +/*! + \qmltype HueSaturation + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-color + \brief Alters the source item colors in the HSL color space. + + HueSaturation is similar to the \l{QtGraphicalEffects::Colorize}{Colorize} + effect, but the hue and saturation property values are handled differently. + The HueSaturation effect always shifts the hue, saturation, and lightness + from the original, instead of setting them. + + \table + \header + \li Source + \li Effect applied + \row + \li \image Original_bug.png + \li \image HueSaturation_bug.png + \endtable + + \note This effect is available when running with OpenGL. + + \section1 Example + + The following example shows how to apply the effect. + \snippet HueSaturation-example.qml example + +*/ +Item { + id: rootItem + + /*! + This property defines the source item that provides the source pixels + for the effect. + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property variant source: 0 + + /*! + This property defines the hue value which is added to the source hue + value. + + The value ranges from -1.0 (decrease) to 1.0 (increase). By default, the + property is set to \c 0.0 (no change). + + \table + \header + \li Output examples with different hue values + \li + \li + \row + \li \image HueSaturation_hue1.png + \li \image HueSaturation_hue2.png + \li \image HueSaturation_hue3.png + \row + \li \b { hue: -0.3 } + \li \b { hue: 0.0 } + \li \b { hue: 0.3 } + \row + \li \l saturation: 0 + \li \l saturation: 0 + \li \l saturation: 0 + \row + \li \l lightness: 0 + \li \l lightness: 0 + \li \l lightness: 0 + \endtable + + */ + property real hue: 0.0 + + /*! + This property defines the saturation value value which is added to the + source saturation value. + + The value ranges from -1.0 (decrease) to 1.0 (increase). By default, the + property is set to \c 0.0 (no change). + + \table + \header + \li Output examples with different saturation values + \li + \li + \row + \li \image HueSaturation_saturation1.png + \li \image HueSaturation_saturation2.png + \li \image HueSaturation_saturation3.png + \row + \li \b { saturation: -0.8 } + \li \b { saturation: 0.0 } + \li \b { saturation: 1.0 } + \row + \li \l hue: 0 + \li \l hue: 0 + \li \l hue: 0 + \row + \li \l lightness: 0 + \li \l lightness: 0 + \li \l lightness: 0 + \endtable + + */ + property real saturation: 0.0 + + /*! + This property defines the lightness value which is added to the source + saturation value. + + The value ranges from -1.0 (decrease) to 1.0 (increase). By default, the + property is set to \c 0.0 (no change). + + \table + \header + \li Output examples with different lightness values + \li + \li + \row + \li \image HueSaturation_lightness1.png + \li \image HueSaturation_lightness2.png + \li \image HueSaturation_lightness3.png + \row + \li \b { lightness: -0.5 } + \li \b { lightness: 0.0 } + \li \b { lightness: 0.5 } + \row + \li \l hue: 0 + \li \l hue: 0 + \li \l hue: 0 + \row + \li \l saturation: 0 + \li \l saturation: 0 + \li \l saturation: 0 + \endtable + + */ + property real lightness: 0.0 + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + + Every time the source or effect properties are changed, the pixels in + the cache must be updated. Memory consumption is increased, because an + extra buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + */ + property bool cached: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + interpolation: input && input.smooth ? SourceProxy.LinearInterpolation : SourceProxy.NearestInterpolation + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: parent + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + ShaderEffect { + id: shaderItem + property variant source: sourceProxy.output + property variant hsl: Qt.vector3d(rootItem.hue, rootItem.saturation, rootItem.lightness) + + anchors.fill: parent + + fragmentShader: "qrc:/qt-project.org/imports/QtGraphicalEffects/shaders/huesaturation.frag" + } +} diff --git a/deployment_test/QtGraphicalEffects/InnerShadow.qml b/deployment_test/QtGraphicalEffects/InnerShadow.qml new file mode 100644 index 0000000000000000000000000000000000000000..7a388e3488de8fc3ac2780f0e5078f07fd4f025b --- /dev/null +++ b/deployment_test/QtGraphicalEffects/InnerShadow.qml @@ -0,0 +1,386 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtGraphicalEffects.private 1.12 + +/*! + \qmltype InnerShadow + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-drop-shadow + \brief Generates a colorized and blurred shadow inside the + source. + + By default the effect produces a high quality shadow image, thus the + rendering speed of the shadow might not be the highest possible. The + rendering speed is reduced especially if the shadow edges are heavily + softened. For use cases that require faster rendering speed and for which + the highest possible visual quality is not necessary, property + \l{InnerShadow::fast}{fast} can be set to true. + + \table + \header + \li Source + \li Effect applied + \row + \li \image Original_butterfly.png + \li \image InnerShadow_butterfly.png + \endtable + + \note This effect is available when running with OpenGL. + + \section1 Example + + The following example shows how to apply the effect. + \snippet InnerShadow-example.qml example + +*/ +Item { + id: rootItem + + /*! + This property defines the source item that is going to be used as the + source for the generated shadow. + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property variant source + + /*! + Radius defines the softness of the shadow. A larger radius causes the + edges of the shadow to appear more blurry. + + Depending on the radius value, value of the + \l{InnerShadow::samples}{samples} should be set to sufficiently large to + ensure the visual quality. + + The value ranges from 0.0 (no blur) to inf. By default, the property is + set to \c 0.0 (no blur). + + \table + \header + \li Output examples with different radius values + \li + \li + \row + \li \image InnerShadow_radius1.png + \li \image InnerShadow_radius2.png + \li \image InnerShadow_radius3.png + \row + \li \b { radius: 0 } + \li \b { radius: 6 } + \li \b { radius: 12 } + \row + \li \l samples: 24 + \li \l samples: 24 + \li \l samples: 24 + \row + \li \l color: #000000 + \li \l color: #000000 + \li \l color: #000000 + \row + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \row + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \row + \li \l spread: 0 + \li \l spread: 0 + \li \l spread: 0 + \endtable + + */ + property real radius: 0.0 + + /*! + This property defines how many samples are taken per pixel when edge + softening blur calculation is done. Larger value produces better + quality, but is slower to render. + + Ideally, this value should be twice as large as the highest required + radius value, for example, if the radius is animated between 0.0 and + 4.0, samples should be set to 8. + + The value ranges from 0 to 32. By default, the property is set to \c 0. + + This property is not intended to be animated. Changing this property may + cause the underlying OpenGL shaders to be recompiled. + + When \l{InnerShadow::fast}{fast} property is set to true, this property + has no effect. + + */ + property int samples: 0 + + /*! + This property defines how large part of the shadow color is strengthened + near the source edges. + + The value ranges from 0.0 to 1.0. By default, the property is set to \c + 0.5. + + \table + \header + \li Output examples with different spread values + \li + \li + \row + \li \image InnerShadow_spread1.png + \li \image InnerShadow_spread2.png + \li \image InnerShadow_spread3.png + \row + \li \b { spread: 0.0 } + \li \b { spread: 0.3 } + \li \b { spread: 0.5 } + \row + \li \l radius: 16 + \li \l radius: 16 + \li \l radius: 16 + \row + \li \l samples: 24 + \li \l samples: 24 + \li \l samples: 24 + \row + \li \l color: #000000 + \li \l color: #000000 + \li \l color: #000000 + \row + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \row + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \endtable + + */ + property real spread: 0.0 + + /*! + This property defines the RGBA color value which is used for the shadow. + + By default, the property is set to \c "black". + + \table + \header + \li Output examples with different color values + \li + \li + \row + \li \image InnerShadow_color1.png + \li \image InnerShadow_color2.png + \li \image InnerShadow_color3.png + \row + \li \b { color: #000000 } + \li \b { color: #ffffff } + \li \b { color: #ff0000 } + \row + \li \l radius: 16 + \li \l radius: 16 + \li \l radius: 16 + \row + \li \l samples: 24 + \li \l samples: 24 + \li \l samples: 24 + \row + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \row + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \row + \li \l spread: 0.2 + \li \l spread: 0.2 + \li \l spread: 0.2 + \endtable + */ + property color color: "black" + + /*! + \qmlproperty real QtGraphicalEffects::InnerShadow::horizontalOffset + \qmlproperty real QtGraphicalEffects::InnerShadow::verticalOffset + + HorizontalOffset and verticalOffset properties define the offset for the + rendered shadow compared to the InnerShadow item position. Often, the + InnerShadow item is anchored so that it fills the source element. In + this case, if the HorizontalOffset and verticalOffset properties are set + to 0, the shadow is rendered fully inside the source item. By changing + the offset properties, the shadow can be positioned relatively to the + source item. + + The values range from -inf to inf. By default, the properties are set to + \c 0. + + \table + \header + \li Output examples with different horizontalOffset values + \li + \li + \row + \li \image InnerShadow_horizontalOffset1.png + \li \image InnerShadow_horizontalOffset2.png + \li \image InnerShadow_horizontalOffset3.png + \row + \li \b { horizontalOffset: -20 } + \li \b { horizontalOffset: 0 } + \li \b { horizontalOffset: 20 } + \row + \li \l radius: 16 + \li \l radius: 16 + \li \l radius: 16 + \row + \li \l samples: 24 + \li \l samples: 24 + \li \l samples: 24 + \row + \li \l color: #000000 + \li \l color: #000000 + \li \l color: #000000 + \row + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \row + \li \l spread: 0 + \li \l spread: 0 + \li \l spread: 0 + \endtable + + */ + property real horizontalOffset: 0 + property real verticalOffset: 0 + + /*! + This property selects the blurring algorithm that is used to produce the + softness for the effect. Setting this to true enables fast algorithm, + setting value to false produces higher quality result. + + By default, the property is set to \c false. + + \table + \header + \li Output examples with different fast values + \li + \li + \row + \li \image InnerShadow_fast1.png + \li \image InnerShadow_fast2.png + \row + \li \b { fast: false } + \li \b { fast: true } + \row + \li \l radius: 16 + \li \l radius: 16 + \row + \li \l samples: 24 + \li \l samples: 24 + \row + \li \l color: #000000 + \li \l color: #000000 + \row + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \row + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \row + \li \l spread: 0.2 + \li \l spread: 0.2 + \endtable + */ + property bool fast: false + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. Every time the source or effect + properties are changed, the pixels in the cache must be updated. Memory + consumption is increased, because an extra buffer of memory is required + for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + + */ + property bool cached: false + + Loader { + anchors.fill: parent + sourceComponent: rootItem.fast ? innerShadow : gaussianInnerShadow + } + + Component { + id: gaussianInnerShadow + GaussianInnerShadow { + anchors.fill: parent + source: rootItem.source + radius: rootItem.radius + maximumRadius: rootItem.samples * 0.5 + color: rootItem.color + cached: rootItem.cached + spread: rootItem.spread + horizontalOffset: rootItem.horizontalOffset + verticalOffset: rootItem.verticalOffset + } + } + + Component { + id: innerShadow + FastInnerShadow { + anchors.fill: parent + source: rootItem.source + blur: Math.pow(rootItem.radius / 64.0, 0.4) + color: rootItem.color + cached: rootItem.cached + spread: rootItem.spread + horizontalOffset: rootItem.horizontalOffset + verticalOffset: rootItem.verticalOffset + } + } +} diff --git a/deployment_test/QtGraphicalEffects/LevelAdjust.qml b/deployment_test/QtGraphicalEffects/LevelAdjust.qml new file mode 100644 index 0000000000000000000000000000000000000000..b98facaaba12afda5df1933a3c59e00e8bdb0e91 --- /dev/null +++ b/deployment_test/QtGraphicalEffects/LevelAdjust.qml @@ -0,0 +1,440 @@ +/***************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Add-On Graphical Effects module. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +*****************************************************************************/ + +import QtQuick 2.12 +import QtGraphicalEffects.private 1.12 + +/*! + \qmltype LevelAdjust + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-color + \brief Adjusts color levels in the RGBA color space. + + This effect adjusts the source item colors separately for each color + channel. Source item contrast can be adjusted and color balance altered. + + \table + \header + \li Source + \li Effect applied + \row + \li \image Original_butterfly.png + \li \image LevelAdjust_butterfly.png + \endtable + + \note This effect is available when running with OpenGL. + + \section1 Example + + The following example shows how to apply the effect. + \snippet LevelAdjust-example.qml example + +*/ +Item { + id: rootItem + + /*! + This property defines the source item that provides the source pixels + for the effect. + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property variant source + + /*! + This property defines the change factor for how the value of each pixel + color channel is altered according to the equation: + + \code + result.rgb = pow(original.rgb, 1.0 / gamma.rgb); + \endcode + + Setting the gamma values under QtVector3d(1.0, 1.0, 1.0) makes the image + darker, the values above QtVector3d(1.0, 1.0, 1.0) lighten it. + + The value ranges from QtVector3d(0.0, 0.0, 0.0) (darkest) to inf + (lightest). By default, the property is set to \c QtVector3d(1.0, 1.0, + 1.0) (no change). + + \table + \header + \li Output examples with different gamma values + \li + \li + \row + \li \image LevelAdjust_gamma1.png + \li \image LevelAdjust_gamma2.png + \li \image LevelAdjust_gamma3.png + \row + \li \b { gamma: Qt.vector3d(1.0, 1.0, 1.0) } + \li \b { gamma: Qt.vector3d(1.0, 0.4, 2.0) } + \li \b { gamma: Qt.vector3d(1.0, 0.1, 4.0) } + \row + \li \l minimumInput: #000000 + \li \l minimumInput: #000000 + \li \l minimumInput: #000000 + \row + \li \l maximumInput: #ffffff + \li \l maximumInput: #ffffff + \li \l maximumInput: #ffffff + \row + \li \l minimumOutput: #000000 + \li \l minimumOutput: #000000 + \li \l minimumOutput: #000000 + \row + \li \l maximumOutput: #ffffff + \li \l maximumOutput: #ffffff + \li \l maximumOutput: #ffffff + \endtable + + \table + \header + \li Pixel color channel luminance curves of the above images. + \li + \li + \row + \li \image LevelAdjust_default_curve.png + \li \image LevelAdjust_gamma2_curve.png + \li \image LevelAdjust_gamma3_curve.png + \row + \li X-axis: pixel original luminance + \li + \li + \row + \li Y-axis: color channel luminance with effect applied + \li + \li + \endtable + */ + property variant gamma: Qt.vector3d(1.0, 1.0, 1.0) + + /*! + This property defines the minimum input level for each color channel. It + sets the black-point, all pixels having lower value than this property + are rendered as black (per color channel). Increasing the value darkens + the dark areas. + + The value ranges from "#00000000" to "#ffffffff". By default, the + property is set to \c "#00000000" (no change). + + \table + \header + \li Output examples with different minimumInput values + \li + \li + \row + \li \image LevelAdjust_minimumInput1.png + \li \image LevelAdjust_minimumInput2.png + \li \image LevelAdjust_minimumInput3.png + \row + \li \b { minimumInput: #00000000 } + \li \b { minimumInput: #00000040 } + \li \b { minimumInput: #00000070 } + \row + \li \l maximumInput: #ffffff + \li \l maximumInput: #ffffff + \li \l maximumInput: #ffffff + \row + \li \l minimumOutput: #000000 + \li \l minimumOutput: #000000 + \li \l minimumOutput: #000000 + \row + \li \l maximumOutput: #ffffff + \li \l maximumOutput: #ffffff + \li \l maximumOutput: #ffffff + \row + \li \l gamma: Qt.vector3d(1.0, 1.0, 1.0) + \li \l gamma: Qt.vector3d(1.0, 1.0, 1.0) + \li \l gamma: Qt.vector3d(1.0, 1.0, 1.0) + \endtable + + \table + \header + \li Pixel color channel luminance curves of the above images. + \li + \li + \row + \li \image LevelAdjust_default_curve.png + \li \image LevelAdjust_minimumInput2_curve.png + \li \image LevelAdjust_minimumInput3_curve.png + \row + \li X-axis: pixel original luminance + \li + \li + \row + \li Y-axis: color channel luminance with effect applied + \li + \li + \endtable + + */ + property color minimumInput: Qt.rgba(0.0, 0.0, 0.0, 0.0) + + /*! + This property defines the maximum input level for each color channel. + It sets the white-point, all pixels having higher value than this + property are rendered as white (per color channel). + Decreasing the value lightens the light areas. + + The value ranges from "#ffffffff" to "#00000000". By default, the + property is set to \c "#ffffffff" (no change). + + \table + \header + \li Output examples with different maximumInput values + \li + \li + \row + \li \image LevelAdjust_maximumInput1.png + \li \image LevelAdjust_maximumInput2.png + \li \image LevelAdjust_maximumInput3.png + \row + \li \b { maximumInput: #FFFFFFFF } + \li \b { maximumInput: #FFFFFF80 } + \li \b { maximumInput: #FFFFFF30 } + \row + \li \l minimumInput: #000000 + \li \l minimumInput: #000000 + \li \l minimumInput: #000000 + \row + \li \l minimumOutput: #000000 + \li \l minimumOutput: #000000 + \li \l minimumOutput: #000000 + \row + \li \l maximumOutput: #ffffff + \li \l maximumOutput: #ffffff + \li \l maximumOutput: #ffffff + \row + \li \l gamma: Qt.vector3d(1.0, 1.0, 1.0) + \li \l gamma: Qt.vector3d(1.0, 1.0, 1.0) + \li \l gamma: Qt.vector3d(1.0, 1.0, 1.0) + \endtable + + \table + \header + \li Pixel color channel luminance curves of the above images. + \li + \li + \row + \li \image LevelAdjust_default_curve.png + \li \image LevelAdjust_maximumInput2_curve.png + \li \image LevelAdjust_maximumInput3_curve.png + \row + \li X-axis: pixel original luminance + \li + \li + \row + \li Y-axis: color channel luminance with effect applied + \li + \li + \endtable + + */ + property color maximumInput: Qt.rgba(1.0, 1.0, 1.0, 1.0) + + /*! + This property defines the minimum output level for each color channel. + Increasing the value lightens the dark areas, reducing the contrast. + + The value ranges from "#00000000" to "#ffffffff". By default, the + property is set to \c "#00000000" (no change). + + \table + \header + \li Output examples with different minimumOutput values + \li + \li + \row + \li \image LevelAdjust_minimumOutput1.png + \li \image LevelAdjust_minimumOutput2.png + \li \image LevelAdjust_minimumOutput3.png + \row + \li \b { minimumOutput: #00000000 } + \li \b { minimumOutput: #00000070 } + \li \b { minimumOutput: #000000A0 } + \row + \li \l minimumInput: #000000 + \li \l minimumInput: #000000 + \li \l minimumInput: #000000 + \row + \li \l maximumInput: #ffffff + \li \l maximumInput: #ffffff + \li \l maximumInput: #ffffff + \row + \li \l maximumOutput: #ffffff + \li \l maximumOutput: #ffffff + \li \l maximumOutput: #ffffff + \row + \li \l gamma: Qt.vector3d(1.0, 1.0, 1.0) + \li \l gamma: Qt.vector3d(1.0, 1.0, 1.0) + \li \l gamma: Qt.vector3d(1.0, 1.0, 1.0) + \endtable + + \table + \header + \li Pixel color channel luminance curves of the above images. + \li + \li + \row + \li \image LevelAdjust_default_curve.png + \li \image LevelAdjust_minimumOutput2_curve.png + \li \image LevelAdjust_minimumOutput3_curve.png + \row + \li X-axis: pixel original luminance + \li + \li + \row + \li Y-axis: color channel luminance with effect applied + \li + \li + \endtable + + */ + property color minimumOutput: Qt.rgba(0.0, 0.0, 0.0, 0.0) + + /*! + This property defines the maximum output level for each color channel. + Decreasing the value darkens the light areas, reducing the contrast. + + The value ranges from "#ffffffff" to "#00000000". By default, the + property is set to \c "#ffffffff" (no change). + + \table + \header + \li Output examples with different maximumOutput values + \li + \li + \row + \li \image LevelAdjust_maximumOutput1.png + \li \image LevelAdjust_maximumOutput2.png + \li \image LevelAdjust_maximumOutput3.png + \row + \li \b { maximumOutput: #FFFFFFFF } + \li \b { maximumOutput: #FFFFFF80 } + \li \b { maximumOutput: #FFFFFF30 } + \row + \li \l minimumInput: #000000 + \li \l minimumInput: #000000 + \li \l minimumInput: #000000 + \row + \li \l maximumInput: #ffffff + \li \l maximumInput: #ffffff + \li \l maximumInput: #ffffff + \row + \li \l minimumOutput: #000000 + \li \l minimumOutput: #000000 + \li \l minimumOutput: #000000 + \row + \li \l gamma: Qt.vector3d(1.0, 1.0, 1.0) + \li \l gamma: Qt.vector3d(1.0, 1.0, 1.0) + \li \l gamma: Qt.vector3d(1.0, 1.0, 1.0) + \endtable + + \table + \header + \li Pixel color channel luminance curves of the above images. + \li + \li + \row + \li \image LevelAdjust_default_curve.png + \li \image LevelAdjust_maximumOutput2_curve.png + \li \image LevelAdjust_maximumOutput3_curve.png + \row + \li X-axis: pixel original luminance + \li + \li + \row + \li Y-axis: color channel luminance with effect applied + \li + \li + \endtable + */ + property color maximumOutput: Qt.rgba(1.0, 1.0, 1.0, 1.0) + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + + Every time the source or effect properties are changed, the pixels in + the cache must be updated. Memory consumption is increased, because an + extra buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + */ + property bool cached: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + interpolation: input && input.smooth ? SourceProxy.LinearInterpolation : SourceProxy.NearestInterpolation + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: parent + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + ShaderEffect { + id: shaderItem + property variant source: sourceProxy.output + property variant minimumInputRGB: Qt.vector3d(rootItem.minimumInput.r, rootItem.minimumInput.g, rootItem.minimumInput.b) + property variant maximumInputRGB: Qt.vector3d(rootItem.maximumInput.r, rootItem.maximumInput.g, rootItem.maximumInput.b) + property real minimumInputAlpha: rootItem.minimumInput.a + property real maximumInputAlpha: rootItem.maximumInput.a + property variant minimumOutputRGB: Qt.vector3d(rootItem.minimumOutput.r, rootItem.minimumOutput.g, rootItem.minimumOutput.b) + property variant maximumOutputRGB: Qt.vector3d(rootItem.maximumOutput.r, rootItem.maximumOutput.g, rootItem.maximumOutput.b) + property real minimumOutputAlpha: rootItem.minimumOutput.a + property real maximumOutputAlpha: rootItem.maximumOutput.a + property variant gamma: Qt.vector3d(1.0 / Math.max(rootItem.gamma.x, 0.0001), 1.0 / Math.max(rootItem.gamma.y, 0.0001), 1.0 / Math.max(rootItem.gamma.z, 0.0001)) + anchors.fill: parent + + fragmentShader: "qrc:/qt-project.org/imports/QtGraphicalEffects/shaders/leveladjust.frag" + } +} diff --git a/deployment_test/QtGraphicalEffects/LinearGradient.qml b/deployment_test/QtGraphicalEffects/LinearGradient.qml new file mode 100644 index 0000000000000000000000000000000000000000..1f73a218f9cce674195c660c505251c61a240f06 --- /dev/null +++ b/deployment_test/QtGraphicalEffects/LinearGradient.qml @@ -0,0 +1,323 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtGraphicalEffects.private 1.12 + +/*! + \qmltype LinearGradient + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-gradient + \brief Draws a linear gradient. + + A gradient is defined by two or more colors, which are blended seamlessly. + The colors start from the given start point and end to the given end point. + + \table + \header + \li Effect applied + \row + \li \image LinearGradient.png + \endtable + + \note This effect is available when running with OpenGL. + + \section1 Example + + The following example shows how to apply the effect. + \snippet LinearGradient-example.qml example + +*/ +Item { + id: rootItem + + /*! + This property defines the starting point where the color at gradient + position of 0.0 is rendered. Colors at larger position values are + rendered linearly towards the end point. The point is given in pixels + and the default value is Qt.point(0, 0). Setting the default values for + the start and \l{LinearGradient::end}{end} results in a full height + linear gradient on the y-axis. + + \table + \header + \li Output examples with different start values + \li + \li + \row + \li \image LinearGradient_start1.png + \li \image LinearGradient_start2.png + \li \image LinearGradient_start3.png + \row + \li \b { start: QPoint(0, 0) } + \li \b { start: QPoint(150, 150) } + \li \b { start: QPoint(300, 0) } + \row + \li \l end: QPoint(300, 300) + \li \l end: QPoint(300, 300) + \li \l end: QPoint(300, 300) + \endtable + + */ + property variant start: Qt.point(0, 0) + + /*! + This property defines the ending point where the color at gradient + position of 1.0 is rendered. Colors at smaller position values are + rendered linearly towards the start point. The point is given in pixels + and the default value is Qt.point(0, height). Setting the default values + for the \l{LinearGradient::start}{start} and end results in a full + height linear gradient on the y-axis. + + \table + \header + \li Output examples with different end values + \li + \li + \row + \li \image LinearGradient_end1.png + \li \image LinearGradient_end2.png + \li \image LinearGradient_end3.png + \row + \li \b { end: Qt.point(300, 300) } + \li \b { end: Qt.point(150, 150) } + \li \b { end: Qt.point(300, 0) } + \row + \li \l start: Qt.point(0, 0) + \li \l start: Qt.point(0, 0) + \li \l start: Qt.point(0, 0) + \endtable + + */ + property variant end: Qt.point(0, height) + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + + Every time the source or effect properties are changed, the pixels in + the cache must be updated. Memory consumption is increased, because an + extra buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + */ + property bool cached: false + + /*! + This property defines the item that is going to be filled with gradient. + Source item gets rendered into an intermediate pixel buffer and the + alpha values from the result are used to determine the gradient's pixels + visibility in the display. The default value for source is undefined and + in that case whole effect area is filled with gradient. + + \table + \header + \li Output examples with different source values + \li + \li + \row + \li \image LinearGradient_maskSource1.png + \li \image LinearGradient_maskSource2.png + \row + \li \b { source: undefined } + \li \b { source: Image { source: images/butterfly.png } } + \row + \li \l start: Qt.point(0, 0) + \li \l start: Qt.point(0, 0) + \row + \li \l end: Qt.point(300, 300) + \li \l end: Qt.point(300, 300) + \endtable + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property variant source + + + /*! + A gradient is defined by two or more colors, which are blended + seamlessly. The colors are specified as a set of GradientStop child + items, each of which defines a position on the gradient from 0.0 to 1.0 + and a color. The position of each GradientStop is defined by the + position property, and the color is definded by the color property. + + \table + \header + \li Output examples with different gradient values + \li + \li + \row + \li \image LinearGradient_gradient1.png + \li \image LinearGradient_gradient2.png + \li \image LinearGradient_gradient3.png + \row + \li \b {gradient:} \code + Gradient { + GradientStop { + position: 0.000 + color: Qt.rgba(1, 0, 0, 1) + } + GradientStop { + position: 0.167 + color: Qt.rgba(1, 1, 0, 1) + } + GradientStop { + position: 0.333 + color: Qt.rgba(0, 1, 0, 1) + } + GradientStop { + position: 0.500 + color: Qt.rgba(0, 1, 1, 1) + } + GradientStop { + position: 0.667 + color: Qt.rgba(0, 0, 1, 1) + } + GradientStop { + position: 0.833 + color: Qt.rgba(1, 0, 1, 1) + } + GradientStop { + position: 1.000 + color: Qt.rgba(1, 0, 0, 1) + } + } + \endcode + \li \b {gradient:} \code + Gradient { + GradientStop { + position: 0.0 + color: "#F0F0F0" + } + GradientStop { + position: 0.5 + color: "#000000" + } + GradientStop { + position: 1.0 + color: "#F0F0F0" + } + } + \endcode + \li \b {gradient:} \code + Gradient { + GradientStop { + position: 0.0 + color: "#00000000" + } + GradientStop { + position: 1.0 + color: "#FF000000" + } + } + \endcode + \row + \li \l start: Qt.point(0, 0) + \li \l start: Qt.point(0, 0) + \li \l start: Qt.point(0, 0) + \row + \li \l end: Qt.point(300, 300) + \li \l end: Qt.point(300, 300) + \li \l end: Qt.point(300, 300) + \endtable + + */ + property Gradient gradient: Gradient { + GradientStop { position: 0.0; color: "white" } + GradientStop { position: 1.0; color: "black" } + } + + SourceProxy { + id: maskSourceProxy + input: rootItem.source + } + + ShaderEffectSource { + id: gradientSource + sourceItem: Rectangle { + width: 16 + height: 256 + gradient: rootItem.gradient + smooth: true + } + smooth: true + hideSource: true + visible: false + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: parent + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + ShaderEffect { + id: shaderItem + + anchors.fill: parent + + property variant source: gradientSource + property variant maskSource: maskSourceProxy.output + property variant startPoint: Qt.point(start.x / width, start.y / height) + property real dx: end.x - start.x + property real dy: end.y - start.y + property real l: 1.0 / Math.sqrt(Math.pow(dx / width, 2.0) + Math.pow(dy / height, 2.0)) + property real angle: Math.atan2(dx, dy) + property variant matrixData: Qt.point(Math.sin(angle), Math.cos(angle)) + + vertexShader: "qrc:/qt-project.org/imports/QtGraphicalEffects/shaders/lineargradient.vert" + + fragmentShader: maskSource == undefined ? noMaskShader : maskShader + + onFragmentShaderChanged: lChanged() + + property string maskShader: "qrc:/qt-project.org/imports/QtGraphicalEffects/shaders/lineargradient_mask.frag" + property string noMaskShader: "qrc:/qt-project.org/imports/QtGraphicalEffects/shaders/lineargradient_nomask.frag" + } +} diff --git a/deployment_test/QtGraphicalEffects/MaskedBlur.qml b/deployment_test/QtGraphicalEffects/MaskedBlur.qml new file mode 100644 index 0000000000000000000000000000000000000000..d777b0ae203a1887751f6d8dc520776beccac37c --- /dev/null +++ b/deployment_test/QtGraphicalEffects/MaskedBlur.qml @@ -0,0 +1,218 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Copyright (C) 2017 Jolla Ltd, author: <gunnar.sletta@jollamobile.com> +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtGraphicalEffects.private 1.12 + +/*! + \qmltype MaskedBlur + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-blur + \brief Applies a blur effect with a varying intesity. + + MaskedBlur effect softens the image by blurring it. The intensity of the + blur can be controlled for each pixel using maskSource so that some parts of + the source are blurred more than others. + + Performing blur live is a costly operation. Fullscreen gaussian blur + with even a moderate number of samples will only run at 60 fps on highend + graphics hardware. + + \table + \header + \li Source + \li MaskSource + \li Effect applied + \row + \li \image Original_bug.png + \li \image MaskedBlur_mask.png + \li \image MaskedBlur_bug.png + \endtable + + \note This effect is available when running with OpenGL. + + \section1 Example + + The following example shows how to apply the effect. + \snippet MaskedBlur-example.qml example + +*/ +Item { + id: root + + /*! + This property defines the source item that is going to be blurred. + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property alias source: blur.source + + /*! + This property defines the item that is controlling the final intensity + of the blur. The pixel alpha channel value from maskSource defines the + actual blur radius that is going to be used for blurring the + corresponding source pixel. + + Opaque maskSource pixels produce blur with specified + \l{MaskedBlur::radius}{radius}, while transparent pixels suppress the + blur completely. Semitransparent maskSource pixels produce blur with a + radius that is interpolated according to the pixel transparency level. + */ + property alias maskSource: maskProxy.input + + /*! + This property defines the distance of the neighboring pixels which + affect the blurring of an individual pixel. A larger radius increases + the blur effect. + + Depending on the radius value, value of the + \l{MaskedBlur::samples}{samples} should be set to sufficiently large to + ensure the visual quality. + + The value ranges from 0.0 (no blur) to inf. By default, the property is + set to \c 0.0 (no blur). + + \table + \header + \li Output examples with different radius values + \li + \li + \row + \li \image MaskedBlur_radius1.png + \li \image MaskedBlur_radius2.png + \li \image MaskedBlur_radius3.png + \row + \li \b { radius: 0 } + \li \b { radius: 8 } + \li \b { radius: 16 } + \row + \li \l samples: 25 + \li \l samples: 25 + \li \l samples: 25 + \endtable + + */ + property alias radius: blur.radius + + /*! + This property defines how many samples are taken per pixel when blur + calculation is done. Larger value produces better quality, but is slower + to render. + + Ideally, this value should be twice as large as the highest required + radius value plus 1, for example, if the radius is animated between 0.0 + and 4.0, samples should be set to 9. + + By default, the property is set to \c 9. + + This property is not intended to be animated. Changing this property may + cause the underlying OpenGL shaders to be recompiled. + */ + property alias samples: blur.samples + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. Every time the source or effect + properties are changed, the pixels in the cache must be updated. Memory + consumption is increased, because an extra buffer of memory is required + for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + + */ + property alias cached: cacheItem.visible + + /*! + \internal + + Kept for source compatibility only. Removed in Qt 5.6 + ### Qt6: remove + */ + property bool fast: false + + /*! + \internal + + Kept for source compatibility only. Removed in Qt 5.6 + + Doing transparent border on a masked source doesn't make any sense + as the padded exterior will have a mask alpha value of 0 which means + no blurring and as the padded exterior of the source is a transparent + pixel, the result is no pixels at all. + + In Qt 5.6 and before, this worked based on that the mask source + was scaled up to fit the padded blur target rect, which would lead + to inconsistent and buggy results. + + ### Qt6: remove + */ + property bool transparentBorder; + + GaussianBlur { + id: blur + + source: root.source; + anchors.fill: parent + _maskSource: maskProxy.output; + + SourceProxy { + id: maskProxy + } + } + + ShaderEffectSource { + id: cacheItem + x: -blur._kernelRadius + y: -blur._kernelRadius + width: blur.width + 2 * blur._kernelRadius + height: blur.height + 2 * blur._kernelRadius + visible: false + smooth: true + sourceRect: Qt.rect(-blur._kernelRadius, -blur._kernelRadius, width, height); + sourceItem: blur + hideSource: visible + } +} diff --git a/deployment_test/QtGraphicalEffects/OpacityMask.qml b/deployment_test/QtGraphicalEffects/OpacityMask.qml new file mode 100644 index 0000000000000000000000000000000000000000..7dffb6d48fdb337d8035d53144ae727e737312f0 --- /dev/null +++ b/deployment_test/QtGraphicalEffects/OpacityMask.qml @@ -0,0 +1,162 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtGraphicalEffects.private 1.12 + +/*! + \qmltype OpacityMask + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-mask + \brief Masks the source item with another item. + + \table + \header + \li Source + \li MaskSource + \li Effect applied + \row + \li \image Original_bug.png + \li \image OpacityMask_mask.png + \li \image OpacityMask_bug.png + \endtable + + \note This effect is available when running with OpenGL. + + \section1 Example + + The following example shows how to apply the effect. + \snippet OpacityMask-example.qml example + +*/ +Item { + id: rootItem + + /*! + This property defines the source item that is going to be masked. + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property variant source + + /*! + This property defines the item that is going to be used as the mask. The + mask item gets rendered into an intermediate pixel buffer and the alpha + values from the result are used to determine the source item's pixels + visibility in the display. + + \table + \header + \li Original + \li Mask + \li Effect applied + \row + \li \image Original_bug.png + \li \image OpacityMask_mask.png + \li \image OpacityMask_bug.png + \endtable + */ + property variant maskSource + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + + Every time the source or effect properties are changed, the pixels in + the cache must be updated. Memory consumption is increased, because an + extra buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + + \note It is not supported to let the effect include itself, for + instance by setting maskSource to the effect's parent. + */ + property bool cached: false + + /*! + This property controls how the alpha values of the sourceMask will behave. + + If this property is \c false, the resulting opacity is the source alpha + multiplied with the mask alpha, \c{As * Am}. + + If this property is \c true, the resulting opacity is the source alpha + multiplied with the inverse of the mask alpha, \c{As * (1 - Am)}. + + The default is \c false. + + \since 5.7 + */ + property bool invert: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + } + + SourceProxy { + id: maskSourceProxy + input: rootItem.maskSource + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: parent + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + ShaderEffect { + id: shaderItem + property variant source: sourceProxy.output + property variant maskSource: maskSourceProxy.output + + anchors.fill: parent + + fragmentShader: invert ? "qrc:/qt-project.org/imports/QtGraphicalEffects/shaders/opacitymask_invert.frag" : "qrc:/qt-project.org/imports/QtGraphicalEffects/shaders/opacitymask.frag" + } +} diff --git a/deployment_test/QtGraphicalEffects/RadialBlur.qml b/deployment_test/QtGraphicalEffects/RadialBlur.qml new file mode 100644 index 0000000000000000000000000000000000000000..71d3b64873373cad0b58986c7bf8ec7b2478ae47 --- /dev/null +++ b/deployment_test/QtGraphicalEffects/RadialBlur.qml @@ -0,0 +1,316 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtGraphicalEffects.private 1.12 + +/*! + \qmltype RadialBlur + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-motion-blur + \brief Applies directional blur in a circular direction around the items + center point. + + Effect creates perceived impression that the source item appears to be + rotating to the direction of the blur. + + Other available motionblur effects are + \l{QtGraphicalEffects::ZoomBlur}{ZoomBlur} and + \l{QtGraphicalEffects::DirectionalBlur}{DirectionalBlur}. + + \table + \header + \li Source + \li Effect applied + \row + \li \image Original_bug.png + \li \image RadialBlur_bug.png + \endtable + + \note This effect is available when running with OpenGL. + + \section1 Example Usage + + The following example shows how to apply the effect. + \snippet RadialBlur-example.qml example +*/ +Item { + id: rootItem + + /*! + This property defines the source item that is going to be blurred. + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property variant source + + /*! + This property defines the direction for the blur and at the same time + the level of blurring. The larger the angle, the more the result becomes + blurred. The quality of the blur depends on + \l{RadialBlur::samples}{samples} property. If angle value is large, more + samples are needed to keep the visual quality at high level. + + Allowed values are between 0.0 and 360.0. By default the property is set + to \c 0.0. + + \table + \header + \li Output examples with different angle values + \li + \li + \row + \li \image RadialBlur_angle1.png + \li \image RadialBlur_angle2.png + \li \image RadialBlur_angle3.png + \row + \li \b { angle: 0.0 } + \li \b { angle: 15.0 } + \li \b { angle: 30.0 } + \row + \li \l samples: 24 + \li \l samples: 24 + \li \l samples: 24 + \row + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \row + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \endtable + */ + property real angle: 0.0 + + /*! + This property defines how many samples are taken per pixel when blur + calculation is done. Larger value produces better quality, but is slower + to render. + + This property is not intended to be animated. Changing this property may + cause the underlying OpenGL shaders to be recompiled. + + Allowed values are between 0 and inf (practical maximum depends on GPU). + By default the property is set to \c 0 (no samples). + + */ + property int samples: 0 + + /*! + \qmlproperty real QtGraphicalEffects::RadialBlur::horizontalOffset + \qmlproperty real QtGraphicalEffects::RadialBlur::verticalOffset + + These properties define the offset in pixels for the perceived center + point of the rotation. + + Allowed values are between -inf and inf. + By default these properties are set to \c 0. + + \table + \header + \li Output examples with different horizontalOffset values + \li + \li + \row + \li \image RadialBlur_horizontalOffset1.png + \li \image RadialBlur_horizontalOffset2.png + \li \image RadialBlur_horizontalOffset3.png + \row + \li \b { horizontalOffset: 75.0 } + \li \b { horizontalOffset: 0.0 } + \li \b { horizontalOffset: -75.0 } + \row + \li \l samples: 24 + \li \l samples: 24 + \li \l samples: 24 + \row + \li \l angle: 20 + \li \l angle: 20 + \li \l angle: 20 + \row + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \endtable + */ + property real horizontalOffset: 0.0 + property real verticalOffset: 0.0 + + /*! + This property defines the blur behavior near the edges of the item, + where the pixel blurring is affected by the pixels outside the source + edges. + + If the property is set to \c true, the pixels outside the source are + interpreted to be transparent, which is similar to OpenGL + clamp-to-border extension. The blur is expanded slightly outside the + effect item area. + + If the property is set to \c false, the pixels outside the source are + interpreted to contain the same color as the pixels at the edge of the + item, which is similar to OpenGL clamp-to-edge behavior. The blur does + not expand outside the effect item area. + + By default, the property is set to \c false. + */ + property bool transparentBorder: false + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + + Every time the source or effect properties are changed, the pixels in + the cache must be updated. Memory consumption is increased, because an + extra buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + + */ + property bool cached: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + sourceRect: shaderItem.transparentBorder ? Qt.rect(-1, -1, parent.width + 2.0, parent.height + 2.0) : Qt.rect(0, 0, 0, 0) + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: shaderItem + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + ShaderEffect { + id: shaderItem + property variant source: sourceProxy.output + property variant center: Qt.point(0.5 + rootItem.horizontalOffset / parent.width, 0.5 + rootItem.verticalOffset / parent.height) + property bool transparentBorder: rootItem.transparentBorder && rootItem.samples > 1 + property int samples: rootItem.samples + property real weight: 1.0 / Math.max(1.0, rootItem.samples) + property real angleSin: Math.sin(rootItem.angle/2 * Math.PI/180) + property real angleCos: Math.cos(rootItem.angle/2 * Math.PI/180) + property real angleSinStep: Math.sin(-rootItem.angle * Math.PI/180 / Math.max(1.0, rootItem.samples - 1)) + property real angleCosStep: Math.cos(-rootItem.angle * Math.PI/180 / Math.max(1.0, rootItem.samples - 1)) + property variant expandPixels: transparentBorder ? Qt.size(0.5 * parent.height, 0.5 * parent.width) : Qt.size(0,0) + property variant expand: transparentBorder ? Qt.size(expandPixels.width / width, expandPixels.height / height) : Qt.size(0,0) + property variant delta: Qt.size(1.0 / rootItem.width, 1.0 / rootItem.height) + property real w: parent.width + property real h: parent.height + + x: transparentBorder ? -expandPixels.width - 1 : 0 + y: transparentBorder ? -expandPixels.height - 1 : 0 + width: transparentBorder ? parent.width + expandPixels.width * 2.0 + 2 : parent.width + height: transparentBorder ? parent.height + expandPixels.height * 2.0 + 2 : parent.height + + property string fragmentShaderSkeleton: " + varying highp vec2 qt_TexCoord0; + uniform highp float qt_Opacity; + uniform lowp sampler2D source; + uniform highp float angleSin; + uniform highp float angleCos; + uniform highp float angleSinStep; + uniform highp float angleCosStep; + uniform highp float weight; + uniform highp vec2 expand; + uniform highp vec2 center; + uniform highp vec2 delta; + uniform highp float w; + uniform highp float h; + + void main(void) { + highp mat2 m; + gl_FragColor = vec4(0.0); + mediump vec2 texCoord = qt_TexCoord0; + + PLACEHOLDER_EXPAND_STEPS + + highp vec2 dir = vec2(texCoord.s * w - w * center.x, texCoord.t * h - h * center.y); + m[0] = vec2(angleCos, -angleSin); + m[1] = vec2(angleSin, angleCos); + dir *= m; + + m[0] = vec2(angleCosStep, -angleSinStep); + m[1] = vec2(angleSinStep, angleCosStep); + + PLACEHOLDER_UNROLLED_LOOP + + gl_FragColor *= weight * qt_Opacity; + } + " + + function buildFragmentShader() { + var shader = "" + if (GraphicsInfo.profile == GraphicsInfo.OpenGLCoreProfile) + shader += "#version 150 core\n#define varying in\n#define gl_FragColor fragColor\n#define texture2D texture\nout vec4 fragColor;\n" + shader += fragmentShaderSkeleton + var expandSteps = "" + + if (transparentBorder) { + expandSteps += "texCoord = (texCoord - expand) / (1.0 - 2.0 * expand);" + } + + var unrolledLoop = "gl_FragColor += texture2D(source, texCoord);\n" + + if (rootItem.samples > 1) { + unrolledLoop = "" + for (var i = 0; i < rootItem.samples; i++) + unrolledLoop += "gl_FragColor += texture2D(source, center + dir * delta); dir *= m;\n" + } + + shader = shader.replace("PLACEHOLDER_EXPAND_STEPS", expandSteps) + fragmentShader = shader.replace("PLACEHOLDER_UNROLLED_LOOP", unrolledLoop) + } + + onFragmentShaderChanged: sourceChanged() + onSamplesChanged: buildFragmentShader() + onTransparentBorderChanged: buildFragmentShader() + Component.onCompleted: buildFragmentShader() + } +} diff --git a/deployment_test/QtGraphicalEffects/RadialGradient.qml b/deployment_test/QtGraphicalEffects/RadialGradient.qml new file mode 100644 index 0000000000000000000000000000000000000000..52b3ff3ef99634cf7d2885ee3c7d7fc1bf095b0e --- /dev/null +++ b/deployment_test/QtGraphicalEffects/RadialGradient.qml @@ -0,0 +1,410 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtGraphicalEffects.private 1.12 + +/*! + \qmltype RadialGradient + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-gradient + \brief Draws a radial gradient. + + A gradient is defined by two or more colors, which are blended seamlessly. + The colors start from the middle of the item and end at the borders. + + \table + \header + \li Effect applied + \row + \li \image RadialGradient.png + \endtable + + \note This effect is available when running with OpenGL. + + \section1 Example + + The following example shows how to apply the effect. + \snippet RadialGradient-example.qml example + +*/ +Item { + id: rootItem + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + + Every time the source or effect properties are changed, the pixels in + the cache must be updated. Memory consumption is increased, because an + extra buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + */ + property bool cached: false + + /*! + \qmlproperty real RadialGradient::horizontalOffset + \qmlproperty real RadialGradient::verticalOffset + + The horizontalOffset and verticalOffset properties define the offset in + pixels for the center point of the gradient compared to the item center. + + The values range from -inf to inf. By default, these properties are set + to \c 0. + + \table + \header + \li Output examples with different horizontalOffset values + \li + \li + \row + \li \image RadialGradient_horizontalOffset1.png + \li \image RadialGradient_horizontalOffset2.png + \li \image RadialGradient_horizontalOffset3.png + \row + \li \b { horizontalOffset: -150 } + \li \b { horizontalOffset: 0 } + \li \b { horizontalOffset: 150 } + \row + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \row + \li \l horizontalRadius: 300 + \li \l horizontalRadius: 300 + \li \l horizontalRadius: 300 + \row + \li \l verticalRadius: 300 + \li \l verticalRadius: 300 + \li \l verticalRadius: 300 + \row + \li \l angle: 0 + \li \l angle: 0 + \li \l angle: 0 + \endtable + + */ + property real horizontalOffset: 0.0 + property real verticalOffset: 0.0 + + /*! + \qmlproperty real RadialGradient::horizontalRadius + \qmlproperty real RadialGradient::verticalRadius + + The horizontalRadius and verticalRadius properties define the shape and + size of the radial gradient. If the radiuses are equal, the shape of the + gradient is a circle. If the horizontal and vertical radiuses differ, + the shape is elliptical. The radiuses are given in pixels. + + The value ranges from -inf to inf. By default, horizontalRadius is bound + to width and verticalRadius is bound to height. + + \table + \header + \li Output examples with different horizontalRadius values + \li + \li + \row + \li \image RadialGradient_horizontalRadius1.png + \li \image RadialGradient_horizontalRadius2.png + \row + \li \b { horizontalRadius: 300 } + \li \b { horizontalRadius: 100 } + \row + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \row + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \row + \li \l verticalRadius: 300 + \li \l verticalRadius: 300 + \row + \li \l angle: 0 + \li \l angle: 0 + \row + \li \l gradient: QQuickGradient(0xa05fb10) + \li \l gradient: QQuickGradient(0xa05fb10) + \endtable + + */ + property real horizontalRadius: width + property real verticalRadius: height + + /*! + This property defines the rotation of the gradient around its center + point. The rotation is only visible when the + \l{RadialGradient::horizontalRadius}{horizontalRadius} and + \l{RadialGradient::verticalRadius}{verticalRadius} properties are not + equal. The angle is given in degrees and the default value is \c 0. + + \table + \header + \li Output examples with different angle values + \li + \li + \row + \li \image RadialGradient_angle1.png + \li \image RadialGradient_angle2.png + \li \image RadialGradient_angle3.png + \row + \li \b { angle: 0 } + \li \b { angle: 45 } + \li \b { angle: 90 } + \row + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \row + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \row + \li \l horizontalRadius: 100 + \li \l horizontalRadius: 100 + \li \l horizontalRadius: 100 + \row + \li \l verticalRadius: 300 + \li \l verticalRadius: 300 + \li \l verticalRadius: 300 + \endtable + */ + property real angle: 0.0 + + /*! + This property defines the item that is going to be filled with gradient. + Source item gets rendered into an intermediate pixel buffer and the + alpha values from the result are used to determine the gradient's pixels + visibility in the display. The default value for source is undefined and + in that case whole effect area is filled with gradient. + + \table + \header + \li Output examples with different source values + \li + \li + \row + \li \image RadialGradient_maskSource1.png + \li \image RadialGradient_maskSource2.png + \row + \li \b { source: undefined } + \li \b { source: Image { source: images/butterfly.png } } + \row + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \row + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \row + \li \l horizontalRadius: 300 + \li \l horizontalRadius: 300 + \row + \li \l verticalRadius: 300 + \li \l verticalRadius: 300 + \row + \li \l angle: 0 + \li \l angle: 0 + \endtable + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property variant source + + /*! + A gradient is defined by two or more colors, which are blended + seamlessly. The colors are specified as a set of GradientStop child + items, each of which defines a position on the gradient from 0.0 to 1.0 + and a color. The position of each GradientStop is defined by setting the + position property. The color is defined by setting the color property. + + \table + \header + \li Output examples with different gradient values + \li + \li + \row + \li \image RadialGradient_gradient1.png + \li \image RadialGradient_gradient2.png + \li \image RadialGradient_gradient3.png + \row + \li \b {gradient:} \code + Gradient { + GradientStop { + position: 0.000 + color: Qt.rgba(1, 0, 0, 1) + } + GradientStop { + position: 0.167 + color: Qt.rgba(1, 1, 0, 1) + } + GradientStop { + position: 0.333 + color: Qt.rgba(0, 1, 0, 1) + } + GradientStop { + position: 0.500 + color: Qt.rgba(0, 1, 1, 1) + } + GradientStop { + position: 0.667 + color: Qt.rgba(0, 0, 1, 1) + } + GradientStop { + position: 0.833 + color: Qt.rgba(1, 0, 1, 1) + } + GradientStop { + position: 1.000 + color: Qt.rgba(1, 0, 0, 1) + } + } + \endcode + \li \b {gradient:} \code + Gradient { + GradientStop { + position: 0.0 + color: "#F0F0F0" + } + GradientStop { + position: 0.5 + color: "#000000" + } + GradientStop { + position: 1.0 + color: "#F0F0F0" + } + } + \endcode + \li \b {gradient:} + \code + Gradient { + GradientStop { + position: 0.0 + color: "#00000000" + } + GradientStop { + position: 1.0 + color: "#FF000000" + } + } + \endcode + \row + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \row + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \row + \li \l horizontalRadius: 300 + \li \l horizontalRadius: 300 + \li \l horizontalRadius: 300 + \row + \li \l verticalRadius: 300 + \li \l verticalRadius: 300 + \li \l verticalRadius: 300 + \row + \li \l angle: 0 + \li \l angle: 0 + \li \l angle: 0 + \endtable + */ + property Gradient gradient: Gradient { + GradientStop { position: 0.0; color: "white" } + GradientStop { position: 1.0; color: "black" } + } + + SourceProxy { + id: maskSourceProxy + input: rootItem.source + } + + ShaderEffectSource { + id: gradientSource + sourceItem: Rectangle { + width: 16 + height: 256 + gradient: rootItem.gradient + smooth: true + } + smooth: true + hideSource: true + visible: false + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: parent + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + ShaderEffect { + id: shaderItem + property variant gradientImage: gradientSource + property variant maskSource: maskSourceProxy.output + property variant center: Qt.point(0.5 + rootItem.horizontalOffset / width, 0.5 + rootItem.verticalOffset / height) + property real horizontalRatio: rootItem.horizontalRadius > 0 ? width / (2 * rootItem.horizontalRadius) : width * 16384 + property real verticalRatio: rootItem.verticalRadius > 0 ? height / (2 * rootItem.verticalRadius) : height * 16384 + property real angle: -rootItem.angle / 360 * 2 * Math.PI + property variant matrixData: Qt.point(Math.sin(angle), Math.cos(angle)) + + anchors.fill: parent + + vertexShader: "qrc:/qt-project.org/imports/QtGraphicalEffects/shaders/radialgradient.vert" + + fragmentShader: maskSource == undefined ? noMaskShader : maskShader + + onFragmentShaderChanged: horizontalRatioChanged() + + property string maskShader: "qrc:/qt-project.org/imports/QtGraphicalEffects/shaders/radialgradient_mask.frag" + property string noMaskShader: "qrc:/qt-project.org/imports/QtGraphicalEffects/shaders/radialgradient_nomask.frag" + } +} diff --git a/deployment_test/QtGraphicalEffects/RectangularGlow.qml b/deployment_test/QtGraphicalEffects/RectangularGlow.qml new file mode 100644 index 0000000000000000000000000000000000000000..62862e306bd400ff89ef4cd648514a9c156baafd --- /dev/null +++ b/deployment_test/QtGraphicalEffects/RectangularGlow.qml @@ -0,0 +1,269 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtGraphicalEffects.private 1.12 + +/*! + \qmltype RectangularGlow + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-glow + \brief Generates a blurred and colorized rectangle, which gives + the impression that the source is glowing. + + This effect is intended to have good performance. The shape of the glow is + limited to a rectangle with a custom corner radius. For situations where + custom shapes are required, consider \l {QtGraphicalEffects::Glow} {Glow} + effect. + + \table + \header + \li Effect applied + \row + \li \image RectangularGlow_applied.png + \endtable + + \note This effect is available when running with OpenGL. + + \section1 Example + + The following example shows how to apply the effect. + \snippet RectangularGlow-example.qml example +*/ +Item { + id: rootItem + + /*! + This property defines how many pixels outside the item area are reached + by the glow. + + The value ranges from 0.0 (no glow) to inf (infinite glow). By default, + the property is set to \c 0.0. + + \table + \header + \li Output examples with different glowRadius values + \li + \li + \row + \li \image RectangularGlow_glowRadius1.png + \li \image RectangularGlow_glowRadius2.png + \li \image RectangularGlow_glowRadius3.png + \row + \li \b { glowRadius: 10 } + \li \b { glowRadius: 20 } + \li \b { glowRadius: 40 } + \row + \li \l spread: 0 + \li \l spread: 0 + \li \l spread: 0 + \row + \li \l color: #ffffff + \li \l color: #ffffff + \li \l color: #ffffff + \row + \li \l cornerRadius: 25 + \li \l cornerRadius: 25 + \li \l cornerRadius: 25 + \endtable + + */ + property real glowRadius: 0.0 + + /*! + This property defines how large part of the glow color is strengthened + near the source edges. + + The value ranges from 0.0 (no strength increase) to 1.0 (maximum + strength increase). By default, the property is set to \c 0.0. + + \table + \header + \li Output examples with different spread values + \li + \li + \row + \li \image RectangularGlow_spread1.png + \li \image RectangularGlow_spread2.png + \li \image RectangularGlow_spread3.png + \row + \li \b { spread: 0.0 } + \li \b { spread: 0.5 } + \li \b { spread: 1.0 } + \row + \li \l glowRadius: 20 + \li \l glowRadius: 20 + \li \l glowRadius: 20 + \row + \li \l color: #ffffff + \li \l color: #ffffff + \li \l color: #ffffff + \row + \li \l cornerRadius: 25 + \li \l cornerRadius: 25 + \li \l cornerRadius: 25 + \endtable + */ + property real spread: 0.0 + + /*! + This property defines the RGBA color value which is used for the glow. + + By default, the property is set to \c "white". + + \table + \header + \li Output examples with different color values + \li + \li + \row + \li \image RectangularGlow_color1.png + \li \image RectangularGlow_color2.png + \li \image RectangularGlow_color3.png + \row + \li \b { color: #ffffff } + \li \b { color: #55ff55 } + \li \b { color: #5555ff } + \row + \li \l glowRadius: 20 + \li \l glowRadius: 20 + \li \l glowRadius: 20 + \row + \li \l spread: 0 + \li \l spread: 0 + \li \l spread: 0 + \row + \li \l cornerRadius: 25 + \li \l cornerRadius: 25 + \li \l cornerRadius: 25 + \endtable + */ + property color color: "white" + + /*! + This property defines the corner radius that is used to draw a glow with + rounded corners. + + The value ranges from 0.0 to half of the effective width or height of + the glow, whichever is smaller. This can be calculated with: \c{ + min(width, height) / 2.0 + glowRadius} + + By default, the property is bound to glowRadius property. The glow + behaves as if the rectangle was blurred when adjusting the glowRadius + property. + + \table + \header + \li Output examples with different cornerRadius values + \li + \li + \row + \li \image RectangularGlow_cornerRadius1.png + \li \image RectangularGlow_cornerRadius2.png + \li \image RectangularGlow_cornerRadius3.png + \row + \li \b { cornerRadius: 0 } + \li \b { cornerRadius: 25 } + \li \b { cornerRadius: 50 } + \row + \li \l glowRadius: 20 + \li \l glowRadius: 20 + \li \l glowRadius: 20 + \row + \li \l spread: 0 + \li \l spread: 0 + \li \l spread: 0 + \row + \li \l color: #ffffff + \li \l color: #ffffff + \li \l color: #ffffff + \endtable + */ + property real cornerRadius: glowRadius + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + + Every time the source or effect properties are changed, the pixels in + the cache must be updated. Memory consumption is increased, because an + extra buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + */ + property bool cached: false + + ShaderEffectSource { + id: cacheItem + anchors.fill: shaderItem + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + ShaderEffect { + id: shaderItem + + x: (parent.width - width) / 2.0 + y: (parent.height - height) / 2.0 + width: parent.width + rootItem.glowRadius * 2 + cornerRadius * 2 + height: parent.height + rootItem.glowRadius * 2 + cornerRadius * 2 + + function clampedCornerRadius() { + var maxCornerRadius = Math.min(rootItem.width, rootItem.height) / 2 + glowRadius; + return Math.max(0, Math.min(rootItem.cornerRadius, maxCornerRadius)) + } + + property color color: rootItem.color + property real inverseSpread: 1.0 - rootItem.spread + property real relativeSizeX: ((inverseSpread * inverseSpread) * rootItem.glowRadius + cornerRadius * 2.0) / width + property real relativeSizeY: relativeSizeX * (width / height) + property real spread: rootItem.spread / 2.0 + property real cornerRadius: clampedCornerRadius() + + fragmentShader: "qrc:/qt-project.org/imports/QtGraphicalEffects/shaders/rectangularglow.frag" + } +} diff --git a/deployment_test/QtGraphicalEffects/RecursiveBlur.qml b/deployment_test/QtGraphicalEffects/RecursiveBlur.qml new file mode 100644 index 0000000000000000000000000000000000000000..7d9380230d17c61628b13ad5a36c061160c54828 --- /dev/null +++ b/deployment_test/QtGraphicalEffects/RecursiveBlur.qml @@ -0,0 +1,329 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtGraphicalEffects.private 1.12 + +/*! + \qmltype RecursiveBlur + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-blur + \brief Blurs repeatedly, providing a strong blur effect. + + The RecursiveBlur effect softens the image by blurring it with an algorithm + that uses a recursive feedback loop to blur the source multiple times. The + effect may give more blurry results than + \l{QtGraphicalEffects::GaussianBlur}{GaussianBlur} or + \l{QtGraphicalEffects::FastBlur}{FastBlur}, but the result is produced + asynchronously and takes more time. + + \table + \header + \li Source + \li Effect applied + \row + \li \image Original_bug.png + \li \image RecursiveBlur_bug.png + \endtable + + \note This effect is available when running with OpenGL. + + \section1 Example + + The following example shows how to apply the effect. + \snippet RecursiveBlur-example.qml example + +*/ +Item { + id: rootItem + + /*! + This property defines the source item that is going to be blurred. + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property variant source + + /*! + This property defines the distance of neighboring pixels which influence + the blurring of individual pixels. A larger radius provides better + quality, but is slower to render. + + \b Note: The radius value in this effect is not intended to be changed + or animated frequently. The correct way to use it is to set the correct + value and keep it unchanged for the whole duration of the iterative blur + sequence. + + The value ranges from (no blur) to 16.0 (maximum blur step). By default, + the property is set to \c 0.0 (no blur). + + \table + \header + \li Output examples with different radius values + \li + \li + \row + \li \image RecursiveBlur_radius1.png + \li \image RecursiveBlur_radius2.png + \li \image RecursiveBlur_radius3.png + \row + \li \b { radius: 2.5 } + \li \b { radius: 4.5 } + \li \b { radius: 7.5 } + \row + \li \l loops: 20 + \li \l loops: 20 + \li \l loops: 20 + \endtable + + */ + property real radius: 0.0 + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + + Every time the source or effect properties are changed, the pixels in + the cache must be updated. Memory consumption is increased, because an + extra buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + + */ + property bool cached: false + + /*! + This property defines the blur behavior near the edges of the item, + where the pixel blurring is affected by the pixels outside the source + edges. + + If the property is set to \c true, the pixels outside the source are + interpreted to be transparent, which is similar to OpenGL + clamp-to-border extension. The blur is expanded slightly outside the + effect item area. + + If the property is set to \c false, the pixels outside the source are + interpreted to contain the same color as the pixels at the edge of the + item, which is similar to OpenGL clamp-to-edge behavior. The blur does + not expand outside the effect item area. + + By default, the property is set to \c false. + + \table + \header + \li Output examples with different transparentBorder values + \li + \li + \row + \li \image RecursiveBlur_transparentBorder1.png + \li \image RecursiveBlur_transparentBorder2.png + \row + \li \b { transparentBorder: false } + \li \b { transparentBorder: true } + \row + \li \l loops: 20 + \li \l loops: 20 + \row + \li \l radius: 7.5 + \li \l radius: 7.5 + \endtable + */ + property bool transparentBorder: false + + /*! + This property defines the amount of blur iterations that are going to be + performed for the source. When the property changes, the iterative + blurring process starts. If the value is decreased or if the value + changes from zero to non-zero, a snapshot is taken from the source. The + snapshot is used as a starting point for the process. + + The iteration loop tries to run as fast as possible. The speed might be + limited by the VSYNC or the time needed for one blur step, or both. + Sometimes it may be desirable to perform the blurring with a slower + pace. In that case, it may be convenient to control the property with + Animation which increases the value. + + The value ranges from 0 to inf. By default, the property is set to \c 0. + + \table + \header + \li Output examples with different loops values + \li + \li + \row + \li \image RecursiveBlur_loops1.png + \li \image RecursiveBlur_loops2.png + \li \image RecursiveBlur_loops3.png + \row + \li \b { loops: 4 } + \li \b { loops: 20 } + \li \b { loops: 70 } + \row + \li \l radius: 7.5 + \li \l radius: 7.5 + \li \l radius: 7.5 + \endtable + + */ + property int loops: 0 + + /*! + This property holds the progress of asynchronous source blurring + process, from 0.0 (nothing blurred) to 1.0 (finished). + */ + property real progress: loops > 0.0 ? Math.min(1.0, recursionTimer.counter / loops) : 0.0 + + onLoopsChanged: recursiveSource.scheduleUpdate() + onSourceChanged: recursionTimer.reset() + onRadiusChanged: recursionTimer.reset() + onTransparentBorderChanged: recursionTimer.reset() + + SourceProxy { + id: sourceProxy + input: rootItem.source + sourceRect: rootItem.transparentBorder ? Qt.rect(-1, -1, parent.width + 2, parent.height + 2) : Qt.rect(0, 0, 0, 0) + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: verticalBlur + smooth: true + visible: rootItem.cached + hideSource: visible + live: true + sourceItem: inputItem.visible ? inputItem : verticalBlur + } + + Item { + id: recursionTimer + property int counter: 0 + + function reset() { + counter = 0 + recursiveSource.scheduleUpdate() + } + + function nextFrame() { + if (loops < counter) + recursionTimer.counter = 0 + + if (counter > 0) + recursiveSource.sourceItem = verticalBlur + else + recursiveSource.sourceItem = inputItem + + if (counter < loops) { + recursiveSource.scheduleUpdate() + counter++ + } + } + } + + ShaderEffect { + id: inputItem + property variant source: sourceProxy.output + property real expandX: rootItem.transparentBorder ? (horizontalBlur.maximumRadius) / horizontalBlur.width : 0.0 + property real expandY: rootItem.transparentBorder ? (horizontalBlur.maximumRadius) / horizontalBlur.height : 0.0 + + anchors.fill: verticalBlur + visible: !verticalBlur.visible + + vertexShader: "qrc:/qt-project.org/imports/QtGraphicalEffects/shaders/recursiveblur.vert" + + fragmentShader: "qrc:/qt-project.org/imports/QtGraphicalEffects/shaders/recursiveblur.frag" + } + + ShaderEffectSource { + id: recursiveSource + visible: false + smooth: true + hideSource: false + live: false + sourceItem: inputItem + recursive: true + onSourceItemChanged: scheduleUpdate() + onScheduledUpdateCompleted: recursionTimer.nextFrame() + } + + GaussianDirectionalBlur { + id: verticalBlur + x: rootItem.transparentBorder ? -horizontalBlur.maximumRadius - 1 : 0 + y: rootItem.transparentBorder ? -horizontalBlur.maximumRadius - 1 : 0 + width: horizontalBlur.width + 2 + height: horizontalBlur.height + 2 + + horizontalStep: 0.0 + verticalStep: 1.0 / parent.height + + source: ShaderEffectSource { + sourceItem: horizontalBlur + hideSource: true + visible: false + smooth: true + } + + deviation: (radius + 1) / 2.3333 + radius: rootItem.radius + maximumRadius: Math.ceil(rootItem.radius) + transparentBorder: false + visible: loops > 0 + } + + GaussianDirectionalBlur { + id: horizontalBlur + width: rootItem.transparentBorder ? parent.width + 2 * maximumRadius + 2 : parent.width + height: rootItem.transparentBorder ? parent.height + 2 * maximumRadius + 2 : parent.height + + horizontalStep: 1.0 / parent.width + verticalStep: 0.0 + + source: recursiveSource + deviation: (radius + 1) / 2.3333 + radius: rootItem.radius + maximumRadius: Math.ceil(rootItem.radius) + transparentBorder: false + visible: false + } +} diff --git a/deployment_test/QtGraphicalEffects/ThresholdMask.qml b/deployment_test/QtGraphicalEffects/ThresholdMask.qml new file mode 100644 index 0000000000000000000000000000000000000000..204d8c937ee2ad7dc8a15fda51eeb228eea8acfd --- /dev/null +++ b/deployment_test/QtGraphicalEffects/ThresholdMask.qml @@ -0,0 +1,215 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtGraphicalEffects.private 1.12 + +/*! + \qmltype ThresholdMask + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-mask + \brief Masks the source item with another item and applies a threshold + value. + + The masking behavior can be controlled with the \l threshold value for the + mask pixels. + + \table + \header + \li Source + \li MaskSource + \li Effect applied + \row + \li \image Original_bug.png + \li \image ThresholdMask_mask.png + \li \image ThresholdMask_bug.png + \endtable + + \note This effect is available when running with OpenGL. + + \section1 Example + + The following example shows how to apply the effect. + \snippet ThresholdMask-example.qml example +*/ +Item { + id: rootItem + + /*! + This property defines the source item that is going to be masked. + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property variant source + + /*! + This property defines the item that is going to be used as the mask. + Mask item gets rendered into an intermediate pixel buffer and the alpha + values from the result are used to determine the source item's pixels + visibility in the display. + + \table + \header + \li Original + \li Mask + \li Effect applied + \row + \li \image Original_bug.png + \li \image ThresholdMask_mask.png + \li \image ThresholdMask_bug.png + \endtable + + \note It is not supported to let the effect include itself, for + instance by setting maskSource to the effect's parent. + */ + property variant maskSource + + /*! + This property defines a threshold value for the mask pixels. The mask + pixels that have an alpha value below this property are used to + completely mask away the corresponding pixels from the source item. The + mask pixels that have a higher alpha value are used to alphablend the + source item to the display. + + The value ranges from 0.0 (alpha value 0) to 1.0 (alpha value 255). By + default, the property is set to \c 0.0. + + \table + \header + \li Output examples with different threshold values + \li + \li + \row + \li \image ThresholdMask_threshold1.png + \li \image ThresholdMask_threshold2.png + \li \image ThresholdMask_threshold3.png + \row + \li \b { threshold: 0.0 } + \li \b { threshold: 0.5 } + \li \b { threshold: 0.7 } + \row + \li \l spread: 0.2 + \li \l spread: 0.2 + \li \l spread: 0.2 + \endtable + */ + property real threshold: 0.0 + + /*! + This property defines the smoothness of the mask edges near the + \l{ThresholdMask::threshold}{threshold} alpha value. Setting spread to + 0.0 uses mask normally with the specified threshold. Setting higher + spread values softens the transition from the transparent mask pixels + towards opaque mask pixels by adding interpolated values between them. + + The value ranges from 0.0 (sharp mask edge) to 1.0 (smooth mask edge). + By default, the property is set to \c 0.0. + + \table + \header + \li Output examples with different spread values + \li + \li + \row + \li \image ThresholdMask_spread1.png + \li \image ThresholdMask_spread2.png + \li \image ThresholdMask_spread3.png + \row + \li \b { spread: 0.0 } + \li \b { spread: 0.2 } + \li \b { spread: 0.8 } + \row + \li \l threshold: 0.4 + \li \l threshold: 0.4 + \li \l threshold: 0.4 + \endtable + + */ + property real spread: 0.0 + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + + Every time the source or effect properties are changed, the pixels in + the cache must be updated. Memory consumption is increased, because an + extra buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + */ + property bool cached: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + } + + SourceProxy { + id: maskSourceProxy + input: rootItem.maskSource + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: parent + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + ShaderEffect { + id: shaderItem + property variant source: sourceProxy.output + property variant maskSource: maskSourceProxy.output + property real threshold: rootItem.threshold + property real spread: rootItem.spread + + anchors.fill: parent + + fragmentShader: "qrc:/qt-project.org/imports/QtGraphicalEffects/shaders/thresholdmask.frag" + } +} diff --git a/deployment_test/QtGraphicalEffects/ZoomBlur.qml b/deployment_test/QtGraphicalEffects/ZoomBlur.qml new file mode 100644 index 0000000000000000000000000000000000000000..66ba71024823db883545ede8dafa01abd5facfb2 --- /dev/null +++ b/deployment_test/QtGraphicalEffects/ZoomBlur.qml @@ -0,0 +1,306 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtGraphicalEffects.private 1.12 + +/*! + \qmltype ZoomBlur + \inqmlmodule QtGraphicalEffects + \since QtGraphicalEffects 1.0 + \inherits QtQuick2::Item + \ingroup qtgraphicaleffects-motion-blur + \brief Applies directional blur effect towards source items center point. + + Effect creates perceived impression that the source item appears to be + moving towards the center point in Z-direction or that the camera appears + to be zooming rapidly. Other available motion blur effects are + \l{QtGraphicalEffects::DirectionalBlur}{DirectionalBlur} + and \l{QtGraphicalEffects::RadialBlur}{RadialBlur}. + + \table + \header + \li Source + \li Effect applied + \row + \li \image Original_bug.png + \li \image ZoomBlur_bug.png + \endtable + + \note This effect is available when running with OpenGL. + + \section1 Example + + The following example shows how to apply the effect. + \snippet ZoomBlur-example.qml example + +*/ +Item { + id: rootItem + + /*! + This property defines the source item that is going to be blurred. + + \note It is not supported to let the effect include itself, for + instance by setting source to the effect's parent. + */ + property variant source + + /*! + This property defines the maximum perceived amount of movement for each + pixel. The amount is smaller near the center and reaches the specified + value at the edges. + + The quality of the blur depends on \l{ZoomBlur::samples}{samples} + property. If length value is large, more samples are needed to keep the + visual quality at high level. + + The value ranges from 0.0 to inf. By default the property is set to \c + 0.0 (no blur). + + \table + \header + \li Output examples with different length values + \li + \li + \row + \li \image ZoomBlur_length1.png + \li \image ZoomBlur_length2.png + \li \image ZoomBlur_length3.png + \row + \li \b { length: 0.0 } + \li \b { length: 32.0 } + \li \b { length: 48.0 } + \row + \li \l samples: 24 + \li \l samples: 24 + \li \l samples: 24 + \row + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \li \l horizontalOffset: 0 + \row + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \endtable + + */ + property real length: 0.0 + + /*! + This property defines how many samples are taken per pixel when blur + calculation is done. Larger value produces better quality, but is slower + to render. + + This property is not intended to be animated. Changing this property may + cause the underlying OpenGL shaders to be recompiled. + + Allowed values are between 0 and inf (practical maximum depends on GPU). + By default the property is set to \c 0 (no samples). + + */ + property int samples: 0 + + /*! + \qmlproperty real QtGraphicalEffects::ZoomBlur::horizontalOffset + \qmlproperty real QtGraphicalEffects::ZoomBlur::verticalOffset + + These properties define an offset in pixels for the blur direction + center point. + + The values range from -inf to inf. By default these properties are set + to \c 0. + + \table + \header + \li Output examples with different horizontalOffset values + \li + \li + \row + \li \image ZoomBlur_horizontalOffset1.png + \li \image ZoomBlur_horizontalOffset2.png + \li \image ZoomBlur_horizontalOffset3.png + \row + \li \b { horizontalOffset: 100.0 } + \li \b { horizontalOffset: 0.0 } + \li \b { horizontalOffset: -100.0 } + \row + \li \l samples: 24 + \li \l samples: 24 + \li \l samples: 24 + \row + \li \l length: 32 + \li \l length: 32 + \li \l length: 32 + \row + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \li \l verticalOffset: 0 + \endtable + */ + property real horizontalOffset: 0.0 + property real verticalOffset: 0.0 + + /*! + This property defines the blur behavior near the edges of the item, + where the pixel blurring is affected by the pixels outside the source + edges. + + If the property is set to \c true, the pixels outside the source are + interpreted to be transparent, which is similar to OpenGL + clamp-to-border extension. The blur is expanded slightly outside the + effect item area. + + If the property is set to \c false, the pixels outside the source are + interpreted to contain the same color as the pixels at the edge of the + item, which is similar to OpenGL clamp-to-edge behavior. The blur does + not expand outside the effect item area. + + By default, the property is set to \c false. + + */ + property bool transparentBorder: false + + /*! + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + + Every time the source or effect properties are changed, the pixels in + the cache must be updated. Memory consumption is increased, because an + extra buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + */ + property bool cached: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + sourceRect: rootItem.transparentBorder ? Qt.rect(-1, -1, parent.width + 2.0, parent.height + 2.0) : Qt.rect(0, 0, 0, 0) + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: shaderItem + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + ShaderEffect { + id: shaderItem + property variant source: sourceProxy.output + property variant center: Qt.point(0.5 + rootItem.horizontalOffset / width, 0.5 + rootItem.verticalOffset / height) + property real len: rootItem.length + property bool transparentBorder: rootItem.transparentBorder + property real samples: rootItem.samples + property real weight: 1.0 / Math.max(1.0, rootItem.samples) + property variant expandPixels: transparentBorder ? Qt.size(rootItem.samples, rootItem.samples) : Qt.size(0,0) + property variant expand: transparentBorder ? Qt.size(expandPixels.width / width, expandPixels.height / height) : Qt.size(0,0) + property variant delta: Qt.size(1.0 / rootItem.width, 1.0 / rootItem.height) + + x: transparentBorder ? -expandPixels.width - 1 : 0 + y: transparentBorder ? -expandPixels.height - 1 : 0 + width: transparentBorder ? parent.width + 2.0 * expandPixels.width + 2 : parent.width + height: transparentBorder ? parent.height + 2.0 * expandPixels.height + 2 : parent.height + + property string fragmentShaderSkeleton: " + varying highp vec2 qt_TexCoord0; + uniform highp float qt_Opacity; + uniform lowp sampler2D source; + uniform highp float len; + uniform highp float weight; + uniform highp float samples; + uniform highp vec2 center; + uniform highp vec2 expand; + uniform highp vec2 delta; + + void main(void) { + mediump vec2 texCoord = qt_TexCoord0; + mediump vec2 centerCoord = center; + + PLACEHOLDER_EXPAND_STEPS + + highp vec2 dir = vec2(centerCoord.x - texCoord.s, centerCoord.y - texCoord.t); + dir /= max(1.0, length(dir) * 2.0); + highp vec2 shift = delta * len * dir * 2.0 / max(1.0, samples - 1.0); + gl_FragColor = vec4(0.0); + + PLACEHOLDER_UNROLLED_LOOP + + gl_FragColor *= weight * qt_Opacity; + } + " + + function buildFragmentShader() { + var shader = "" + if (GraphicsInfo.profile == GraphicsInfo.OpenGLCoreProfile) + shader += "#version 150 core\n#define varying in\n#define gl_FragColor fragColor\n#define texture2D texture\nout vec4 fragColor;\n" + shader += fragmentShaderSkeleton + var expandSteps = "" + + if (transparentBorder) { + expandSteps += "centerCoord = (centerCoord - expand) / (1.0 - 2.0 * expand);" + expandSteps += "texCoord = (texCoord - expand) / (1.0 - 2.0 * expand);" + } + + var unrolledLoop = "gl_FragColor += texture2D(source, texCoord);\n" + + if (rootItem.samples > 1) { + unrolledLoop = "" + for (var i = 0; i < rootItem.samples; i++) + unrolledLoop += "gl_FragColor += texture2D(source, texCoord); texCoord += shift;\n" + } + + shader = shader.replace("PLACEHOLDER_EXPAND_STEPS", expandSteps) + fragmentShader = shader.replace("PLACEHOLDER_UNROLLED_LOOP", unrolledLoop) + } + + onFragmentShaderChanged: sourceChanged() + onSamplesChanged: buildFragmentShader() + onTransparentBorderChanged: buildFragmentShader() + Component.onCompleted: buildFragmentShader() + } +} diff --git a/deployment_test/QtGraphicalEffects/plugins.qmltypes b/deployment_test/QtGraphicalEffects/plugins.qmltypes new file mode 100644 index 0000000000000000000000000000000000000000..f80584353a90305a1fa6d957185ebe460aab15e2 --- /dev/null +++ b/deployment_test/QtGraphicalEffects/plugins.qmltypes @@ -0,0 +1,11 @@ +import QtQuick.tooling 1.2 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. +// +// This file was auto-generated by: +// 'qmlplugindump -nonrelocatable QtGraphicalEffects 1.15' + +Module { + dependencies: ["QtQuick 2.12", "QtQuick.Window 2.12"] +} diff --git a/deployment_test/QtGraphicalEffects/private/DropShadowBase.qml b/deployment_test/QtGraphicalEffects/private/DropShadowBase.qml new file mode 100644 index 0000000000000000000000000000000000000000..e9927ea4d7f6465603af459df4f7c18b49cd1078 --- /dev/null +++ b/deployment_test/QtGraphicalEffects/private/DropShadowBase.qml @@ -0,0 +1,99 @@ +/**************************************************************************** +** +** Copyright (C) 2017 Jolla Ltd, author: <gunnar.sletta@jollamobile.com> +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Window 2.12 +import QtGraphicalEffects.private 1.12 +import QtGraphicalEffects 1.12 + +Item { + id: root + + property variant source + property real radius: Math.floor(samples / 2) + property int samples: 9 + property color color: "black" + property real horizontalOffset: 0 + property real verticalOffset: 0 + property real spread: 0.0 + property bool cached: false + property bool transparentBorder: true + + GaussianBlur { + id: blur + width: parent.width + height: parent.height + x: Math.round(horizontalOffset) + y: Math.round(verticalOffset) + source: root.source + radius: root.radius * Screen.devicePixelRatio + samples: root.samples * Screen.devicePixelRatio + _thickness: root.spread + transparentBorder: root.transparentBorder + + + _color: root.color; + _alphaOnly: true + // ignoreDevicePixelRatio: root.ignoreDevicePixelRatio + + ShaderEffect { + x: blur._outputRect.x - parent.x + y: blur._outputRect.y - parent.y + width: transparentBorder ? blur._outputRect.width : blur.width + height: transparentBorder ? blur._outputRect.height : blur.height + property variant source: blur._output; + } + + } + + ShaderEffectSource { + id: cacheItem + x: -blur._kernelRadius + horizontalOffset + y: -blur._kernelRadius + verticalOffset + width: blur.width + 2 * blur._kernelRadius + height: blur.height + 2 * blur._kernelRadius + visible: root.cached + smooth: true + sourceRect: Qt.rect(-blur._kernelRadius, -blur._kernelRadius, width, height); + sourceItem: blur + hideSource: visible + } + + +} diff --git a/deployment_test/QtGraphicalEffects/private/DropShadowBase.qmlc b/deployment_test/QtGraphicalEffects/private/DropShadowBase.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..6d90ee60607d80333236e4d392fc0a1ee5ab3126 Binary files /dev/null and b/deployment_test/QtGraphicalEffects/private/DropShadowBase.qmlc differ diff --git a/deployment_test/QtGraphicalEffects/private/FastGlow.qml b/deployment_test/QtGraphicalEffects/private/FastGlow.qml new file mode 100644 index 0000000000000000000000000000000000000000..5c737f1f5f4aef0045316bf9fed00416f0fc3237 --- /dev/null +++ b/deployment_test/QtGraphicalEffects/private/FastGlow.qml @@ -0,0 +1,331 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtGraphicalEffects.private 1.12 + +Item { + id: rootItem + property variant source + property real spread: 0.0 + property real blur: 0.0 + property color color: "white" + property bool transparentBorder: false + property bool cached: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: shaderItem + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + property string __internalBlurVertexShader: "qrc:/qt-project.org/imports/QtGraphicalEffects/shaders/fastblur_internal.vert" + + property string __internalBlurFragmentShader: "qrc:/qt-project.org/imports/QtGraphicalEffects/shaders/fastblur_internal.frag" + + ShaderEffect { + id: level0 + property variant source: sourceProxy.output + anchors.fill: parent + visible: false + smooth: true + } + + ShaderEffectSource { + id: level1 + width: Math.ceil(shaderItem.width / 32) * 32 + height: Math.ceil(shaderItem.height / 32) * 32 + sourceItem: level0 + hideSource: rootItem.visible + sourceRect: transparentBorder ? Qt.rect(-64, -64, shaderItem.width, shaderItem.height) : Qt.rect(0,0,0,0) + smooth: true + visible: false + } + + ShaderEffect { + id: effect1 + property variant source: level1 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level2 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level2 + width: level1.width / 2 + height: level1.height / 2 + sourceItem: effect1 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect2 + property variant source: level2 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level3 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level3 + width: level2.width / 2 + height: level2.height / 2 + sourceItem: effect2 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect3 + property variant source: level3 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level4 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level4 + width: level3.width / 2 + height: level3.height / 2 + sourceItem: effect3 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect4 + property variant source: level4 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level5 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level5 + width: level4.width / 2 + height: level4.height / 2 + sourceItem: effect4 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect5 + property variant source: level5 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level6 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level6 + width: level5.width / 2 + height: level5.height / 2 + sourceItem: effect5 + hideSource: rootItem.visible + visible: false + smooth: true + } + + Item { + id: dummysource + width: 1 + height: 1 + visible: false + } + + ShaderEffectSource { + id: dummy + width: 1 + height: 1 + sourceItem: dummysource + visible: false + smooth: false + live: false + } + + ShaderEffect { + id: shaderItem + x: transparentBorder ? -64 : 0 + y: transparentBorder ? -64 : 0 + width: transparentBorder ? parent.width + 128 : parent.width + height: transparentBorder ? parent.height + 128 : parent.height + + property variant source1: level1 + property variant source2: level2 + property variant source3: level3 + property variant source4: level4 + property variant source5: level5 + property variant source6: level6 + property real lod: rootItem.blur + + property real weight1; + property real weight2; + property real weight3; + property real weight4; + property real weight5; + property real weight6; + + property real spread: 1.0 - (rootItem.spread * 0.98) + property alias color: rootItem.color + + function weight(v) { + if (v <= 0.0) + return 1 + if (v >= 0.5) + return 0 + + return 1.0 - v / 0.5 + } + + function calculateWeights() { + + var w1 = weight(Math.abs(lod - 0.100)) + var w2 = weight(Math.abs(lod - 0.300)) + var w3 = weight(Math.abs(lod - 0.500)) + var w4 = weight(Math.abs(lod - 0.700)) + var w5 = weight(Math.abs(lod - 0.900)) + var w6 = weight(Math.abs(lod - 1.100)) + + var sum = w1 + w2 + w3 + w4 + w5 + w6; + weight1 = w1 / sum; + weight2 = w2 / sum; + weight3 = w3 / sum; + weight4 = w4 / sum; + weight5 = w5 / sum; + weight6 = w6 / sum; + + upateSources() + } + + function upateSources() { + var sources = new Array(); + var weights = new Array(); + + if (weight1 > 0) { + sources.push(level1) + weights.push(weight1) + } + + if (weight2 > 0) { + sources.push(level2) + weights.push(weight2) + } + + if (weight3 > 0) { + sources.push(level3) + weights.push(weight3) + } + + if (weight4 > 0) { + sources.push(level4) + weights.push(weight4) + } + + if (weight5 > 0) { + sources.push(level5) + weights.push(weight5) + } + + if (weight6 > 0) { + sources.push(level6) + weights.push(weight6) + } + + for (var j = sources.length; j < 6; j++) { + sources.push(dummy) + weights.push(0.0) + } + + source1 = sources[0] + source2 = sources[1] + source3 = sources[2] + source4 = sources[3] + source5 = sources[4] + source6 = sources[5] + + weight1 = weights[0] + weight2 = weights[1] + weight3 = weights[2] + weight4 = weights[3] + weight5 = weights[4] + weight6 = weights[5] + } + + Component.onCompleted: calculateWeights() + + onLodChanged: calculateWeights() + + fragmentShader: "qrc:/qt-project.org/imports/QtGraphicalEffects/shaders/fastglow.frag" + } +} diff --git a/deployment_test/QtGraphicalEffects/private/FastGlow.qmlc b/deployment_test/QtGraphicalEffects/private/FastGlow.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..e445439a5565576e72b290dbbfbb706b43a38e5c Binary files /dev/null and b/deployment_test/QtGraphicalEffects/private/FastGlow.qmlc differ diff --git a/deployment_test/QtGraphicalEffects/private/FastInnerShadow.qml b/deployment_test/QtGraphicalEffects/private/FastInnerShadow.qml new file mode 100644 index 0000000000000000000000000000000000000000..bd361ca7d248a011bac2f837b41da625c0a63d12 --- /dev/null +++ b/deployment_test/QtGraphicalEffects/private/FastInnerShadow.qml @@ -0,0 +1,335 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtGraphicalEffects.private 1.12 + +Item { + id: rootItem + property variant source + property real blur: 0.0 + property real horizontalOffset: 0 + property real verticalOffset: 0 + property real spread: 0.0 + property color color: "black" + property bool cached: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: shaderItem + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + property string __internalBlurVertexShader: "qrc:/qt-project.org/imports/QtGraphicalEffects/shaders/fastblur_internal.vert" + + property string __internalBlurFragmentShader: "qrc:/qt-project.org/imports/QtGraphicalEffects/shaders/fastblur_internal.frag" + + ShaderEffect { + id: level0 + property variant source: sourceProxy.output + property real horizontalOffset: rootItem.horizontalOffset / rootItem.width + property real verticalOffset: rootItem.verticalOffset / rootItem.width + property color color: rootItem.color + + anchors.fill: parent + visible: false + smooth: true + fragmentShader: "qrc:/qt-project.org/imports/QtGraphicalEffects/shaders/fastinnershadow_level0.frag" + } + + ShaderEffectSource { + id: level1 + width: Math.ceil(shaderItem.width / 32) * 32 + height: Math.ceil(shaderItem.height / 32) * 32 + sourceItem: level0 + hideSource: rootItem.visible + smooth: true + visible: false + } + + ShaderEffect { + id: effect1 + property variant source: level1 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level2 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level2 + width: level1.width / 2 + height: level1.height / 2 + sourceItem: effect1 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect2 + property variant source: level2 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level3 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level3 + width: level2.width / 2 + height: level2.height / 2 + sourceItem: effect2 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect3 + property variant source: level3 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level4 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level4 + width: level3.width / 2 + height: level3.height / 2 + sourceItem: effect3 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect4 + property variant source: level4 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level5 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level5 + width: level4.width / 2 + height: level4.height / 2 + sourceItem: effect4 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect5 + property variant source: level5 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level6 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level6 + width: level5.width / 2 + height: level5.height / 2 + sourceItem: effect5 + hideSource: rootItem.visible + visible: false + smooth: true + } + + Item { + id: dummysource + width: 1 + height: 1 + visible: false + } + + ShaderEffectSource { + id: dummy + width: 1 + height: 1 + sourceItem: dummysource + visible: false + smooth: false + live: false + } + + ShaderEffect { + id: shaderItem + width: parent.width + height: parent.height + + property variant original: sourceProxy.output + property variant source1: level1 + property variant source2: level2 + property variant source3: level3 + property variant source4: level4 + property variant source5: level5 + property variant source6: level6 + property real lod: rootItem.blur + + property real weight1; + property real weight2; + property real weight3; + property real weight4; + property real weight5; + property real weight6; + + property real spread: 1.0 - (rootItem.spread * 0.98) + property color color: rootItem.color + + function weight(v) { + if (v <= 0.0) + return 1 + if (v >= 0.5) + return 0 + + return 1.0 - v / 0.5 + } + + function calculateWeights() { + + var w1 = weight(Math.abs(lod - 0.100)) + var w2 = weight(Math.abs(lod - 0.300)) + var w3 = weight(Math.abs(lod - 0.500)) + var w4 = weight(Math.abs(lod - 0.700)) + var w5 = weight(Math.abs(lod - 0.900)) + var w6 = weight(Math.abs(lod - 1.100)) + + var sum = w1 + w2 + w3 + w4 + w5 + w6; + weight1 = w1 / sum; + weight2 = w2 / sum; + weight3 = w3 / sum; + weight4 = w4 / sum; + weight5 = w5 / sum; + weight6 = w6 / sum; + + upateSources() + } + + function upateSources() { + var sources = new Array(); + var weights = new Array(); + + if (weight1 > 0) { + sources.push(level1) + weights.push(weight1) + } + + if (weight2 > 0) { + sources.push(level2) + weights.push(weight2) + } + + if (weight3 > 0) { + sources.push(level3) + weights.push(weight3) + } + + if (weight4 > 0) { + sources.push(level4) + weights.push(weight4) + } + + if (weight5 > 0) { + sources.push(level5) + weights.push(weight5) + } + + if (weight6 > 0) { + sources.push(level6) + weights.push(weight6) + } + + for (var j = sources.length; j < 6; j++) { + sources.push(dummy) + weights.push(0.0) + } + + source1 = sources[0] + source2 = sources[1] + source3 = sources[2] + source4 = sources[3] + source5 = sources[4] + source6 = sources[5] + + weight1 = weights[0] + weight2 = weights[1] + weight3 = weights[2] + weight4 = weights[3] + weight5 = weights[4] + weight6 = weights[5] + } + + Component.onCompleted: calculateWeights() + + onLodChanged: calculateWeights() + + fragmentShader: "qrc:/qt-project.org/imports/QtGraphicalEffects/shaders/fastinnershadow.frag" + } +} diff --git a/deployment_test/QtGraphicalEffects/private/FastInnerShadow.qmlc b/deployment_test/QtGraphicalEffects/private/FastInnerShadow.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..8f65102a4bdac290273a924085718ae434416752 Binary files /dev/null and b/deployment_test/QtGraphicalEffects/private/FastInnerShadow.qmlc differ diff --git a/deployment_test/QtGraphicalEffects/private/FastMaskedBlur.qml b/deployment_test/QtGraphicalEffects/private/FastMaskedBlur.qml new file mode 100644 index 0000000000000000000000000000000000000000..56800c65c5bd06e4d32052cd3d5432b20602dcff --- /dev/null +++ b/deployment_test/QtGraphicalEffects/private/FastMaskedBlur.qml @@ -0,0 +1,247 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtGraphicalEffects.private 1.12 + +Item { + id: rootItem + property variant source + property variant maskSource + property real blur: 0.0 + property bool transparentBorder: false + property bool cached: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + } + + SourceProxy { + id: maskSourceProxy + input: rootItem.maskSource + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: shaderItem + visible: rootItem.cached + sourceItem: shaderItem + live: true + hideSource: visible + smooth: rootItem.blur > 0 + } + + property string __internalBlurVertexShader: "qrc:/qt-project.org/imports/QtGraphicalEffects/shaders/fastblur_internal.vert" + + property string __internalBlurFragmentShader: "qrc:/qt-project.org/imports/QtGraphicalEffects/shaders/fastblur_internal.frag" + + ShaderEffect { + id: mask0 + property variant source: maskSourceProxy.output + anchors.fill: parent + visible: false + smooth: true + } + + ShaderEffectSource { + id: masklevel1 + width: Math.ceil(shaderItem.width / 32) * 32 + height: Math.ceil(shaderItem.height / 32) * 32 + sourceItem: mask0 + hideSource: rootItem.visible + sourceRect: transparentBorder ? Qt.rect(-64, -64, shaderItem.width, shaderItem.height) : Qt.rect(0, 0, 0, 0) + visible: false + smooth: rootItem.blur > 0 + } + + ShaderEffect { + id: level0 + property variant source: sourceProxy.output + anchors.fill: parent + visible: false + smooth: true + } + + ShaderEffectSource { + id: level1 + width: Math.ceil(shaderItem.width / 32) * 32 + height: Math.ceil(shaderItem.height / 32) * 32 + sourceItem: level0 + hideSource: rootItem.visible + sourceRect: transparentBorder ? Qt.rect(-64, -64, shaderItem.width, shaderItem.height) : Qt.rect(0, 0, 0, 0) + visible: false + smooth: rootItem.blur > 0 + } + + ShaderEffect { + id: effect1 + property variant source: level1 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level2 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level2 + width: level1.width / 2 + height: level1.height / 2 + sourceItem: effect1 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect2 + property variant source: level2 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level3 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level3 + width: level2.width / 2 + height: level2.height / 2 + sourceItem: effect2 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect3 + property variant source: level3 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level4 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level4 + width: level3.width / 2 + height: level3.height / 2 + sourceItem: effect3 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect4 + property variant source: level4 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level5 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level5 + width: level4.width / 2 + height: level4.height / 2 + sourceItem: effect4 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect5 + property variant source: level5 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level6 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level6 + width: level5.width / 2 + height: level5.height / 2 + sourceItem: effect5 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: shaderItem + property variant mask: masklevel1 + property variant source1: level1 + property variant source2: level2 + property variant source3: level3 + property variant source4: level4 + property variant source5: level5 + property variant source6: level6 + property real lod: Math.sqrt(rootItem.blur) * 1.2 - 0.2 + property real weight1 + property real weight2 + property real weight3 + property real weight4 + property real weight5 + property real weight6 + + x: transparentBorder ? -64 : 0 + y: transparentBorder ? -64 : 0 + width: transparentBorder ? parent.width + 128 : parent.width + height: transparentBorder ? parent.height + 128 : parent.height + + fragmentShader: "qrc:/qt-project.org/imports/QtGraphicalEffects/shaders/fastmaskedblur.frag" + } +} diff --git a/deployment_test/QtGraphicalEffects/private/FastMaskedBlur.qmlc b/deployment_test/QtGraphicalEffects/private/FastMaskedBlur.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..cdb6bb36153f834b900d7fa9b046cb5716e771f8 Binary files /dev/null and b/deployment_test/QtGraphicalEffects/private/FastMaskedBlur.qmlc differ diff --git a/deployment_test/QtGraphicalEffects/private/GaussianDirectionalBlur.qml b/deployment_test/QtGraphicalEffects/private/GaussianDirectionalBlur.qml new file mode 100644 index 0000000000000000000000000000000000000000..4d52b2ed2102287b69aea5366fed2f412d61cbad --- /dev/null +++ b/deployment_test/QtGraphicalEffects/private/GaussianDirectionalBlur.qml @@ -0,0 +1,289 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtGraphicalEffects.private 1.12 + +Item { + id: rootItem + property variant source + property real deviation: (radius + 1) / 3.3333 + property real radius: 0.0 + property int maximumRadius: 0 + property real horizontalStep: 0.0 + property real verticalStep: 0.0 + property bool transparentBorder: false + property bool cached: false + + property bool enableColor: false + property color color: "white" + property real spread: 0.0 + + property bool enableMask: false + property variant maskSource + + SourceProxy { + id: sourceProxy + input: rootItem.source + } + + SourceProxy { + id: maskSourceProxy + input: rootItem.maskSource + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: rootItem + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + ShaderEffect { + id: shaderItem + property variant source: sourceProxy.output + property real deviation: Math.max(0.1, rootItem.deviation) + property real radius: rootItem.radius + property int maxRadius: rootItem.maximumRadius + property bool transparentBorder: rootItem.transparentBorder + property real gaussianSum: 0.0 + property real startIndex: 0.0 + property real deltaFactor: (2 * radius - 1) / (maxRadius * 2 - 1) + property real expandX: transparentBorder && rootItem.horizontalStep > 0 ? maxRadius / width : 0.0 + property real expandY: transparentBorder && rootItem.verticalStep > 0 ? maxRadius / height : 0.0 + property variant gwts: [] + property variant delta: Qt.vector3d(rootItem.horizontalStep * deltaFactor, rootItem.verticalStep * deltaFactor, startIndex); + property variant factor_0_2: Qt.vector3d(gwts[0], gwts[1], gwts[2]); + property variant factor_3_5: Qt.vector3d(gwts[3], gwts[4], gwts[5]); + property variant factor_6_8: Qt.vector3d(gwts[6], gwts[7], gwts[8]); + property variant factor_9_11: Qt.vector3d(gwts[9], gwts[10], gwts[11]); + property variant factor_12_14: Qt.vector3d(gwts[12], gwts[13], gwts[14]); + property variant factor_15_17: Qt.vector3d(gwts[15], gwts[16], gwts[17]); + property variant factor_18_20: Qt.vector3d(gwts[18], gwts[19], gwts[20]); + property variant factor_21_23: Qt.vector3d(gwts[21], gwts[22], gwts[23]); + property variant factor_24_26: Qt.vector3d(gwts[24], gwts[25], gwts[26]); + property variant factor_27_29: Qt.vector3d(gwts[27], gwts[28], gwts[29]); + property variant factor_30_31: Qt.point(gwts[30], gwts[31]); + + property color color: rootItem.color + property real spread: 1.0 - (rootItem.spread * 0.98) + property variant maskSource: maskSourceProxy.output + + anchors.fill: rootItem + + function gausFunc(x){ + //Gaussian function = h(x):=(1/sqrt(2*3.14159*(D^2))) * %e^(-(x^2)/(2*(D^2))); + return (1.0 / Math.sqrt(2 * Math.PI * (Math.pow(shaderItem.deviation, 2)))) * Math.pow(Math.E, -((Math.pow(x, 2)) / (2 * (Math.pow(shaderItem.deviation, 2))))); + } + + function updateGaussianWeights() { + gaussianSum = 0.0; + startIndex = -maxRadius + 0.5 + + var n = new Array(32); + for (var j = 0; j < 32; j++) + n[j] = 0; + + var max = maxRadius * 2 + var delta = (2 * radius - 1) / (max - 1); + for (var i = 0; i < max; i++) { + n[i] = gausFunc(-radius + 0.5 + i * delta); + gaussianSum += n[i]; + } + + gwts = n; + } + + function buildFragmentShader() { + + var shaderSteps = [ + "gl_FragColor += texture2D(source, texCoord) * factor_0_2.x; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_0_2.y; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_0_2.z; texCoord += shift;", + + "gl_FragColor += texture2D(source, texCoord) * factor_3_5.x; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_3_5.y; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_3_5.z; texCoord += shift;", + + "gl_FragColor += texture2D(source, texCoord) * factor_6_8.x; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_6_8.y; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_6_8.z; texCoord += shift;", + + "gl_FragColor += texture2D(source, texCoord) * factor_9_11.x; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_9_11.y; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_9_11.z; texCoord += shift;", + + "gl_FragColor += texture2D(source, texCoord) * factor_12_14.x; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_12_14.y; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_12_14.z; texCoord += shift;", + + "gl_FragColor += texture2D(source, texCoord) * factor_15_17.x; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_15_17.y; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_15_17.z; texCoord += shift;", + + "gl_FragColor += texture2D(source, texCoord) * factor_18_20.x; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_18_20.y; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_18_20.z; texCoord += shift;", + + "gl_FragColor += texture2D(source, texCoord) * factor_21_23.x; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_21_23.y; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_21_23.z; texCoord += shift;", + + "gl_FragColor += texture2D(source, texCoord) * factor_24_26.x; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_24_26.y; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_24_26.z; texCoord += shift;", + + "gl_FragColor += texture2D(source, texCoord) * factor_27_29.x; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_27_29.y; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_27_29.z; texCoord += shift;", + + "gl_FragColor += texture2D(source, texCoord) * factor_30_31.x; texCoord += shift;", + "gl_FragColor += texture2D(source, texCoord) * factor_30_31.y; texCoord += shift;" + ] + + var shader = "" + if (GraphicsInfo.profile == GraphicsInfo.OpenGLCoreProfile) + shader += "#version 150 core\n#define varying in\n#define gl_FragColor fragColor\n#define texture2D texture\nout vec4 fragColor;\n" + shader += fragmentShaderBegin + var samples = maxRadius * 2 + if (samples > 32) { + console.log("DirectionalGaussianBlur.qml WARNING: Maximum of blur radius (16) exceeded!") + samples = 32 + } + + for (var i = 0; i < samples; i++) { + shader += shaderSteps[i] + } + + shader += fragmentShaderEnd + + var colorizeSteps = "" + var colorizeUniforms = "" + + var maskSteps = "" + var maskUniforms = "" + + if (enableColor) { + colorizeSteps += "gl_FragColor = mix(vec4(0), color, clamp((gl_FragColor.a - 0.0) / (spread - 0.0), 0.0, 1.0));\n" + colorizeUniforms += "uniform highp vec4 color;\n" + colorizeUniforms += "uniform highp float spread;\n" + } + + if (enableMask) { + maskSteps += "shift *= texture2D(maskSource, qt_TexCoord0).a;\n" + maskUniforms += "uniform sampler2D maskSource;\n" + } + + shader = shader.replace("PLACEHOLDER_COLORIZE_STEPS", colorizeSteps) + shader = shader.replace("PLACEHOLDER_COLORIZE_UNIFORMS", colorizeUniforms) + shader = shader.replace("PLACEHOLDER_MASK_STEPS", maskSteps) + shader = shader.replace("PLACEHOLDER_MASK_UNIFORMS", maskUniforms) + + fragmentShader = shader + } + + onDeviationChanged: updateGaussianWeights() + + onRadiusChanged: updateGaussianWeights() + + onTransparentBorderChanged: { + buildFragmentShader() + updateGaussianWeights() + } + + onMaxRadiusChanged: { + buildFragmentShader() + updateGaussianWeights() + } + + Component.onCompleted: { + buildFragmentShader() + updateGaussianWeights() + } + + property string fragmentShaderBegin: " + varying mediump vec2 qt_TexCoord0; + uniform highp float qt_Opacity; + uniform lowp sampler2D source; + uniform highp vec3 delta; + uniform highp vec3 factor_0_2; + uniform highp vec3 factor_3_5; + uniform highp vec3 factor_6_8; + uniform highp vec3 factor_9_11; + uniform highp vec3 factor_12_14; + uniform highp vec3 factor_15_17; + uniform highp vec3 factor_18_20; + uniform highp vec3 factor_21_23; + uniform highp vec3 factor_24_26; + uniform highp vec3 factor_27_29; + uniform highp vec3 factor_30_31; + uniform highp float gaussianSum; + uniform highp float expandX; + uniform highp float expandY; + PLACEHOLDER_MASK_UNIFORMS + PLACEHOLDER_COLORIZE_UNIFORMS + + void main() { + highp vec2 shift = vec2(delta.x, delta.y); + + PLACEHOLDER_MASK_STEPS + + highp float index = delta.z; + mediump vec2 texCoord = qt_TexCoord0; + texCoord.s = (texCoord.s - expandX) / (1.0 - 2.0 * expandX); + texCoord.t = (texCoord.t - expandY) / (1.0 - 2.0 * expandY); + texCoord += (shift * index); + + gl_FragColor = vec4(0.0, 0.0, 0.0, 0.0); + " + + property string fragmentShaderEnd: " + + gl_FragColor /= gaussianSum; + + PLACEHOLDER_COLORIZE_STEPS + + gl_FragColor *= qt_Opacity; + } + " + } +} diff --git a/deployment_test/QtGraphicalEffects/private/GaussianDirectionalBlur.qmlc b/deployment_test/QtGraphicalEffects/private/GaussianDirectionalBlur.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..afbb4a0b95457f4bdb7c549bd6419fd834999bd7 Binary files /dev/null and b/deployment_test/QtGraphicalEffects/private/GaussianDirectionalBlur.qmlc differ diff --git a/deployment_test/QtGraphicalEffects/private/GaussianGlow.qml b/deployment_test/QtGraphicalEffects/private/GaussianGlow.qml new file mode 100644 index 0000000000000000000000000000000000000000..f0d328ac5b0379d91b71672c93fe06dad503afa1 --- /dev/null +++ b/deployment_test/QtGraphicalEffects/private/GaussianGlow.qml @@ -0,0 +1,98 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtGraphicalEffects.private 1.12 + +Item { + id: rootItem + property variant source + property real radius: 0.0 + property int maximumRadius: 0 + property real spread: 0.0 + property color color: "white" + property bool cached: false + property bool transparentBorder: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + sourceRect: rootItem.transparentBorder ? Qt.rect(-1, -1, parent.width + 2.0, parent.height + 2.0) : Qt.rect(0, 0, 0, 0) + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: shaderItem + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + GaussianDirectionalBlur { + id: shaderItem + x: transparentBorder ? -maximumRadius - 1 : 0 + y: transparentBorder ? -maximumRadius - 1 : 0 + width: horizontalBlur.width + height: horizontalBlur.height + horizontalStep: 0.0 + verticalStep: 1.0 / parent.height + source: horizontalBlur + radius: rootItem.radius + maximumRadius: rootItem.maximumRadius + transparentBorder: rootItem.transparentBorder + enableColor: true + color: rootItem.color + spread: rootItem.spread + } + + GaussianDirectionalBlur { + id: horizontalBlur + width: transparentBorder ? parent.width + 2 * maximumRadius + 2 : parent.width + height: transparentBorder ? parent.height + 2 * maximumRadius + 2 : parent.height + horizontalStep: 1.0 / parent.width + verticalStep: 0.0 + source: sourceProxy.output + radius: rootItem.radius + maximumRadius: rootItem.maximumRadius + transparentBorder: rootItem.transparentBorder + visible: false + } +} diff --git a/deployment_test/QtGraphicalEffects/private/GaussianGlow.qmlc b/deployment_test/QtGraphicalEffects/private/GaussianGlow.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..ae40f47086d63a05da6ddf6bfe2af60389a26dda Binary files /dev/null and b/deployment_test/QtGraphicalEffects/private/GaussianGlow.qmlc differ diff --git a/deployment_test/QtGraphicalEffects/private/GaussianInnerShadow.qml b/deployment_test/QtGraphicalEffects/private/GaussianInnerShadow.qml new file mode 100644 index 0000000000000000000000000000000000000000..a0b39e9f51608f152c89e188193480fa36652527 --- /dev/null +++ b/deployment_test/QtGraphicalEffects/private/GaussianInnerShadow.qml @@ -0,0 +1,123 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtGraphicalEffects.private 1.12 + +Item { + id: rootItem + property variant source + property real radius: 0.0 + property int maximumRadius: 0 + property real horizontalOffset: 0 + property real verticalOffset: 0 + property real spread: 0 + property color color: "black" + property bool cached: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: shaderItem + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + ShaderEffect{ + id: shadowItem + anchors.fill: parent + + property variant original: sourceProxy.output + property color color: rootItem.color + property real horizontalOffset: rootItem.horizontalOffset / rootItem.width + property real verticalOffset: rootItem.verticalOffset / rootItem.height + + visible: false + fragmentShader: "qrc:/qt-project.org/imports/QtGraphicalEffects/shaders/gaussianinnershadow_shadow.frag" + } + + GaussianDirectionalBlur { + id: blurItem + anchors.fill: parent + horizontalStep: 0.0 + verticalStep: 1.0 / parent.height + source: horizontalBlur + radius: rootItem.radius + maximumRadius: rootItem.maximumRadius + visible: false + } + + GaussianDirectionalBlur { + id: horizontalBlur + width: transparentBorder ? parent.width + 2 * maximumRadius : parent.width + height: parent.height + horizontalStep: 1.0 / parent.width + verticalStep: 0.0 + source: shadowItem + radius: rootItem.radius + maximumRadius: rootItem.maximumRadius + visible: false + } + + ShaderEffectSource { + id: blurredSource + sourceItem: blurItem + live: true + smooth: true + } + + ShaderEffect { + id: shaderItem + anchors.fill: parent + + property variant original: sourceProxy.output + property variant shadow: blurredSource + property real spread: 1.0 - (rootItem.spread * 0.98) + property color color: rootItem.color + + fragmentShader: "qrc:/qt-project.org/imports/QtGraphicalEffects/shaders/gaussianinnershadow.frag" + } +} diff --git a/deployment_test/QtGraphicalEffects/private/GaussianInnerShadow.qmlc b/deployment_test/QtGraphicalEffects/private/GaussianInnerShadow.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..02fc0f55aef29b9c3dbacc593774a3c9d8bf3f06 Binary files /dev/null and b/deployment_test/QtGraphicalEffects/private/GaussianInnerShadow.qmlc differ diff --git a/deployment_test/QtGraphicalEffects/private/GaussianMaskedBlur.qml b/deployment_test/QtGraphicalEffects/private/GaussianMaskedBlur.qml new file mode 100644 index 0000000000000000000000000000000000000000..8273973f1a824cabe73ddee81afdaf8e1f74b9f5 --- /dev/null +++ b/deployment_test/QtGraphicalEffects/private/GaussianMaskedBlur.qml @@ -0,0 +1,104 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Graphical Effects module. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtGraphicalEffects.private 1.12 + +Item { + id: rootItem + property variant source + property variant maskSource + property real radius: 0.0 + property int maximumRadius: 0 + property bool cached: false + property bool transparentBorder: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + sourceRect: rootItem.transparentBorder ? Qt.rect(-1, -1, parent.width + 2.0, parent.height + 2.0) : Qt.rect(0, 0, 0, 0) + } + + SourceProxy { + id: maskSourceProxy + input: rootItem.maskSource + sourceRect: rootItem.transparentBorder ? Qt.rect(-1, -1, parent.width + 2.0, parent.height + 2.0) : Qt.rect(0, 0, 0, 0) + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: blur + visible: rootItem.cached + smooth: true + sourceItem: blur + live: true + hideSource: visible + } + + GaussianDirectionalBlur { + id: blur + x: transparentBorder ? -maximumRadius - 1: 0 + y: transparentBorder ? -maximumRadius - 1: 0 + width: horizontalBlur.width + height: horizontalBlur.height + horizontalStep: 0.0 + verticalStep: 1.0 / parent.height + source: horizontalBlur + enableMask: true + maskSource: maskSourceProxy.output + radius: rootItem.radius + maximumRadius: rootItem.maximumRadius + transparentBorder: rootItem.transparentBorder + } + + GaussianDirectionalBlur { + id: horizontalBlur + width: transparentBorder ? parent.width + 2 * maximumRadius + 2 : parent.width + height: transparentBorder ? parent.height + 2 * maximumRadius + 2 : parent.height + horizontalStep: 1.0 / parent.width + verticalStep: 0.0 + source: sourceProxy.output + enableMask: true + maskSource: maskSourceProxy.output + radius: rootItem.radius + maximumRadius: rootItem.maximumRadius + transparentBorder: rootItem.transparentBorder + visible: false + } +} diff --git a/deployment_test/QtGraphicalEffects/private/GaussianMaskedBlur.qmlc b/deployment_test/QtGraphicalEffects/private/GaussianMaskedBlur.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..d1f66b8a2a436e18d1ff59338cd874384b210234 Binary files /dev/null and b/deployment_test/QtGraphicalEffects/private/GaussianMaskedBlur.qmlc differ diff --git a/deployment_test/QtGraphicalEffects/private/qmldir b/deployment_test/QtGraphicalEffects/private/qmldir new file mode 100644 index 0000000000000000000000000000000000000000..2d4bdacb85e547d0b007921f162396ac8a080240 --- /dev/null +++ b/deployment_test/QtGraphicalEffects/private/qmldir @@ -0,0 +1,11 @@ +module QtGraphicalEffects.private +plugin qtgraphicaleffectsprivate +classname QtGraphicalEffectsPrivatePlugin +FastGlow 1.0 FastGlow.qml +FastInnerShadow 1.0 FastInnerShadow.qml +FastMaskedBlur 1.0 FastMaskedBlur.qml +GaussianDirectionalBlur 1.0 GaussianDirectionalBlur.qml +GaussianGlow 1.0 GaussianGlow.qml +GaussianInnerShadow 1.0 GaussianInnerShadow.qml +GaussianMaskedBlur 1.0 GaussianMaskedBlur.qml +DropShadowBase 1.0 DropShadowBase.qml diff --git a/deployment_test/QtGraphicalEffects/private/qtgraphicaleffectsprivate.dll b/deployment_test/QtGraphicalEffects/private/qtgraphicaleffectsprivate.dll new file mode 100644 index 0000000000000000000000000000000000000000..20cce1dcbbb07b4084024962827b82d7f02ffa47 Binary files /dev/null and b/deployment_test/QtGraphicalEffects/private/qtgraphicaleffectsprivate.dll differ diff --git a/deployment_test/QtGraphicalEffects/qmldir b/deployment_test/QtGraphicalEffects/qmldir new file mode 100644 index 0000000000000000000000000000000000000000..72233b56b6c9fe122803e8eeba1f55a4534a1c7c --- /dev/null +++ b/deployment_test/QtGraphicalEffects/qmldir @@ -0,0 +1,31 @@ +module QtGraphicalEffects +plugin qtgraphicaleffectsplugin +classname QtGraphicalEffectsPlugin +Blend 1.0 Blend.qml +BrightnessContrast 1.0 BrightnessContrast.qml +Colorize 1.0 Colorize.qml +ColorOverlay 1.0 ColorOverlay.qml +ConicalGradient 1.0 ConicalGradient.qml +Desaturate 1.0 Desaturate.qml +DirectionalBlur 1.0 DirectionalBlur.qml +Displace 1.0 Displace.qml +DropShadow 1.0 DropShadow.qml +FastBlur 1.0 FastBlur.qml +GammaAdjust 1.0 GammaAdjust.qml +GaussianBlur 1.0 GaussianBlur.qml +Glow 1.0 Glow.qml +HueSaturation 1.0 HueSaturation.qml +InnerShadow 1.0 InnerShadow.qml +LevelAdjust 1.0 LevelAdjust.qml +LinearGradient 1.0 LinearGradient.qml +MaskedBlur 1.0 MaskedBlur.qml +OpacityMask 1.0 OpacityMask.qml +RadialBlur 1.0 RadialBlur.qml +RadialGradient 1.0 RadialGradient.qml +RecursiveBlur 1.0 RecursiveBlur.qml +RectangularGlow 1.0 RectangularGlow.qml +ThresholdMask 1.0 ThresholdMask.qml +ZoomBlur 1.0 ZoomBlur.qml +designersupported +depends QtGraphicalEffects/private 1.0 +depends QtQuick.Window 2.1 diff --git a/deployment_test/QtGraphicalEffects/qtgraphicaleffectsplugin.dll b/deployment_test/QtGraphicalEffects/qtgraphicaleffectsplugin.dll new file mode 100644 index 0000000000000000000000000000000000000000..c519c8d6eb96d0c2334b347f219e86089e259e18 Binary files /dev/null and b/deployment_test/QtGraphicalEffects/qtgraphicaleffectsplugin.dll differ diff --git a/deployment_test/QtQml/Models.2/modelsplugin.dll b/deployment_test/QtQml/Models.2/modelsplugin.dll new file mode 100644 index 0000000000000000000000000000000000000000..359dcf296006b579526688d3d7e058403c6a0d4b Binary files /dev/null and b/deployment_test/QtQml/Models.2/modelsplugin.dll differ diff --git a/deployment_test/QtQml/Models.2/plugins.qmltypes b/deployment_test/QtQml/Models.2/plugins.qmltypes new file mode 100644 index 0000000000000000000000000000000000000000..f9c1f0aa3b9d55a23070385d632a6e096e12832a --- /dev/null +++ b/deployment_test/QtQml/Models.2/plugins.qmltypes @@ -0,0 +1,880 @@ +import QtQuick.tooling 1.2 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. +// +// This file was auto-generated by qmltyperegistrar. + +Module { + dependencies: [] + Component { + name: "QAbstractItemModel" + prototype: "QObject" + Enum { + name: "LayoutChangeHint" + values: [ + "NoLayoutChangeHint", + "VerticalSortHint", + "HorizontalSortHint" + ] + } + Enum { + name: "CheckIndexOption" + values: [ + "NoOption", + "IndexIsValid", + "DoNotUseParent", + "ParentIsInvalid" + ] + } + Signal { + name: "dataChanged" + Parameter { name: "topLeft"; type: "QModelIndex" } + Parameter { name: "bottomRight"; type: "QModelIndex" } + Parameter { name: "roles"; type: "QVector<int>" } + } + Signal { + name: "dataChanged" + Parameter { name: "topLeft"; type: "QModelIndex" } + Parameter { name: "bottomRight"; type: "QModelIndex" } + } + Signal { + name: "headerDataChanged" + Parameter { name: "orientation"; type: "Qt::Orientation" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "layoutChanged" + Parameter { name: "parents"; type: "QList<QPersistentModelIndex>" } + Parameter { name: "hint"; type: "QAbstractItemModel::LayoutChangeHint" } + } + Signal { + name: "layoutChanged" + Parameter { name: "parents"; type: "QList<QPersistentModelIndex>" } + } + Signal { name: "layoutChanged" } + Signal { + name: "layoutAboutToBeChanged" + Parameter { name: "parents"; type: "QList<QPersistentModelIndex>" } + Parameter { name: "hint"; type: "QAbstractItemModel::LayoutChangeHint" } + } + Signal { + name: "layoutAboutToBeChanged" + Parameter { name: "parents"; type: "QList<QPersistentModelIndex>" } + } + Signal { name: "layoutAboutToBeChanged" } + Signal { + name: "rowsAboutToBeInserted" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "rowsInserted" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "rowsAboutToBeRemoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "rowsRemoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "columnsAboutToBeInserted" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "columnsInserted" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "columnsAboutToBeRemoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "columnsRemoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { name: "modelAboutToBeReset" } + Signal { name: "modelReset" } + Signal { + name: "rowsAboutToBeMoved" + Parameter { name: "sourceParent"; type: "QModelIndex" } + Parameter { name: "sourceStart"; type: "int" } + Parameter { name: "sourceEnd"; type: "int" } + Parameter { name: "destinationParent"; type: "QModelIndex" } + Parameter { name: "destinationRow"; type: "int" } + } + Signal { + name: "rowsMoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + Parameter { name: "destination"; type: "QModelIndex" } + Parameter { name: "row"; type: "int" } + } + Signal { + name: "columnsAboutToBeMoved" + Parameter { name: "sourceParent"; type: "QModelIndex" } + Parameter { name: "sourceStart"; type: "int" } + Parameter { name: "sourceEnd"; type: "int" } + Parameter { name: "destinationParent"; type: "QModelIndex" } + Parameter { name: "destinationColumn"; type: "int" } + } + Signal { + name: "columnsMoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + Parameter { name: "destination"; type: "QModelIndex" } + Parameter { name: "column"; type: "int" } + } + Method { name: "submit"; type: "bool" } + Method { name: "revert" } + Method { name: "resetInternalData" } + Method { + name: "hasIndex" + type: "bool" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { + name: "hasIndex" + type: "bool" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + } + Method { + name: "index" + type: "QModelIndex" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { + name: "index" + type: "QModelIndex" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + } + Method { + name: "parent" + type: "QModelIndex" + Parameter { name: "child"; type: "QModelIndex" } + } + Method { + name: "sibling" + type: "QModelIndex" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + Parameter { name: "idx"; type: "QModelIndex" } + } + Method { + name: "rowCount" + type: "int" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { name: "rowCount"; type: "int" } + Method { + name: "columnCount" + type: "int" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { name: "columnCount"; type: "int" } + Method { + name: "hasChildren" + type: "bool" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { name: "hasChildren"; type: "bool" } + Method { + name: "data" + type: "QVariant" + Parameter { name: "index"; type: "QModelIndex" } + Parameter { name: "role"; type: "int" } + } + Method { + name: "data" + type: "QVariant" + Parameter { name: "index"; type: "QModelIndex" } + } + Method { + name: "setData" + type: "bool" + Parameter { name: "index"; type: "QModelIndex" } + Parameter { name: "value"; type: "QVariant" } + Parameter { name: "role"; type: "int" } + } + Method { + name: "setData" + type: "bool" + Parameter { name: "index"; type: "QModelIndex" } + Parameter { name: "value"; type: "QVariant" } + } + Method { + name: "headerData" + type: "QVariant" + Parameter { name: "section"; type: "int" } + Parameter { name: "orientation"; type: "Qt::Orientation" } + Parameter { name: "role"; type: "int" } + } + Method { + name: "headerData" + type: "QVariant" + Parameter { name: "section"; type: "int" } + Parameter { name: "orientation"; type: "Qt::Orientation" } + } + Method { + name: "fetchMore" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { + name: "canFetchMore" + type: "bool" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { + name: "flags" + type: "Qt::ItemFlags" + Parameter { name: "index"; type: "QModelIndex" } + } + Method { + name: "match" + type: "QModelIndexList" + Parameter { name: "start"; type: "QModelIndex" } + Parameter { name: "role"; type: "int" } + Parameter { name: "value"; type: "QVariant" } + Parameter { name: "hits"; type: "int" } + Parameter { name: "flags"; type: "Qt::MatchFlags" } + } + Method { + name: "match" + type: "QModelIndexList" + Parameter { name: "start"; type: "QModelIndex" } + Parameter { name: "role"; type: "int" } + Parameter { name: "value"; type: "QVariant" } + Parameter { name: "hits"; type: "int" } + } + Method { + name: "match" + type: "QModelIndexList" + Parameter { name: "start"; type: "QModelIndex" } + Parameter { name: "role"; type: "int" } + Parameter { name: "value"; type: "QVariant" } + } + } + Component { name: "QAbstractListModel"; prototype: "QAbstractItemModel" } + Component { + file: "private/qqmlmodelsmodule_p.h" + name: "QItemSelectionModel" + prototype: "QObject" + exports: ["QtQml.Models/ItemSelectionModel 2.2"] + exportMetaObjectRevisions: [2] + Enum { + name: "SelectionFlags" + alias: "SelectionFlag" + isFlag: true + values: [ + "NoUpdate", + "Clear", + "Select", + "Deselect", + "Toggle", + "Current", + "Rows", + "Columns", + "SelectCurrent", + "ToggleCurrent", + "ClearAndSelect" + ] + } + Property { name: "model"; type: "QAbstractItemModel"; isPointer: true } + Property { name: "hasSelection"; type: "bool"; isReadonly: true } + Property { name: "currentIndex"; type: "QModelIndex"; isReadonly: true } + Property { name: "selection"; type: "QItemSelection"; isReadonly: true } + Property { name: "selectedIndexes"; type: "QModelIndexList"; isReadonly: true } + Signal { + name: "selectionChanged" + Parameter { name: "selected"; type: "QItemSelection" } + Parameter { name: "deselected"; type: "QItemSelection" } + } + Signal { + name: "currentChanged" + Parameter { name: "current"; type: "QModelIndex" } + Parameter { name: "previous"; type: "QModelIndex" } + } + Signal { + name: "currentRowChanged" + Parameter { name: "current"; type: "QModelIndex" } + Parameter { name: "previous"; type: "QModelIndex" } + } + Signal { + name: "currentColumnChanged" + Parameter { name: "current"; type: "QModelIndex" } + Parameter { name: "previous"; type: "QModelIndex" } + } + Signal { + name: "modelChanged" + Parameter { name: "model"; type: "QAbstractItemModel"; isPointer: true } + } + Method { + name: "setCurrentIndex" + Parameter { name: "index"; type: "QModelIndex" } + Parameter { name: "command"; type: "QItemSelectionModel::SelectionFlags" } + } + Method { + name: "select" + Parameter { name: "index"; type: "QModelIndex" } + Parameter { name: "command"; type: "QItemSelectionModel::SelectionFlags" } + } + Method { + name: "select" + Parameter { name: "selection"; type: "QItemSelection" } + Parameter { name: "command"; type: "QItemSelectionModel::SelectionFlags" } + } + Method { name: "clear" } + Method { name: "reset" } + Method { name: "clearSelection" } + Method { name: "clearCurrentIndex" } + Method { + name: "_q_columnsAboutToBeRemoved" + Parameter { type: "QModelIndex" } + Parameter { type: "int" } + Parameter { type: "int" } + } + Method { + name: "_q_rowsAboutToBeRemoved" + Parameter { type: "QModelIndex" } + Parameter { type: "int" } + Parameter { type: "int" } + } + Method { + name: "_q_columnsAboutToBeInserted" + Parameter { type: "QModelIndex" } + Parameter { type: "int" } + Parameter { type: "int" } + } + Method { + name: "_q_rowsAboutToBeInserted" + Parameter { type: "QModelIndex" } + Parameter { type: "int" } + Parameter { type: "int" } + } + Method { + name: "_q_layoutAboutToBeChanged" + Parameter { name: "parents"; type: "QList<QPersistentModelIndex>" } + Parameter { name: "hint"; type: "QAbstractItemModel::LayoutChangeHint" } + } + Method { + name: "_q_layoutAboutToBeChanged" + Parameter { name: "parents"; type: "QList<QPersistentModelIndex>" } + } + Method { name: "_q_layoutAboutToBeChanged" } + Method { + name: "_q_layoutChanged" + Parameter { name: "parents"; type: "QList<QPersistentModelIndex>" } + Parameter { name: "hint"; type: "QAbstractItemModel::LayoutChangeHint" } + } + Method { + name: "_q_layoutChanged" + Parameter { name: "parents"; type: "QList<QPersistentModelIndex>" } + } + Method { name: "_q_layoutChanged" } + Method { + name: "isSelected" + type: "bool" + Parameter { name: "index"; type: "QModelIndex" } + } + Method { + name: "isRowSelected" + type: "bool" + Parameter { name: "row"; type: "int" } + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { + name: "isRowSelected" + type: "bool" + Parameter { name: "row"; type: "int" } + } + Method { + name: "isColumnSelected" + type: "bool" + Parameter { name: "column"; type: "int" } + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { + name: "isColumnSelected" + type: "bool" + Parameter { name: "column"; type: "int" } + } + Method { + name: "rowIntersectsSelection" + type: "bool" + Parameter { name: "row"; type: "int" } + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { + name: "rowIntersectsSelection" + type: "bool" + Parameter { name: "row"; type: "int" } + } + Method { + name: "columnIntersectsSelection" + type: "bool" + Parameter { name: "column"; type: "int" } + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { + name: "columnIntersectsSelection" + type: "bool" + Parameter { name: "column"; type: "int" } + } + Method { + name: "selectedRows" + type: "QModelIndexList" + Parameter { name: "column"; type: "int" } + } + Method { name: "selectedRows"; type: "QModelIndexList" } + Method { + name: "selectedColumns" + type: "QModelIndexList" + Parameter { name: "row"; type: "int" } + } + Method { name: "selectedColumns"; type: "QModelIndexList" } + } + Component { + file: "private/qqmlabstractdelegatecomponent_p.h" + name: "QQmlAbstractDelegateComponent" + prototype: "QQmlComponent" + exports: ["QtQml.Models/AbstractDelegateComponent 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Signal { name: "delegateChanged" } + } + Component { + file: "private/qqmldelegatemodel_p.h" + name: "QQmlDelegateModel" + defaultProperty: "delegate" + prototype: "QQmlInstanceModel" + exports: [ + "QtQml.Models/DelegateModel 2.1", + "QtQml.Models/DelegateModel 2.15" + ] + exportMetaObjectRevisions: [1, 15] + attachedType: "QQmlDelegateModelAttached" + Property { name: "model"; type: "QVariant" } + Property { name: "delegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "filterOnGroup"; type: "string" } + Property { name: "items"; type: "QQmlDelegateModelGroup"; isReadonly: true; isPointer: true } + Property { + name: "persistedItems" + type: "QQmlDelegateModelGroup" + isReadonly: true + isPointer: true + } + Property { name: "groups"; type: "QQmlDelegateModelGroup"; isList: true; isReadonly: true } + Property { name: "parts"; type: "QObject"; isReadonly: true; isPointer: true } + Property { name: "rootIndex"; type: "QVariant" } + Signal { name: "filterGroupChanged" } + Signal { name: "defaultGroupsChanged" } + Method { + name: "_q_itemsChanged" + Parameter { name: "index"; type: "int" } + Parameter { name: "count"; type: "int" } + Parameter { name: "roles"; type: "QVector<int>" } + } + Method { + name: "_q_itemsInserted" + Parameter { name: "index"; type: "int" } + Parameter { name: "count"; type: "int" } + } + Method { + name: "_q_itemsRemoved" + Parameter { name: "index"; type: "int" } + Parameter { name: "count"; type: "int" } + } + Method { + name: "_q_itemsMoved" + Parameter { name: "from"; type: "int" } + Parameter { name: "to"; type: "int" } + Parameter { name: "count"; type: "int" } + } + Method { name: "_q_modelReset" } + Method { + name: "_q_rowsInserted" + Parameter { type: "QModelIndex" } + Parameter { type: "int" } + Parameter { type: "int" } + } + Method { + name: "_q_rowsAboutToBeRemoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "begin"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Method { + name: "_q_rowsRemoved" + Parameter { type: "QModelIndex" } + Parameter { type: "int" } + Parameter { type: "int" } + } + Method { + name: "_q_rowsMoved" + Parameter { type: "QModelIndex" } + Parameter { type: "int" } + Parameter { type: "int" } + Parameter { type: "QModelIndex" } + Parameter { type: "int" } + } + Method { + name: "_q_dataChanged" + Parameter { type: "QModelIndex" } + Parameter { type: "QModelIndex" } + Parameter { type: "QVector<int>" } + } + Method { + name: "_q_layoutChanged" + Parameter { type: "QList<QPersistentModelIndex>" } + Parameter { type: "QAbstractItemModel::LayoutChangeHint" } + } + Method { + name: "modelIndex" + type: "QVariant" + Parameter { name: "idx"; type: "int" } + } + Method { name: "parentModelIndex"; type: "QVariant" } + } + Component { + name: "QQmlDelegateModelAttached" + prototype: "QObject" + Property { name: "model"; type: "QQmlDelegateModel"; isReadonly: true; isPointer: true } + Property { name: "groups"; type: "QStringList" } + Property { name: "isUnresolved"; type: "bool"; isReadonly: true } + Signal { name: "unresolvedChanged" } + } + Component { + file: "private/qqmldelegatemodel_p.h" + name: "QQmlDelegateModelGroup" + prototype: "QObject" + exports: ["QtQml.Models/DelegateModelGroup 2.1"] + exportMetaObjectRevisions: [1] + Property { name: "count"; type: "int"; isReadonly: true } + Property { name: "name"; type: "string" } + Property { name: "includeByDefault"; type: "bool" } + Signal { name: "defaultIncludeChanged" } + Signal { + name: "changed" + Parameter { name: "removed"; type: "QJSValue" } + Parameter { name: "inserted"; type: "QJSValue" } + } + Method { + name: "insert" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "create" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "resolve" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "remove" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "addGroups" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "removeGroups" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "setGroups" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "move" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "get" + type: "QJSValue" + Parameter { name: "index"; type: "int" } + } + } + Component { + file: "private/qqmlobjectmodel_p.h" + name: "QQmlInstanceModel" + prototype: "QObject" + Property { name: "count"; type: "int"; isReadonly: true } + Signal { + name: "modelUpdated" + Parameter { name: "changeSet"; type: "QQmlChangeSet" } + Parameter { name: "reset"; type: "bool" } + } + Signal { + name: "createdItem" + Parameter { name: "index"; type: "int" } + Parameter { name: "object"; type: "QObject"; isPointer: true } + } + Signal { + name: "initItem" + Parameter { name: "index"; type: "int" } + Parameter { name: "object"; type: "QObject"; isPointer: true } + } + Signal { + name: "destroyingItem" + Parameter { name: "object"; type: "QObject"; isPointer: true } + } + Signal { + name: "itemPooled" + revision: 15 + Parameter { name: "index"; type: "int" } + Parameter { name: "object"; type: "QObject"; isPointer: true } + } + Signal { + name: "itemReused" + revision: 15 + Parameter { name: "index"; type: "int" } + Parameter { name: "object"; type: "QObject"; isPointer: true } + } + } + Component { + file: "private/qqmlinstantiator_p.h" + name: "QQmlInstantiator" + defaultProperty: "delegate" + prototype: "QObject" + exports: ["QtQml.Models/Instantiator 2.14"] + exportMetaObjectRevisions: [14] + Property { name: "active"; type: "bool" } + Property { name: "asynchronous"; type: "bool" } + Property { name: "model"; type: "QVariant" } + Property { name: "count"; type: "int"; isReadonly: true } + Property { name: "delegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "object"; type: "QObject"; isReadonly: true; isPointer: true } + Signal { + name: "objectAdded" + Parameter { name: "index"; type: "int" } + Parameter { name: "object"; type: "QObject"; isPointer: true } + } + Signal { + name: "objectRemoved" + Parameter { name: "index"; type: "int" } + Parameter { name: "object"; type: "QObject"; isPointer: true } + } + Method { + name: "_q_createdItem" + Parameter { type: "int" } + Parameter { type: "QObject"; isPointer: true } + } + Method { + name: "_q_modelUpdated" + Parameter { type: "QQmlChangeSet" } + Parameter { type: "bool" } + } + Method { + name: "objectAt" + type: "QObject*" + Parameter { name: "index"; type: "int" } + } + } + Component { + file: "private/qqmllistmodel_p.h" + name: "QQmlListElement" + prototype: "QObject" + exports: ["QtQml.Models/ListElement 2.1"] + exportMetaObjectRevisions: [1] + } + Component { + file: "private/qqmllistmodel_p.h" + name: "QQmlListModel" + prototype: "QAbstractListModel" + exports: ["QtQml.Models/ListModel 2.1", "QtQml.Models/ListModel 2.14"] + exportMetaObjectRevisions: [1, 14] + Property { name: "count"; type: "int"; isReadonly: true } + Property { name: "dynamicRoles"; type: "bool" } + Property { name: "agent"; revision: 14; type: "QObject"; isReadonly: true; isPointer: true } + Method { name: "clear" } + Method { + name: "remove" + Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "append" + Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "insert" + Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "get" + type: "QJSValue" + Parameter { name: "index"; type: "int" } + } + Method { + name: "set" + Parameter { name: "index"; type: "int" } + Parameter { name: "value"; type: "QJSValue" } + } + Method { + name: "setProperty" + Parameter { name: "index"; type: "int" } + Parameter { name: "property"; type: "string" } + Parameter { name: "value"; type: "QVariant" } + } + Method { + name: "move" + Parameter { name: "from"; type: "int" } + Parameter { name: "to"; type: "int" } + Parameter { name: "count"; type: "int" } + } + Method { name: "sync" } + } + Component { + file: "private/qqmllistmodelworkeragent_p.h" + name: "QQmlListModelWorkerAgent" + prototype: "QObject" + Property { name: "count"; type: "int"; isReadonly: true } + Property { name: "engine"; type: "QV4::ExecutionEngine"; isPointer: true } + Signal { + name: "engineChanged" + Parameter { name: "engine"; type: "QV4::ExecutionEngine"; isPointer: true } + } + Method { name: "addref" } + Method { name: "release" } + Method { name: "clear" } + Method { + name: "remove" + Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "append" + Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "insert" + Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "get" + type: "QJSValue" + Parameter { name: "index"; type: "int" } + } + Method { + name: "set" + Parameter { name: "index"; type: "int" } + Parameter { name: "value"; type: "QJSValue" } + } + Method { + name: "setProperty" + Parameter { name: "index"; type: "int" } + Parameter { name: "property"; type: "string" } + Parameter { name: "value"; type: "QVariant" } + } + Method { + name: "move" + Parameter { name: "from"; type: "int" } + Parameter { name: "to"; type: "int" } + Parameter { name: "count"; type: "int" } + } + Method { name: "sync" } + } + Component { + file: "private/qqmlobjectmodel_p.h" + name: "QQmlObjectModel" + defaultProperty: "children" + prototype: "QQmlInstanceModel" + exports: [ + "QtQml.Models/ObjectModel 2.1", + "QtQml.Models/ObjectModel 2.15", + "QtQml.Models/ObjectModel 2.3" + ] + exportMetaObjectRevisions: [1, 15, 3] + attachedType: "QQmlObjectModelAttached" + Property { name: "children"; type: "QObject"; isList: true; isReadonly: true } + Method { name: "clear"; revision: 3 } + Method { + name: "get" + revision: 3 + type: "QObject*" + Parameter { name: "index"; type: "int" } + } + Method { + name: "append" + revision: 3 + Parameter { name: "object"; type: "QObject"; isPointer: true } + } + Method { + name: "insert" + revision: 3 + Parameter { name: "index"; type: "int" } + Parameter { name: "object"; type: "QObject"; isPointer: true } + } + Method { + name: "move" + revision: 3 + Parameter { name: "from"; type: "int" } + Parameter { name: "to"; type: "int" } + Parameter { name: "n"; type: "int" } + } + Method { + name: "move" + revision: 3 + Parameter { name: "from"; type: "int" } + Parameter { name: "to"; type: "int" } + } + Method { + name: "remove" + revision: 3 + Parameter { name: "index"; type: "int" } + Parameter { name: "n"; type: "int" } + } + Method { + name: "remove" + revision: 3 + Parameter { name: "index"; type: "int" } + } + } + Component { + name: "QQmlObjectModelAttached" + prototype: "QObject" + Property { name: "index"; type: "int"; isReadonly: true } + } + Component { + file: "private/qquickpackage_p.h" + name: "QQuickPackage" + defaultProperty: "data" + prototype: "QObject" + exports: ["QtQml.Models/Package 2.14"] + exportMetaObjectRevisions: [14] + attachedType: "QQuickPackageAttached" + Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } + } + Component { + name: "QQuickPackageAttached" + prototype: "QObject" + Property { name: "name"; type: "string" } + } +} diff --git a/deployment_test/QtQml/Models.2/qmldir b/deployment_test/QtQml/Models.2/qmldir new file mode 100644 index 0000000000000000000000000000000000000000..2dd20b923e623d686716414607a947d2f3d0a618 --- /dev/null +++ b/deployment_test/QtQml/Models.2/qmldir @@ -0,0 +1,4 @@ +module QtQml.Models +plugin modelsplugin +classname QtQmlModelsPlugin +designersupported diff --git a/deployment_test/QtQml/RemoteObjects/plugins.qmltypes b/deployment_test/QtQml/RemoteObjects/plugins.qmltypes new file mode 100644 index 0000000000000000000000000000000000000000..24397152a4a70684428e14d90c41b83832796cfd --- /dev/null +++ b/deployment_test/QtQml/RemoteObjects/plugins.qmltypes @@ -0,0 +1,75 @@ +import QtQuick.tooling 1.2 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. +// +// This file was auto-generated by: +// 'qmlplugindump -nonrelocatable QtQml.RemoteObjects 1.0' + +Module { + dependencies: ["QtQuick 2.0"] + Component { + name: "QRemoteObjectAbstractPersistedStore" + prototype: "QObject" + exports: ["QtQml.RemoteObjects/PersistedStore 1.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + } + Component { + name: "QRemoteObjectNode" + prototype: "QObject" + exports: ["QtQml.RemoteObjects/Node 1.0"] + exportMetaObjectRevisions: [0] + Enum { + name: "ErrorCode" + values: { + "NoError": 0, + "RegistryNotAcquired": 1, + "RegistryAlreadyHosted": 2, + "NodeIsNoServer": 3, + "ServerAlreadyCreated": 4, + "UnintendedRegistryHosting": 5, + "OperationNotValidOnClientNode": 6, + "SourceNotRegistered": 7, + "MissingObjectName": 8, + "HostUrlInvalid": 9, + "ProtocolMismatch": 10, + "ListenFailed": 11 + } + } + Property { name: "registryUrl"; type: "QUrl" } + Property { + name: "persistedStore" + type: "QRemoteObjectAbstractPersistedStore" + isPointer: true + } + Property { name: "heartbeatInterval"; type: "int" } + Signal { + name: "remoteObjectAdded" + Parameter { type: "QRemoteObjectSourceLocation" } + } + Signal { + name: "remoteObjectRemoved" + Parameter { type: "QRemoteObjectSourceLocation" } + } + Signal { + name: "error" + Parameter { name: "errorCode"; type: "QRemoteObjectNode::ErrorCode" } + } + Signal { + name: "heartbeatIntervalChanged" + Parameter { name: "heartbeatInterval"; type: "int" } + } + Method { + name: "connectToNode" + type: "bool" + Parameter { name: "address"; type: "QUrl" } + } + } + Component { + name: "QRemoteObjectSettingsStore" + prototype: "QRemoteObjectAbstractPersistedStore" + exports: ["QtQml.RemoteObjects/SettingsStore 1.0"] + exportMetaObjectRevisions: [0] + } +} diff --git a/deployment_test/QtQml/RemoteObjects/qmldir b/deployment_test/QtQml/RemoteObjects/qmldir new file mode 100644 index 0000000000000000000000000000000000000000..e6f2c537bc40ec8629f386abc499961f14b7a571 --- /dev/null +++ b/deployment_test/QtQml/RemoteObjects/qmldir @@ -0,0 +1,3 @@ +module QtQml.RemoteObjects +plugin qtqmlremoteobjects +classname QtQmlRemoteObjectsPlugin diff --git a/deployment_test/QtQml/RemoteObjects/qtqmlremoteobjects.dll b/deployment_test/QtQml/RemoteObjects/qtqmlremoteobjects.dll new file mode 100644 index 0000000000000000000000000000000000000000..1bf4f19734e30f7ec55c4e29a6d545c8143d22fa Binary files /dev/null and b/deployment_test/QtQml/RemoteObjects/qtqmlremoteobjects.dll differ diff --git a/deployment_test/QtQml/StateMachine/plugins.qmltypes b/deployment_test/QtQml/StateMachine/plugins.qmltypes new file mode 100644 index 0000000000000000000000000000000000000000..0f602118d60f5687117e30ab1a5c164e31fd8d3d --- /dev/null +++ b/deployment_test/QtQml/StateMachine/plugins.qmltypes @@ -0,0 +1,176 @@ +import QtQuick.tooling 1.2 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. +// +// This file was auto-generated by qmltyperegistrar. + +Module { + dependencies: [] + Component { + file: "finalstate.h" + name: "FinalState" + defaultProperty: "children" + prototype: "QFinalState" + exports: ["QtQml.StateMachine/FinalState 1.0"] + exportMetaObjectRevisions: [0] + Property { name: "children"; type: "QObject"; isList: true; isReadonly: true } + } + Component { + file: "statemachineforeign.h" + name: "QAbstractState" + prototype: "QObject" + exports: ["QtQml.StateMachine/QAbstractState 1.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Property { name: "active"; type: "bool"; isReadonly: true } + Signal { name: "entered" } + Signal { name: "exited" } + Signal { + name: "activeChanged" + Parameter { name: "active"; type: "bool" } + } + } + Component { + name: "QAbstractTransition" + prototype: "QObject" + Enum { + name: "TransitionType" + values: ["ExternalTransition", "InternalTransition"] + } + Property { name: "sourceState"; type: "QState"; isReadonly: true; isPointer: true } + Property { name: "targetState"; type: "QAbstractState"; isPointer: true } + Property { name: "targetStates"; type: "QList<QAbstractState*>" } + Property { name: "transitionType"; revision: 1; type: "TransitionType" } + Signal { name: "triggered" } + } + Component { name: "QFinalState"; prototype: "QAbstractState" } + Component { + file: "statemachineforeign.h" + name: "QHistoryState" + prototype: "QAbstractState" + exports: ["QtQml.StateMachine/HistoryState 1.0"] + exportMetaObjectRevisions: [0] + Enum { + name: "HistoryType" + values: ["ShallowHistory", "DeepHistory"] + } + Property { name: "defaultState"; type: "QAbstractState"; isPointer: true } + Property { name: "defaultTransition"; type: "QAbstractTransition"; isPointer: true } + Property { name: "historyType"; type: "HistoryType" } + } + Component { + file: "statemachineforeign.h" + name: "QSignalTransition" + prototype: "QAbstractTransition" + exports: [ + "QtQml.StateMachine/QSignalTransition 1.0", + "QtQml.StateMachine/QSignalTransition 1.1" + ] + isCreatable: false + exportMetaObjectRevisions: [0, 1] + Property { name: "senderObject"; type: "QObject"; isPointer: true } + Property { name: "signal"; type: "QByteArray" } + } + Component { + file: "statemachineforeign.h" + name: "QState" + prototype: "QAbstractState" + exports: ["QtQml.StateMachine/QState 1.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Enum { + name: "ChildMode" + values: ["ExclusiveStates", "ParallelStates"] + } + Enum { + name: "RestorePolicy" + values: ["DontRestoreProperties", "RestoreProperties"] + } + Property { name: "initialState"; type: "QAbstractState"; isPointer: true } + Property { name: "errorState"; type: "QAbstractState"; isPointer: true } + Property { name: "childMode"; type: "ChildMode" } + Signal { name: "finished" } + Signal { name: "propertiesAssigned" } + } + Component { + name: "QStateMachine" + prototype: "QState" + Property { name: "errorString"; type: "string"; isReadonly: true } + Property { name: "globalRestorePolicy"; type: "QState::RestorePolicy" } + Property { name: "running"; type: "bool" } + Property { name: "animated"; type: "bool" } + Signal { name: "started" } + Signal { name: "stopped" } + Signal { + name: "runningChanged" + Parameter { name: "running"; type: "bool" } + } + Method { name: "start" } + Method { name: "stop" } + Method { + name: "setRunning" + Parameter { name: "running"; type: "bool" } + } + Method { name: "_q_start" } + Method { name: "_q_process" } + Method { name: "_q_animationFinished" } + Method { + name: "_q_startDelayedEventTimer" + Parameter { type: "int" } + Parameter { type: "int" } + } + Method { + name: "_q_killDelayedEventTimer" + Parameter { type: "int" } + Parameter { type: "int" } + } + } + Component { + file: "signaltransition.h" + name: "SignalTransition" + prototype: "QSignalTransition" + exports: [ + "QtQml.StateMachine/SignalTransition 1.0", + "QtQml.StateMachine/SignalTransition 1.1" + ] + exportMetaObjectRevisions: [0, 1] + Property { name: "signal"; type: "QJSValue" } + Property { name: "guard"; type: "QQmlScriptString" } + Signal { name: "invokeYourself" } + Signal { name: "qmlSignalChanged" } + Method { name: "invoke" } + } + Component { + file: "state.h" + name: "State" + defaultProperty: "children" + prototype: "QState" + exports: ["QtQml.StateMachine/State 1.0"] + exportMetaObjectRevisions: [0] + Property { name: "children"; type: "QObject"; isList: true; isReadonly: true } + } + Component { + file: "statemachine.h" + name: "StateMachine" + defaultProperty: "children" + prototype: "QStateMachine" + exports: ["QtQml.StateMachine/StateMachine 1.0"] + exportMetaObjectRevisions: [0] + Property { name: "children"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "running"; type: "bool" } + Signal { name: "qmlRunningChanged" } + Method { name: "checkChildMode" } + } + Component { + file: "timeouttransition.h" + name: "TimeoutTransition" + prototype: "QSignalTransition" + exports: [ + "QtQml.StateMachine/TimeoutTransition 1.0", + "QtQml.StateMachine/TimeoutTransition 1.1" + ] + exportMetaObjectRevisions: [0, 1] + Property { name: "timeout"; type: "int" } + } +} diff --git a/deployment_test/QtQml/StateMachine/qmldir b/deployment_test/QtQml/StateMachine/qmldir new file mode 100644 index 0000000000000000000000000000000000000000..8bc383120806823ca932661ab04696e1924f6ff1 --- /dev/null +++ b/deployment_test/QtQml/StateMachine/qmldir @@ -0,0 +1,4 @@ +module QtQml.StateMachine +plugin qtqmlstatemachine +classname QtQmlStateMachinePlugin +typeinfo plugins.qmltypes diff --git a/deployment_test/QtQml/StateMachine/qtqmlstatemachine.dll b/deployment_test/QtQml/StateMachine/qtqmlstatemachine.dll new file mode 100644 index 0000000000000000000000000000000000000000..82498e193ebfae71a013d38d06ac4b1abdc9facb Binary files /dev/null and b/deployment_test/QtQml/StateMachine/qtqmlstatemachine.dll differ diff --git a/deployment_test/QtQml/WorkerScript.2/plugins.qmltypes b/deployment_test/QtQml/WorkerScript.2/plugins.qmltypes new file mode 100644 index 0000000000000000000000000000000000000000..057136bc1a36b75b5293f09c7be92fbdf5ffde24 --- /dev/null +++ b/deployment_test/QtQml/WorkerScript.2/plugins.qmltypes @@ -0,0 +1,31 @@ +import QtQuick.tooling 1.2 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. +// +// This file was auto-generated by qmltyperegistrar. + +Module { + dependencies: [] + Component { + file: "private/qquickworkerscript_p.h" + name: "QQuickWorkerScript" + prototype: "QObject" + exports: [ + "QtQml.WorkerScript/WorkerScript 2.0", + "QtQml.WorkerScript/WorkerScript 2.15" + ] + exportMetaObjectRevisions: [0, 15] + Property { name: "source"; type: "QUrl" } + Property { name: "ready"; revision: 15; type: "bool"; isReadonly: true } + Signal { name: "readyChanged"; revision: 15 } + Signal { + name: "message" + Parameter { name: "messageObject"; type: "QJSValue" } + } + Method { + name: "sendMessage" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + } +} diff --git a/deployment_test/QtQml/WorkerScript.2/qmldir b/deployment_test/QtQml/WorkerScript.2/qmldir new file mode 100644 index 0000000000000000000000000000000000000000..1606400a231d2066e01dce45d767908113ed3371 --- /dev/null +++ b/deployment_test/QtQml/WorkerScript.2/qmldir @@ -0,0 +1,3 @@ +module QtQml.WorkerScript +plugin workerscriptplugin +classname QtQmlWorkerScriptPlugin diff --git a/deployment_test/QtQml/WorkerScript.2/workerscriptplugin.dll b/deployment_test/QtQml/WorkerScript.2/workerscriptplugin.dll new file mode 100644 index 0000000000000000000000000000000000000000..aecf63719af276231ef8bdbb2eda63de27e965f7 Binary files /dev/null and b/deployment_test/QtQml/WorkerScript.2/workerscriptplugin.dll differ diff --git a/deployment_test/QtQml/plugins.qmltypes b/deployment_test/QtQml/plugins.qmltypes new file mode 100644 index 0000000000000000000000000000000000000000..b73940aa7d457f624143c28303b9a0d1ba62897e --- /dev/null +++ b/deployment_test/QtQml/plugins.qmltypes @@ -0,0 +1,279 @@ +import QtQuick.tooling 1.2 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. +// +// This file was auto-generated by qmltyperegistrar. + +Module { + dependencies: [] + Component { + file: "private/qqmlengine_p.h" + name: "QObject" + exports: ["QML/QtObject 1.0", "QtQml/QtObject 2.0"] + exportMetaObjectRevisions: [0, 0] + Property { name: "objectName"; type: "string" } + Signal { + name: "objectNameChanged" + Parameter { name: "objectName"; type: "string" } + } + Method { + name: "_q_reregisterTimers" + Parameter { type: "void"; isPointer: true } + } + Method { name: "toString" } + Method { name: "destroy" } + Method { + name: "destroy" + Parameter { name: "delay"; type: "int" } + } + } + Component { + file: "private/qqmlbind_p.h" + name: "QQmlBind" + prototype: "QObject" + exports: [ + "QtQml/Binding 2.0", + "QtQml/Binding 2.14", + "QtQml/Binding 2.8" + ] + exportMetaObjectRevisions: [0, 14, 8] + Enum { + name: "RestorationMode" + values: [ + "RestoreNone", + "RestoreBinding", + "RestoreValue", + "RestoreBindingOrValue" + ] + } + Property { name: "target"; type: "QObject"; isPointer: true } + Property { name: "property"; type: "string" } + Property { name: "value"; type: "QJSValue" } + Property { name: "when"; type: "bool" } + Property { name: "delayed"; revision: 8; type: "bool" } + Property { name: "restoreMode"; revision: 14; type: "RestorationMode" } + Method { name: "targetValueChanged" } + } + Component { + file: "qqmlcomponent.h" + name: "QQmlComponent" + prototype: "QObject" + exports: ["QML/Component 1.0", "QtQml/Component 2.0"] + exportMetaObjectRevisions: [0, 0] + attachedType: "QQmlComponentAttached" + Enum { + name: "CompilationMode" + values: ["PreferSynchronous", "Asynchronous"] + } + Enum { + name: "Status" + values: ["Null", "Ready", "Loading", "Error"] + } + Property { name: "progress"; type: "double"; isReadonly: true } + Property { name: "status"; type: "Status"; isReadonly: true } + Property { name: "url"; type: "QUrl"; isReadonly: true } + Signal { + name: "statusChanged" + Parameter { type: "QQmlComponent::Status" } + } + Signal { + name: "progressChanged" + Parameter { type: "double" } + } + Method { + name: "loadUrl" + Parameter { name: "url"; type: "QUrl" } + } + Method { + name: "loadUrl" + Parameter { name: "url"; type: "QUrl" } + Parameter { name: "mode"; type: "CompilationMode" } + } + Method { + name: "setData" + Parameter { type: "QByteArray" } + Parameter { name: "baseUrl"; type: "QUrl" } + } + Method { name: "errorString"; type: "string" } + Method { + name: "createObject" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "incubateObject" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + } + Component { + file: "private/qqmlcomponentattached_p.h" + name: "QQmlComponentAttached" + prototype: "QObject" + Signal { name: "completed" } + Signal { name: "destruction" } + } + Component { + file: "private/qqmlconnections_p.h" + name: "QQmlConnections" + prototype: "QObject" + exports: ["QtQml/Connections 2.0", "QtQml/Connections 2.3"] + exportMetaObjectRevisions: [0, 3] + Property { name: "target"; type: "QObject"; isPointer: true } + Property { name: "enabled"; revision: 3; type: "bool" } + Property { name: "ignoreUnknownSignals"; type: "bool" } + Signal { name: "enabledChanged"; revision: 3 } + } + Component { + file: "private/qqmlvaluetype_p.h" + name: "QQmlEasingValueType" + exports: ["QtQml/Easing 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Enum { + name: "Type" + values: [ + "Linear", + "InQuad", + "OutQuad", + "InOutQuad", + "OutInQuad", + "InCubic", + "OutCubic", + "InOutCubic", + "OutInCubic", + "InQuart", + "OutQuart", + "InOutQuart", + "OutInQuart", + "InQuint", + "OutQuint", + "InOutQuint", + "OutInQuint", + "InSine", + "OutSine", + "InOutSine", + "OutInSine", + "InExpo", + "OutExpo", + "InOutExpo", + "OutInExpo", + "InCirc", + "OutCirc", + "InOutCirc", + "OutInCirc", + "InElastic", + "OutElastic", + "InOutElastic", + "OutInElastic", + "InBack", + "OutBack", + "InOutBack", + "OutInBack", + "InBounce", + "OutBounce", + "InOutBounce", + "OutInBounce", + "InCurve", + "OutCurve", + "SineCurve", + "CosineCurve", + "Bezier" + ] + } + Property { name: "type"; type: "QQmlEasingValueType::Type" } + Property { name: "amplitude"; type: "double" } + Property { name: "overshoot"; type: "double" } + Property { name: "period"; type: "double" } + Property { name: "bezierCurve"; type: "QVariantList" } + } + Component { + file: "private/qqmllocale_p.h" + name: "QQmlLocale" + exports: ["QtQml/Locale 2.2"] + isCreatable: false + exportMetaObjectRevisions: [2] + Enum { + name: "MeasurementSystem" + values: [ + "MetricSystem", + "ImperialSystem", + "ImperialUSSystem", + "ImperialUKSystem" + ] + } + Enum { + name: "FormatType" + values: ["LongFormat", "ShortFormat", "NarrowFormat"] + } + Enum { + name: "CurrencySymbolFormat" + values: [ + "CurrencyIsoCode", + "CurrencySymbol", + "CurrencyDisplayName" + ] + } + Enum { + name: "DayOfWeek" + values: [ + "Sunday", + "Monday", + "Tuesday", + "Wednesday", + "Thursday", + "Friday", + "Saturday" + ] + } + Enum { + name: "NumberOptions" + values: [ + "DefaultNumberOptions", + "OmitGroupSeparator", + "RejectGroupSeparator", + "OmitLeadingZeroInExponent", + "RejectLeadingZeroInExponent", + "IncludeTrailingZeroesAfterDot", + "RejectTrailingZeroesAfterDot" + ] + } + } + Component { + file: "private/qqmlloggingcategory_p.h" + name: "QQmlLoggingCategory" + prototype: "QObject" + exports: ["QtQml/LoggingCategory 2.12", "QtQml/LoggingCategory 2.8"] + exportMetaObjectRevisions: [12, 8] + Enum { + name: "DefaultLogLevel" + values: ["Debug", "Info", "Warning", "Critical", "Fatal"] + } + Property { name: "name"; type: "string" } + Property { name: "defaultLogLevel"; revision: 12; type: "DefaultLogLevel" } + } + Component { + file: "private/qqmltimer_p.h" + name: "QQmlTimer" + prototype: "QObject" + exports: ["QtQml/Timer 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "interval"; type: "int" } + Property { name: "running"; type: "bool" } + Property { name: "repeat"; type: "bool" } + Property { name: "triggeredOnStart"; type: "bool" } + Property { name: "parent"; type: "QObject"; isReadonly: true; isPointer: true } + Signal { name: "triggered" } + Method { name: "start" } + Method { name: "stop" } + Method { name: "restart" } + Method { name: "ticked" } + } + Component { + file: "private/qqmltypenotavailable_p.h" + name: "QQmlTypeNotAvailable" + prototype: "QObject" + exports: ["QtQml/TypeNotAvailable 2.15"] + isCreatable: false + exportMetaObjectRevisions: [15] + } +} diff --git a/deployment_test/QtQml/qmldir b/deployment_test/QtQml/qmldir new file mode 100644 index 0000000000000000000000000000000000000000..98555ee1c7ab769fe6cc3d6c3de27b5839cfdb71 --- /dev/null +++ b/deployment_test/QtQml/qmldir @@ -0,0 +1,6 @@ +module QtQml +plugin qmlplugin +classname QtQmlPlugin +depends QtQml.Models 2.15 +depends QtQml.WorkerScript 2.15 +typeinfo plugins.qmltypes diff --git a/deployment_test/QtQml/qmlplugin.dll b/deployment_test/QtQml/qmlplugin.dll new file mode 100644 index 0000000000000000000000000000000000000000..a31b736251914ad856f805c2eb0ba6ba49b2b3fe Binary files /dev/null and b/deployment_test/QtQml/qmlplugin.dll differ diff --git a/deployment_test/QtQuick.2/plugins.qmltypes b/deployment_test/QtQuick.2/plugins.qmltypes new file mode 100644 index 0000000000000000000000000000000000000000..9ca13f76817c597ae6366a2bdd65fe004ff8958e --- /dev/null +++ b/deployment_test/QtQuick.2/plugins.qmltypes @@ -0,0 +1,5294 @@ +import QtQuick.tooling 1.2 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. +// +// This file was auto-generated by qmltyperegistrar. + +Module { + dependencies: [] + Component { + name: "QDoubleValidator" + prototype: "QValidator" + Enum { + name: "Notation" + values: ["StandardNotation", "ScientificNotation"] + } + Property { name: "bottom"; type: "double" } + Property { name: "top"; type: "double" } + Property { name: "decimals"; type: "int" } + Property { name: "notation"; type: "Notation" } + Signal { + name: "bottomChanged" + Parameter { name: "bottom"; type: "double" } + } + Signal { + name: "topChanged" + Parameter { name: "top"; type: "double" } + } + Signal { + name: "decimalsChanged" + Parameter { name: "decimals"; type: "int" } + } + Signal { + name: "notationChanged" + Parameter { name: "notation"; type: "QDoubleValidator::Notation" } + } + } + Component { + file: "private/qquickforeignutils_p.h" + name: "QInputMethod" + prototype: "QObject" + exports: ["QtQuick/InputMethod 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Enum { + name: "Action" + values: ["Click", "ContextMenu"] + } + Property { name: "cursorRectangle"; type: "QRectF"; isReadonly: true } + Property { name: "anchorRectangle"; type: "QRectF"; isReadonly: true } + Property { name: "keyboardRectangle"; type: "QRectF"; isReadonly: true } + Property { name: "inputItemClipRectangle"; type: "QRectF"; isReadonly: true } + Property { name: "visible"; type: "bool"; isReadonly: true } + Property { name: "animating"; type: "bool"; isReadonly: true } + Property { name: "locale"; type: "QLocale"; isReadonly: true } + Property { name: "inputDirection"; type: "Qt::LayoutDirection"; isReadonly: true } + Signal { + name: "inputDirectionChanged" + Parameter { name: "newDirection"; type: "Qt::LayoutDirection" } + } + Method { name: "show" } + Method { name: "hide" } + Method { + name: "update" + Parameter { name: "queries"; type: "Qt::InputMethodQueries" } + } + Method { name: "reset" } + Method { name: "commit" } + Method { + name: "invokeAction" + Parameter { name: "a"; type: "Action" } + Parameter { name: "cursorPosition"; type: "int" } + } + } + Component { + name: "QIntValidator" + prototype: "QValidator" + Property { name: "bottom"; type: "int" } + Property { name: "top"; type: "int" } + Signal { + name: "bottomChanged" + Parameter { name: "bottom"; type: "int" } + } + Signal { + name: "topChanged" + Parameter { name: "top"; type: "int" } + } + } + Component { + file: "private/qquickforeignutils_p.h" + name: "QKeySequence" + exports: ["QtQuick/StandardKey 2.2"] + isCreatable: false + exportMetaObjectRevisions: [2] + Enum { + name: "StandardKey" + values: [ + "UnknownKey", + "HelpContents", + "WhatsThis", + "Open", + "Close", + "Save", + "New", + "Delete", + "Cut", + "Copy", + "Paste", + "Undo", + "Redo", + "Back", + "Forward", + "Refresh", + "ZoomIn", + "ZoomOut", + "Print", + "AddTab", + "NextChild", + "PreviousChild", + "Find", + "FindNext", + "FindPrevious", + "Replace", + "SelectAll", + "Bold", + "Italic", + "Underline", + "MoveToNextChar", + "MoveToPreviousChar", + "MoveToNextWord", + "MoveToPreviousWord", + "MoveToNextLine", + "MoveToPreviousLine", + "MoveToNextPage", + "MoveToPreviousPage", + "MoveToStartOfLine", + "MoveToEndOfLine", + "MoveToStartOfBlock", + "MoveToEndOfBlock", + "MoveToStartOfDocument", + "MoveToEndOfDocument", + "SelectNextChar", + "SelectPreviousChar", + "SelectNextWord", + "SelectPreviousWord", + "SelectNextLine", + "SelectPreviousLine", + "SelectNextPage", + "SelectPreviousPage", + "SelectStartOfLine", + "SelectEndOfLine", + "SelectStartOfBlock", + "SelectEndOfBlock", + "SelectStartOfDocument", + "SelectEndOfDocument", + "DeleteStartOfWord", + "DeleteEndOfWord", + "DeleteEndOfLine", + "InsertParagraphSeparator", + "InsertLineSeparator", + "SaveAs", + "Preferences", + "Quit", + "FullScreen", + "Deselect", + "DeleteCompleteLine", + "Backspace", + "Cancel" + ] + } + } + Component { + file: "private/qquickitemsmodule_p.h" + name: "QPointingDeviceUniqueId" + exports: ["QtQuick/PointingDeviceUniqueId 2.9"] + isCreatable: false + exportMetaObjectRevisions: [9] + Property { name: "numericId"; type: "qlonglong"; isReadonly: true } + } + Component { + name: "QQmlApplication" + prototype: "QObject" + Property { name: "arguments"; type: "QStringList"; isReadonly: true } + Property { name: "name"; type: "string" } + Property { name: "version"; type: "string" } + Property { name: "organization"; type: "string" } + Property { name: "domain"; type: "string" } + Signal { name: "aboutToQuit" } + Method { + name: "setName" + Parameter { name: "arg"; type: "string" } + } + Method { + name: "setVersion" + Parameter { name: "arg"; type: "string" } + } + Method { + name: "setOrganization" + Parameter { name: "arg"; type: "string" } + } + Method { + name: "setDomain" + Parameter { name: "arg"; type: "string" } + } + } + Component { + file: "private/qquickanimation_p.h" + name: "QQuickAbstractAnimation" + prototype: "QObject" + exports: ["QtQuick/Animation 2.0", "QtQuick/Animation 2.12"] + isCreatable: false + exportMetaObjectRevisions: [0, 12] + Enum { + name: "Loops" + values: ["Infinite"] + } + Property { name: "running"; type: "bool" } + Property { name: "paused"; type: "bool" } + Property { name: "alwaysRunToEnd"; type: "bool" } + Property { name: "loops"; type: "int" } + Signal { name: "started" } + Signal { name: "stopped" } + Signal { + name: "runningChanged" + Parameter { type: "bool" } + } + Signal { + name: "pausedChanged" + Parameter { type: "bool" } + } + Signal { + name: "alwaysRunToEndChanged" + Parameter { type: "bool" } + } + Signal { + name: "loopCountChanged" + Parameter { type: "int" } + } + Signal { name: "finished"; revision: 12 } + Method { name: "restart" } + Method { name: "start" } + Method { name: "pause" } + Method { name: "resume" } + Method { name: "stop" } + Method { name: "complete" } + Method { name: "componentFinalized" } + } + Component { + file: "private/qquickaccessibleattached_p.h" + name: "QQuickAccessibleAttached" + prototype: "QObject" + exports: ["QtQuick/Accessible 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + attachedType: "QQuickAccessibleAttached" + Property { name: "role"; type: "QAccessible::Role" } + Property { name: "name"; type: "string" } + Property { name: "description"; type: "string" } + Property { name: "ignored"; type: "bool" } + Property { name: "checkable"; type: "bool" } + Property { name: "checked"; type: "bool" } + Property { name: "editable"; type: "bool" } + Property { name: "focusable"; type: "bool" } + Property { name: "focused"; type: "bool" } + Property { name: "multiLine"; type: "bool" } + Property { name: "readOnly"; type: "bool" } + Property { name: "selected"; type: "bool" } + Property { name: "selectable"; type: "bool" } + Property { name: "pressed"; type: "bool" } + Property { name: "checkStateMixed"; type: "bool" } + Property { name: "defaultButton"; type: "bool" } + Property { name: "passwordEdit"; type: "bool" } + Property { name: "selectableText"; type: "bool" } + Property { name: "searchEdit"; type: "bool" } + Signal { + name: "checkableChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "checkedChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "editableChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "focusableChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "focusedChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "multiLineChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "readOnlyChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "selectedChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "selectableChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "pressedChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "checkStateMixedChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "defaultButtonChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "passwordEditChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "selectableTextChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "searchEditChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { name: "pressAction" } + Signal { name: "toggleAction" } + Signal { name: "increaseAction" } + Signal { name: "decreaseAction" } + Signal { name: "scrollUpAction" } + Signal { name: "scrollDownAction" } + Signal { name: "scrollLeftAction" } + Signal { name: "scrollRightAction" } + Signal { name: "previousPageAction" } + Signal { name: "nextPageAction" } + Method { name: "valueChanged" } + Method { name: "cursorPositionChanged" } + Method { + name: "setIgnored" + Parameter { name: "ignored"; type: "bool" } + } + } + Component { + file: "private/qquickitemanimation_p.h" + name: "QQuickAnchorAnimation" + prototype: "QQuickAbstractAnimation" + exports: [ + "QtQuick/AnchorAnimation 2.0", + "QtQuick/AnchorAnimation 2.12" + ] + exportMetaObjectRevisions: [0, 12] + Property { name: "targets"; type: "QQuickItem"; isList: true; isReadonly: true } + Property { name: "duration"; type: "int" } + Property { name: "easing"; type: "QEasingCurve" } + Signal { + name: "durationChanged" + Parameter { type: "int" } + } + Signal { + name: "easingChanged" + Parameter { type: "QEasingCurve" } + } + } + Component { + file: "private/qquickstateoperations_p.h" + name: "QQuickAnchorChanges" + prototype: "QQuickStateOperation" + exports: ["QtQuick/AnchorChanges 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "target"; type: "QQuickItem"; isPointer: true } + Property { name: "anchors"; type: "QQuickAnchorSet"; isReadonly: true; isPointer: true } + } + Component { + file: "private/qquickstateoperations_p.h" + name: "QQuickAnchorSet" + prototype: "QObject" + Property { name: "left"; type: "QQmlScriptString" } + Property { name: "right"; type: "QQmlScriptString" } + Property { name: "horizontalCenter"; type: "QQmlScriptString" } + Property { name: "top"; type: "QQmlScriptString" } + Property { name: "bottom"; type: "QQmlScriptString" } + Property { name: "verticalCenter"; type: "QQmlScriptString" } + Property { name: "baseline"; type: "QQmlScriptString" } + } + Component { + file: "private/qquickanchors_p.h" + name: "QQuickAnchors" + prototype: "QObject" + Enum { + name: "Anchors" + alias: "Anchor" + isFlag: true + values: [ + "InvalidAnchor", + "LeftAnchor", + "RightAnchor", + "TopAnchor", + "BottomAnchor", + "HCenterAnchor", + "VCenterAnchor", + "BaselineAnchor", + "Horizontal_Mask", + "Vertical_Mask" + ] + } + Property { name: "left"; type: "QQuickAnchorLine" } + Property { name: "right"; type: "QQuickAnchorLine" } + Property { name: "horizontalCenter"; type: "QQuickAnchorLine" } + Property { name: "top"; type: "QQuickAnchorLine" } + Property { name: "bottom"; type: "QQuickAnchorLine" } + Property { name: "verticalCenter"; type: "QQuickAnchorLine" } + Property { name: "baseline"; type: "QQuickAnchorLine" } + Property { name: "margins"; type: "double" } + Property { name: "leftMargin"; type: "double" } + Property { name: "rightMargin"; type: "double" } + Property { name: "horizontalCenterOffset"; type: "double" } + Property { name: "topMargin"; type: "double" } + Property { name: "bottomMargin"; type: "double" } + Property { name: "verticalCenterOffset"; type: "double" } + Property { name: "baselineOffset"; type: "double" } + Property { name: "fill"; type: "QQuickItem"; isPointer: true } + Property { name: "centerIn"; type: "QQuickItem"; isPointer: true } + Property { name: "alignWhenCentered"; type: "bool" } + Signal { name: "centerAlignedChanged" } + } + Component { + file: "private/qquickanimatedimage_p.h" + name: "QQuickAnimatedImage" + prototype: "QQuickImage" + exports: [ + "QtQuick/AnimatedImage 2.0", + "QtQuick/AnimatedImage 2.1", + "QtQuick/AnimatedImage 2.11", + "QtQuick/AnimatedImage 2.14", + "QtQuick/AnimatedImage 2.15", + "QtQuick/AnimatedImage 2.3", + "QtQuick/AnimatedImage 2.4", + "QtQuick/AnimatedImage 2.5", + "QtQuick/AnimatedImage 2.7" + ] + exportMetaObjectRevisions: [0, 1, 11, 14, 15, 3, 4, 5, 7] + Property { name: "playing"; type: "bool" } + Property { name: "paused"; type: "bool" } + Property { name: "currentFrame"; type: "int" } + Property { name: "frameCount"; type: "int"; isReadonly: true } + Property { name: "speed"; revision: 11; type: "double" } + Property { name: "sourceSize"; type: "QSize"; isReadonly: true } + Signal { name: "frameChanged" } + Signal { name: "currentFrameChanged" } + Signal { name: "speedChanged"; revision: 11 } + Method { name: "movieUpdate" } + Method { name: "movieRequestFinished" } + Method { name: "playingStatusChanged" } + Method { name: "onCacheChanged" } + } + Component { + file: "private/qquickanimatedsprite_p.h" + name: "QQuickAnimatedSprite" + defaultProperty: "data" + prototype: "QQuickItem" + exports: [ + "QtQuick/AnimatedSprite 2.0", + "QtQuick/AnimatedSprite 2.1", + "QtQuick/AnimatedSprite 2.11", + "QtQuick/AnimatedSprite 2.12", + "QtQuick/AnimatedSprite 2.15", + "QtQuick/AnimatedSprite 2.4", + "QtQuick/AnimatedSprite 2.7" + ] + exportMetaObjectRevisions: [0, 1, 11, 12, 15, 4, 7] + Enum { + name: "LoopParameters" + values: ["Infinite"] + } + Enum { + name: "FinishBehavior" + values: ["FinishAtInitialFrame", "FinishAtFinalFrame"] + } + Property { name: "running"; type: "bool" } + Property { name: "interpolate"; type: "bool" } + Property { name: "source"; type: "QUrl" } + Property { name: "reverse"; type: "bool" } + Property { name: "frameSync"; type: "bool" } + Property { name: "frameCount"; type: "int" } + Property { name: "frameHeight"; type: "int" } + Property { name: "frameWidth"; type: "int" } + Property { name: "frameX"; type: "int" } + Property { name: "frameY"; type: "int" } + Property { name: "frameRate"; type: "double" } + Property { name: "frameDuration"; type: "int" } + Property { name: "loops"; type: "int" } + Property { name: "paused"; type: "bool" } + Property { name: "currentFrame"; type: "int" } + Property { name: "finishBehavior"; revision: 15; type: "FinishBehavior" } + Signal { + name: "pausedChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "runningChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "interpolateChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "sourceChanged" + Parameter { name: "arg"; type: "QUrl" } + } + Signal { + name: "reverseChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "frameSyncChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "frameCountChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "frameHeightChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "frameWidthChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "frameXChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "frameYChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "frameRateChanged" + Parameter { name: "arg"; type: "double" } + } + Signal { + name: "frameDurationChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "loopsChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "currentFrameChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "finishBehaviorChanged" + revision: 15 + Parameter { name: "arg"; type: "FinishBehavior" } + } + Signal { name: "finished"; revision: 12 } + Method { name: "start" } + Method { name: "stop" } + Method { name: "restart" } + Method { + name: "advance" + Parameter { name: "frames"; type: "int" } + } + Method { name: "advance" } + Method { name: "pause" } + Method { name: "resume" } + Method { + name: "setRunning" + Parameter { name: "arg"; type: "bool" } + } + Method { + name: "setPaused" + Parameter { name: "arg"; type: "bool" } + } + Method { + name: "setInterpolate" + Parameter { name: "arg"; type: "bool" } + } + Method { + name: "setSource" + Parameter { name: "arg"; type: "QUrl" } + } + Method { + name: "setReverse" + Parameter { name: "arg"; type: "bool" } + } + Method { + name: "setFrameSync" + Parameter { name: "arg"; type: "bool" } + } + Method { + name: "setFrameCount" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setFrameHeight" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setFrameWidth" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setFrameX" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setFrameY" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setFrameRate" + Parameter { name: "arg"; type: "double" } + } + Method { + name: "setFrameDuration" + Parameter { name: "arg"; type: "int" } + } + Method { name: "resetFrameRate" } + Method { name: "resetFrameDuration" } + Method { + name: "setLoops" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setCurrentFrame" + Parameter { name: "arg"; type: "int" } + } + Method { name: "createEngine" } + Method { name: "reset" } + } + Component { + file: "private/qquickanimationcontroller_p.h" + name: "QQuickAnimationController" + defaultProperty: "animation" + prototype: "QObject" + exports: ["QtQuick/AnimationController 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "progress"; type: "double" } + Property { name: "animation"; type: "QQuickAbstractAnimation"; isPointer: true } + Method { name: "reload" } + Method { name: "completeToBeginning" } + Method { name: "completeToEnd" } + Method { name: "componentFinalized" } + Method { name: "updateProgress" } + } + Component { + file: "private/qquickanimation_p.h" + name: "QQuickAnimationGroup" + defaultProperty: "animations" + prototype: "QQuickAbstractAnimation" + Property { name: "animations"; type: "QQuickAbstractAnimation"; isList: true; isReadonly: true } + } + Component { + file: "private/qquickanimator_p.h" + name: "QQuickAnimator" + prototype: "QQuickAbstractAnimation" + exports: ["QtQuick/Animator 2.12", "QtQuick/Animator 2.2"] + isCreatable: false + exportMetaObjectRevisions: [12, 2] + Property { name: "target"; type: "QQuickItem"; isPointer: true } + Property { name: "easing"; type: "QEasingCurve" } + Property { name: "duration"; type: "int" } + Property { name: "to"; type: "double" } + Property { name: "from"; type: "double" } + Signal { + name: "targetItemChanged" + Parameter { type: "QQuickItem"; isPointer: true } + } + Signal { + name: "durationChanged" + Parameter { name: "duration"; type: "int" } + } + Signal { + name: "easingChanged" + Parameter { name: "curve"; type: "QEasingCurve" } + } + Signal { + name: "toChanged" + Parameter { name: "to"; type: "double" } + } + Signal { + name: "fromChanged" + Parameter { name: "from"; type: "double" } + } + } + Component { + file: "private/qquickapplication_p.h" + name: "QQuickApplication" + prototype: "QQmlApplication" + exports: ["QtQuick/Application 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Property { name: "active"; type: "bool"; isReadonly: true } + Property { name: "layoutDirection"; type: "Qt::LayoutDirection"; isReadonly: true } + Property { name: "supportsMultipleWindows"; type: "bool"; isReadonly: true } + Property { name: "state"; type: "Qt::ApplicationState"; isReadonly: true } + Property { name: "font"; type: "QFont"; isReadonly: true } + Property { name: "displayName"; type: "string" } + Property { name: "screens"; type: "QQuickScreenInfo"; isList: true; isReadonly: true } + Signal { + name: "stateChanged" + Parameter { name: "state"; type: "Qt::ApplicationState" } + } + Method { name: "updateScreens" } + } + Component { + file: "private/qquickpositioners_p.h" + name: "QQuickBasePositioner" + prototype: "QQuickImplicitSizeItem" + exports: [ + "QtQuick/Positioner 2.0", + "QtQuick/Positioner 2.1", + "QtQuick/Positioner 2.11", + "QtQuick/Positioner 2.4", + "QtQuick/Positioner 2.6", + "QtQuick/Positioner 2.7", + "QtQuick/Positioner 2.9" + ] + isCreatable: false + exportMetaObjectRevisions: [0, 1, 11, 4, 6, 7, 9] + attachedType: "QQuickPositionerAttached" + Property { name: "spacing"; type: "double" } + Property { name: "populate"; type: "QQuickTransition"; isPointer: true } + Property { name: "move"; type: "QQuickTransition"; isPointer: true } + Property { name: "add"; type: "QQuickTransition"; isPointer: true } + Property { name: "padding"; revision: 6; type: "double" } + Property { name: "topPadding"; revision: 6; type: "double" } + Property { name: "leftPadding"; revision: 6; type: "double" } + Property { name: "rightPadding"; revision: 6; type: "double" } + Property { name: "bottomPadding"; revision: 6; type: "double" } + Signal { name: "paddingChanged"; revision: 6 } + Signal { name: "topPaddingChanged"; revision: 6 } + Signal { name: "leftPaddingChanged"; revision: 6 } + Signal { name: "rightPaddingChanged"; revision: 6 } + Signal { name: "bottomPaddingChanged"; revision: 6 } + Signal { name: "positioningComplete"; revision: 9 } + Method { name: "prePositioning" } + Method { name: "forceLayout"; revision: 9 } + } + Component { + file: "private/qquickbehavior_p.h" + name: "QQuickBehavior" + defaultProperty: "animation" + prototype: "QObject" + exports: [ + "QtQuick/Behavior 2.0", + "QtQuick/Behavior 2.13", + "QtQuick/Behavior 2.15" + ] + exportMetaObjectRevisions: [0, 13, 15] + Property { name: "animation"; type: "QQuickAbstractAnimation"; isPointer: true } + Property { name: "enabled"; type: "bool" } + Property { name: "targetValue"; revision: 13; type: "QVariant"; isReadonly: true } + Property { name: "targetProperty"; revision: 15; type: "QQmlProperty"; isReadonly: true } + Method { name: "componentFinalized" } + } + Component { + file: "private/qquickborderimage_p.h" + name: "QQuickBorderImage" + prototype: "QQuickImageBase" + exports: [ + "QtQuick/BorderImage 2.0", + "QtQuick/BorderImage 2.1", + "QtQuick/BorderImage 2.11", + "QtQuick/BorderImage 2.14", + "QtQuick/BorderImage 2.15", + "QtQuick/BorderImage 2.4", + "QtQuick/BorderImage 2.7" + ] + exportMetaObjectRevisions: [0, 1, 11, 14, 15, 4, 7] + Enum { + name: "TileMode" + values: ["Stretch", "Repeat", "Round"] + } + Property { name: "border"; type: "QQuickScaleGrid"; isReadonly: true; isPointer: true } + Property { name: "horizontalTileMode"; type: "TileMode" } + Property { name: "verticalTileMode"; type: "TileMode" } + Property { name: "sourceSize"; type: "QSize"; isReadonly: true } + Method { name: "doUpdate" } + Method { name: "requestFinished" } + Method { name: "sciRequestFinished" } + } + Component { + file: "private/qquickshadereffectmesh_p.h" + name: "QQuickBorderImageMesh" + prototype: "QQuickShaderEffectMesh" + exports: ["QtQuick/BorderImageMesh 2.8"] + exportMetaObjectRevisions: [8] + Enum { + name: "TileMode" + values: ["Stretch", "Repeat", "Round"] + } + Property { name: "border"; type: "QQuickScaleGrid"; isReadonly: true; isPointer: true } + Property { name: "size"; type: "QSize" } + Property { name: "horizontalTileMode"; type: "TileMode" } + Property { name: "verticalTileMode"; type: "TileMode" } + } + Component { + file: "private/qquickcanvasitem_p.h" + name: "QQuickCanvasItem" + defaultProperty: "data" + prototype: "QQuickItem" + exports: [ + "QtQuick/Canvas 2.0", + "QtQuick/Canvas 2.1", + "QtQuick/Canvas 2.11", + "QtQuick/Canvas 2.4", + "QtQuick/Canvas 2.7" + ] + exportMetaObjectRevisions: [0, 1, 11, 4, 7] + Enum { + name: "RenderTarget" + values: ["Image", "FramebufferObject"] + } + Enum { + name: "RenderStrategy" + values: ["Immediate", "Threaded", "Cooperative"] + } + Property { name: "available"; type: "bool"; isReadonly: true } + Property { name: "contextType"; type: "string" } + Property { name: "context"; type: "QJSValue"; isReadonly: true } + Property { name: "canvasSize"; type: "QSizeF" } + Property { name: "tileSize"; type: "QSize" } + Property { name: "canvasWindow"; type: "QRectF" } + Property { name: "renderTarget"; type: "RenderTarget" } + Property { name: "renderStrategy"; type: "RenderStrategy" } + Signal { + name: "paint" + Parameter { name: "region"; type: "QRect" } + } + Signal { name: "painted" } + Signal { name: "imageLoaded" } + Method { + name: "loadImage" + Parameter { name: "url"; type: "QUrl" } + } + Method { + name: "unloadImage" + Parameter { name: "url"; type: "QUrl" } + } + Method { + name: "isImageLoaded" + type: "bool" + Parameter { name: "url"; type: "QUrl" } + } + Method { + name: "isImageLoading" + type: "bool" + Parameter { name: "url"; type: "QUrl" } + } + Method { + name: "isImageError" + type: "bool" + Parameter { name: "url"; type: "QUrl" } + } + Method { name: "sceneGraphInitialized" } + Method { name: "checkAnimationCallbacks" } + Method { name: "invalidateSceneGraph" } + Method { name: "schedulePolish" } + Method { + name: "getContext" + Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "requestAnimationFrame" + Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "cancelRequestAnimationFrame" + Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true } + } + Method { name: "requestPaint" } + Method { + name: "markDirty" + Parameter { name: "dirtyRect"; type: "QRectF" } + } + Method { name: "markDirty" } + Method { + name: "save" + type: "bool" + Parameter { name: "filename"; type: "string" } + } + Method { + name: "toDataURL" + type: "string" + Parameter { name: "type"; type: "string" } + } + Method { name: "toDataURL"; type: "string" } + Method { name: "delayedCreate" } + } + Component { + file: "private/qquickevents_p_p.h" + name: "QQuickCloseEvent" + prototype: "QObject" + Property { name: "accepted"; type: "bool" } + } + Component { + file: "private/qquickanimation_p.h" + name: "QQuickColorAnimation" + prototype: "QQuickPropertyAnimation" + exports: ["QtQuick/ColorAnimation 2.0", "QtQuick/ColorAnimation 2.12"] + exportMetaObjectRevisions: [0, 12] + Property { name: "from"; type: "QColor" } + Property { name: "to"; type: "QColor" } + } + Component { + file: "private/qquickvaluetypes_p.h" + name: "QQuickColorSpaceValueType" + exports: ["QtQuick/ColorSpace 2.15"] + isCreatable: false + exportMetaObjectRevisions: [15] + Enum { + name: "NamedColorSpace" + values: [ + "Unknown", + "SRgb", + "SRgbLinear", + "AdobeRgb", + "DisplayP3", + "ProPhotoRgb" + ] + } + Enum { + name: "Primaries" + values: ["Custom", "SRgb", "AdobeRgb", "DciP3D65", "ProPhotoRgb"] + } + Enum { + name: "TransferFunction" + values: ["Custom", "Linear", "Gamma", "SRgb", "ProPhotoRgb"] + } + Property { name: "namedColorSpace"; type: "NamedColorSpace" } + Property { name: "primaries"; type: "Primaries" } + Property { name: "transferFunction"; type: "TransferFunction" } + Property { name: "gamma"; type: "float" } + } + Component { + file: "private/qquickpositioners_p.h" + name: "QQuickColumn" + prototype: "QQuickBasePositioner" + exports: [ + "QtQuick/Column 2.0", + "QtQuick/Column 2.1", + "QtQuick/Column 2.11", + "QtQuick/Column 2.4", + "QtQuick/Column 2.6", + "QtQuick/Column 2.7", + "QtQuick/Column 2.9" + ] + exportMetaObjectRevisions: [0, 1, 11, 4, 6, 7, 9] + } + Component { + file: "private/qquickpath_p.h" + name: "QQuickCurve" + prototype: "QQuickPathElement" + Property { name: "x"; type: "double" } + Property { name: "y"; type: "double" } + Property { name: "relativeX"; type: "double" } + Property { name: "relativeY"; type: "double" } + } + Component { + file: "private/qquickvalidator_p.h" + name: "QQuickDoubleValidator" + prototype: "QDoubleValidator" + exports: ["QtQuick/DoubleValidator 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "locale"; type: "string" } + Signal { name: "localeNameChanged" } + } + Component { + file: "private/qquickdrag_p.h" + name: "QQuickDrag" + prototype: "QObject" + exports: ["QtQuick/Drag 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + attachedType: "QQuickDragAttached" + Enum { + name: "DragType" + values: ["None", "Automatic", "Internal"] + } + Enum { + name: "Axis" + values: ["XAxis", "YAxis", "XAndYAxis", "XandYAxis"] + } + Property { name: "target"; type: "QQuickItem"; isPointer: true } + Property { name: "axis"; type: "Axis" } + Property { name: "minimumX"; type: "double" } + Property { name: "maximumX"; type: "double" } + Property { name: "minimumY"; type: "double" } + Property { name: "maximumY"; type: "double" } + Property { name: "active"; type: "bool"; isReadonly: true } + Property { name: "filterChildren"; type: "bool" } + Property { name: "smoothed"; type: "bool" } + Property { name: "threshold"; type: "double" } + } + Component { + file: "private/qquickdrag_p.h" + name: "QQuickDragAttached" + prototype: "QObject" + Property { name: "active"; type: "bool" } + Property { name: "source"; type: "QObject"; isPointer: true } + Property { name: "target"; type: "QObject"; isReadonly: true; isPointer: true } + Property { name: "hotSpot"; type: "QPointF" } + Property { name: "imageSource"; type: "QUrl" } + Property { name: "keys"; type: "QStringList" } + Property { name: "mimeData"; type: "QVariantMap" } + Property { name: "supportedActions"; type: "Qt::DropActions" } + Property { name: "proposedAction"; type: "Qt::DropAction" } + Property { name: "dragType"; type: "QQuickDrag::DragType" } + Signal { name: "dragStarted" } + Signal { + name: "dragFinished" + Parameter { name: "dropAction"; type: "Qt::DropAction" } + } + Method { + name: "start" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "startDrag" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { name: "cancel" } + Method { name: "drop"; type: "int" } + } + Component { + file: "private/qquickdragaxis_p.h" + name: "QQuickDragAxis" + prototype: "QObject" + exports: ["QtQuick/DragAxis 2.12"] + isCreatable: false + exportMetaObjectRevisions: [12] + Property { name: "minimum"; type: "double" } + Property { name: "maximum"; type: "double" } + Property { name: "enabled"; type: "bool" } + } + Component { + file: "private/qquickdraghandler_p.h" + name: "QQuickDragHandler" + prototype: "QQuickMultiPointHandler" + exports: [ + "QtQuick/DragHandler 2.12", + "QtQuick/DragHandler 2.14", + "QtQuick/DragHandler 2.15" + ] + exportMetaObjectRevisions: [12, 14, 15] + Enum { + name: "SnapMode" + values: [ + "NoSnap", + "SnapAuto", + "SnapIfPressedOutsideTarget", + "SnapAlways" + ] + } + Property { name: "xAxis"; type: "QQuickDragAxis"; isReadonly: true; isPointer: true } + Property { name: "yAxis"; type: "QQuickDragAxis"; isReadonly: true; isPointer: true } + Property { name: "translation"; type: "QVector2D"; isReadonly: true } + Property { name: "snapMode"; revision: 14; type: "SnapMode" } + Signal { name: "snapModeChanged"; revision: 14 } + } + Component { + file: "private/qquickdroparea_p.h" + name: "QQuickDropArea" + defaultProperty: "data" + prototype: "QQuickItem" + exports: [ + "QtQuick/DropArea 2.0", + "QtQuick/DropArea 2.1", + "QtQuick/DropArea 2.11", + "QtQuick/DropArea 2.4", + "QtQuick/DropArea 2.7" + ] + exportMetaObjectRevisions: [0, 1, 11, 4, 7] + Property { name: "containsDrag"; type: "bool"; isReadonly: true } + Property { name: "keys"; type: "QStringList" } + Property { name: "drag"; type: "QQuickDropAreaDrag"; isReadonly: true; isPointer: true } + Signal { name: "sourceChanged" } + Signal { + name: "entered" + Parameter { name: "drag"; type: "QQuickDropEvent"; isPointer: true } + } + Signal { name: "exited" } + Signal { + name: "positionChanged" + Parameter { name: "drag"; type: "QQuickDropEvent"; isPointer: true } + } + Signal { + name: "dropped" + Parameter { name: "drop"; type: "QQuickDropEvent"; isPointer: true } + } + } + Component { + file: "private/qquickdroparea_p.h" + name: "QQuickDropAreaDrag" + prototype: "QObject" + Property { name: "x"; type: "double"; isReadonly: true } + Property { name: "y"; type: "double"; isReadonly: true } + Property { name: "source"; type: "QObject"; isReadonly: true; isPointer: true } + Signal { name: "positionChanged" } + } + Component { + file: "private/qquickdroparea_p.h" + name: "QQuickDropEvent" + prototype: "QObject" + Property { name: "x"; type: "double"; isReadonly: true } + Property { name: "y"; type: "double"; isReadonly: true } + Property { name: "source"; type: "QObject"; isReadonly: true; isPointer: true } + Property { name: "keys"; type: "QStringList"; isReadonly: true } + Property { name: "supportedActions"; type: "Qt::DropActions"; isReadonly: true } + Property { name: "proposedAction"; type: "Qt::DropActions"; isReadonly: true } + Property { name: "action"; type: "Qt::DropAction" } + Property { name: "accepted"; type: "bool" } + Property { name: "hasColor"; type: "bool"; isReadonly: true } + Property { name: "hasHtml"; type: "bool"; isReadonly: true } + Property { name: "hasText"; type: "bool"; isReadonly: true } + Property { name: "hasUrls"; type: "bool"; isReadonly: true } + Property { name: "colorData"; type: "QVariant"; isReadonly: true } + Property { name: "html"; type: "string"; isReadonly: true } + Property { name: "text"; type: "string"; isReadonly: true } + Property { name: "urls"; type: "QList<QUrl>"; isReadonly: true } + Property { name: "formats"; type: "QStringList"; isReadonly: true } + Method { + name: "getDataAsString" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "getDataAsArrayBuffer" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "acceptProposedAction" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "accept" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + } + Component { + file: "private/qquickitem_p.h" + name: "QQuickEnterKeyAttached" + prototype: "QObject" + exports: ["QtQuick/EnterKey 2.6"] + isCreatable: false + exportMetaObjectRevisions: [6] + attachedType: "QQuickEnterKeyAttached" + Property { name: "type"; type: "Qt::EnterKeyType" } + } + Component { + file: "private/qquickevents_p_p.h" + name: "QQuickEventPoint" + prototype: "QObject" + exports: ["QtQuick/EventPoint 2.12"] + isCreatable: false + exportMetaObjectRevisions: [12] + Enum { + name: "States" + alias: "State" + isFlag: true + values: ["Pressed", "Updated", "Stationary", "Released"] + } + Enum { + name: "GrabTransition" + values: [ + "GrabPassive", + "UngrabPassive", + "CancelGrabPassive", + "OverrideGrabPassive", + "GrabExclusive", + "UngrabExclusive", + "CancelGrabExclusive" + ] + } + Property { name: "event"; type: "QQuickPointerEvent"; isReadonly: true; isPointer: true } + Property { name: "position"; type: "QPointF"; isReadonly: true } + Property { name: "scenePosition"; type: "QPointF"; isReadonly: true } + Property { name: "scenePressPosition"; type: "QPointF"; isReadonly: true } + Property { name: "sceneGrabPosition"; type: "QPointF"; isReadonly: true } + Property { name: "state"; type: "State"; isReadonly: true } + Property { name: "pointId"; type: "int"; isReadonly: true } + Property { name: "timeHeld"; type: "double"; isReadonly: true } + Property { name: "velocity"; type: "QVector2D"; isReadonly: true } + Property { name: "accepted"; type: "bool" } + Property { name: "exclusiveGrabber"; type: "QObject"; isPointer: true } + } + Component { + file: "private/qquickevents_p_p.h" + name: "QQuickEventTabletPoint" + prototype: "QQuickEventPoint" + exports: ["QtQuick/EventTabletPoint 2.15"] + isCreatable: false + exportMetaObjectRevisions: [15] + Property { name: "rotation"; type: "double"; isReadonly: true } + Property { name: "pressure"; type: "double"; isReadonly: true } + Property { name: "tangentialPressure"; type: "double"; isReadonly: true } + Property { name: "tilt"; type: "QVector2D"; isReadonly: true } + } + Component { + file: "private/qquickevents_p_p.h" + name: "QQuickEventTouchPoint" + prototype: "QQuickEventPoint" + exports: ["QtQuick/EventTouchPoint 2.12"] + isCreatable: false + exportMetaObjectRevisions: [12] + Property { name: "rotation"; type: "double"; isReadonly: true } + Property { name: "pressure"; type: "double"; isReadonly: true } + Property { name: "ellipseDiameters"; type: "QSizeF"; isReadonly: true } + Property { name: "uniqueId"; type: "QPointingDeviceUniqueId"; isReadonly: true } + } + Component { + file: "private/qquickflickable_p.h" + name: "QQuickFlickable" + defaultProperty: "flickableData" + prototype: "QQuickItem" + exports: [ + "QtQuick/Flickable 2.0", + "QtQuick/Flickable 2.1", + "QtQuick/Flickable 2.10", + "QtQuick/Flickable 2.11", + "QtQuick/Flickable 2.12", + "QtQuick/Flickable 2.4", + "QtQuick/Flickable 2.7", + "QtQuick/Flickable 2.9" + ] + exportMetaObjectRevisions: [0, 1, 10, 11, 12, 4, 7, 9] + Enum { + name: "BoundsBehavior" + alias: "BoundsBehaviorFlag" + isFlag: true + values: [ + "StopAtBounds", + "DragOverBounds", + "OvershootBounds", + "DragAndOvershootBounds" + ] + } + Enum { + name: "BoundsMovement" + values: ["FollowBoundsBehavior"] + } + Enum { + name: "FlickableDirection" + values: [ + "AutoFlickDirection", + "HorizontalFlick", + "VerticalFlick", + "HorizontalAndVerticalFlick", + "AutoFlickIfNeeded" + ] + } + Property { name: "contentWidth"; type: "double" } + Property { name: "contentHeight"; type: "double" } + Property { name: "contentX"; type: "double" } + Property { name: "contentY"; type: "double" } + Property { name: "contentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "topMargin"; type: "double" } + Property { name: "bottomMargin"; type: "double" } + Property { name: "originY"; type: "double"; isReadonly: true } + Property { name: "leftMargin"; type: "double" } + Property { name: "rightMargin"; type: "double" } + Property { name: "originX"; type: "double"; isReadonly: true } + Property { name: "horizontalVelocity"; type: "double"; isReadonly: true } + Property { name: "verticalVelocity"; type: "double"; isReadonly: true } + Property { name: "boundsBehavior"; type: "BoundsBehavior" } + Property { name: "boundsMovement"; revision: 10; type: "BoundsMovement" } + Property { name: "rebound"; type: "QQuickTransition"; isPointer: true } + Property { name: "maximumFlickVelocity"; type: "double" } + Property { name: "flickDeceleration"; type: "double" } + Property { name: "moving"; type: "bool"; isReadonly: true } + Property { name: "movingHorizontally"; type: "bool"; isReadonly: true } + Property { name: "movingVertically"; type: "bool"; isReadonly: true } + Property { name: "flicking"; type: "bool"; isReadonly: true } + Property { name: "flickingHorizontally"; type: "bool"; isReadonly: true } + Property { name: "flickingVertically"; type: "bool"; isReadonly: true } + Property { name: "dragging"; type: "bool"; isReadonly: true } + Property { name: "draggingHorizontally"; type: "bool"; isReadonly: true } + Property { name: "draggingVertically"; type: "bool"; isReadonly: true } + Property { name: "flickableDirection"; type: "FlickableDirection" } + Property { name: "interactive"; type: "bool" } + Property { name: "pressDelay"; type: "int" } + Property { name: "atXEnd"; type: "bool"; isReadonly: true } + Property { name: "atYEnd"; type: "bool"; isReadonly: true } + Property { name: "atXBeginning"; type: "bool"; isReadonly: true } + Property { name: "atYBeginning"; type: "bool"; isReadonly: true } + Property { + name: "visibleArea" + type: "QQuickFlickableVisibleArea" + isReadonly: true + isPointer: true + } + Property { name: "pixelAligned"; type: "bool" } + Property { name: "synchronousDrag"; revision: 12; type: "bool" } + Property { name: "horizontalOvershoot"; revision: 9; type: "double"; isReadonly: true } + Property { name: "verticalOvershoot"; revision: 9; type: "double"; isReadonly: true } + Property { name: "flickableData"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "flickableChildren"; type: "QQuickItem"; isList: true; isReadonly: true } + Signal { name: "isAtBoundaryChanged" } + Signal { name: "boundsMovementChanged"; revision: 10 } + Signal { name: "movementStarted" } + Signal { name: "movementEnded" } + Signal { name: "flickStarted" } + Signal { name: "flickEnded" } + Signal { name: "dragStarted" } + Signal { name: "dragEnded" } + Signal { name: "synchronousDragChanged"; revision: 12 } + Signal { name: "horizontalOvershootChanged"; revision: 9 } + Signal { name: "verticalOvershootChanged"; revision: 9 } + Method { name: "movementStarting" } + Method { name: "movementEnding" } + Method { + name: "movementEnding" + Parameter { name: "hMovementEnding"; type: "bool" } + Parameter { name: "vMovementEnding"; type: "bool" } + } + Method { name: "velocityTimelineCompleted" } + Method { name: "timelineCompleted" } + Method { + name: "resizeContent" + Parameter { name: "w"; type: "double" } + Parameter { name: "h"; type: "double" } + Parameter { name: "center"; type: "QPointF" } + } + Method { name: "returnToBounds" } + Method { + name: "flick" + Parameter { name: "xVelocity"; type: "double" } + Parameter { name: "yVelocity"; type: "double" } + } + Method { name: "cancelFlick" } + } + Component { + file: "private/qquickflickable_p_p.h" + name: "QQuickFlickableVisibleArea" + prototype: "QObject" + Property { name: "xPosition"; type: "double"; isReadonly: true } + Property { name: "yPosition"; type: "double"; isReadonly: true } + Property { name: "widthRatio"; type: "double"; isReadonly: true } + Property { name: "heightRatio"; type: "double"; isReadonly: true } + Signal { + name: "xPositionChanged" + Parameter { name: "xPosition"; type: "double" } + } + Signal { + name: "yPositionChanged" + Parameter { name: "yPosition"; type: "double" } + } + Signal { + name: "widthRatioChanged" + Parameter { name: "widthRatio"; type: "double" } + } + Signal { + name: "heightRatioChanged" + Parameter { name: "heightRatio"; type: "double" } + } + } + Component { + file: "private/qquickflipable_p.h" + name: "QQuickFlipable" + defaultProperty: "data" + prototype: "QQuickItem" + exports: [ + "QtQuick/Flipable 2.0", + "QtQuick/Flipable 2.1", + "QtQuick/Flipable 2.11", + "QtQuick/Flipable 2.4", + "QtQuick/Flipable 2.7" + ] + exportMetaObjectRevisions: [0, 1, 11, 4, 7] + Enum { + name: "Side" + values: ["Front", "Back"] + } + Property { name: "front"; type: "QQuickItem"; isPointer: true } + Property { name: "back"; type: "QQuickItem"; isPointer: true } + Property { name: "side"; type: "Side"; isReadonly: true } + Method { name: "retransformBack" } + } + Component { + file: "private/qquickpositioners_p.h" + name: "QQuickFlow" + prototype: "QQuickBasePositioner" + exports: [ + "QtQuick/Flow 2.0", + "QtQuick/Flow 2.1", + "QtQuick/Flow 2.11", + "QtQuick/Flow 2.4", + "QtQuick/Flow 2.6", + "QtQuick/Flow 2.7", + "QtQuick/Flow 2.9" + ] + exportMetaObjectRevisions: [0, 1, 11, 4, 6, 7, 9] + Enum { + name: "Flow" + values: ["LeftToRight", "TopToBottom"] + } + Property { name: "flow"; type: "Flow" } + Property { name: "layoutDirection"; type: "Qt::LayoutDirection" } + Property { name: "effectiveLayoutDirection"; type: "Qt::LayoutDirection"; isReadonly: true } + } + Component { + file: "private/qquickfocusscope_p.h" + name: "QQuickFocusScope" + defaultProperty: "data" + prototype: "QQuickItem" + exports: [ + "QtQuick/FocusScope 2.0", + "QtQuick/FocusScope 2.1", + "QtQuick/FocusScope 2.11", + "QtQuick/FocusScope 2.4", + "QtQuick/FocusScope 2.7" + ] + exportMetaObjectRevisions: [0, 1, 11, 4, 7] + } + Component { + file: "private/qquickfontloader_p.h" + name: "QQuickFontLoader" + prototype: "QObject" + exports: ["QtQuick/FontLoader 2.0"] + exportMetaObjectRevisions: [0] + Enum { + name: "Status" + values: ["Null", "Ready", "Loading", "Error"] + } + Property { name: "source"; type: "QUrl" } + Property { name: "name"; type: "string" } + Property { name: "status"; type: "Status"; isReadonly: true } + Method { + name: "updateFontInfo" + Parameter { type: "string" } + Parameter { type: "QQuickFontLoader::Status" } + } + } + Component { + file: "private/qquickfontmetrics_p.h" + name: "QQuickFontMetrics" + prototype: "QObject" + exports: ["QtQuick/FontMetrics 2.4"] + exportMetaObjectRevisions: [4] + Property { name: "font"; type: "QFont" } + Property { name: "ascent"; type: "double"; isReadonly: true } + Property { name: "descent"; type: "double"; isReadonly: true } + Property { name: "height"; type: "double"; isReadonly: true } + Property { name: "leading"; type: "double"; isReadonly: true } + Property { name: "lineSpacing"; type: "double"; isReadonly: true } + Property { name: "minimumLeftBearing"; type: "double"; isReadonly: true } + Property { name: "minimumRightBearing"; type: "double"; isReadonly: true } + Property { name: "maximumCharacterWidth"; type: "double"; isReadonly: true } + Property { name: "xHeight"; type: "double"; isReadonly: true } + Property { name: "averageCharacterWidth"; type: "double"; isReadonly: true } + Property { name: "underlinePosition"; type: "double"; isReadonly: true } + Property { name: "overlinePosition"; type: "double"; isReadonly: true } + Property { name: "strikeOutPosition"; type: "double"; isReadonly: true } + Property { name: "lineWidth"; type: "double"; isReadonly: true } + Signal { + name: "fontChanged" + Parameter { name: "font"; type: "QFont" } + } + Method { + name: "advanceWidth" + type: "double" + Parameter { name: "text"; type: "string" } + } + Method { + name: "boundingRect" + type: "QRectF" + Parameter { name: "text"; type: "string" } + } + Method { + name: "tightBoundingRect" + type: "QRectF" + Parameter { name: "text"; type: "string" } + } + Method { + name: "elidedText" + type: "string" + Parameter { name: "text"; type: "string" } + Parameter { name: "mode"; type: "Qt::TextElideMode" } + Parameter { name: "width"; type: "double" } + Parameter { name: "flags"; type: "int" } + } + Method { + name: "elidedText" + type: "string" + Parameter { name: "text"; type: "string" } + Parameter { name: "mode"; type: "Qt::TextElideMode" } + Parameter { name: "width"; type: "double" } + } + } + Component { + file: "private/qquickvaluetypes_p.h" + name: "QQuickFontValueType" + exports: ["QtQuick/Font 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Enum { + name: "FontWeight" + values: [ + "Thin", + "ExtraLight", + "Light", + "Normal", + "Medium", + "DemiBold", + "Bold", + "ExtraBold", + "Black" + ] + } + Enum { + name: "Capitalization" + values: [ + "MixedCase", + "AllUppercase", + "AllLowercase", + "SmallCaps", + "Capitalize" + ] + } + Enum { + name: "HintingPreference" + values: [ + "PreferDefaultHinting", + "PreferNoHinting", + "PreferVerticalHinting", + "PreferFullHinting" + ] + } + Property { name: "family"; type: "string" } + Property { name: "styleName"; type: "string" } + Property { name: "bold"; type: "bool" } + Property { name: "weight"; type: "FontWeight" } + Property { name: "italic"; type: "bool" } + Property { name: "underline"; type: "bool" } + Property { name: "overline"; type: "bool" } + Property { name: "strikeout"; type: "bool" } + Property { name: "pointSize"; type: "double" } + Property { name: "pixelSize"; type: "int" } + Property { name: "capitalization"; type: "Capitalization" } + Property { name: "letterSpacing"; type: "double" } + Property { name: "wordSpacing"; type: "double" } + Property { name: "hintingPreference"; type: "HintingPreference" } + Property { name: "kerning"; type: "bool" } + Property { name: "preferShaping"; type: "bool" } + Method { name: "toString"; type: "string" } + } + Component { + file: "private/qquickmultipointtoucharea_p.h" + name: "QQuickGrabGestureEvent" + prototype: "QObject" + exports: ["QtQuick/GestureEvent 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Property { name: "touchPoints"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "dragThreshold"; type: "double"; isReadonly: true } + Method { name: "grab" } + } + Component { + file: "private/qquickrectangle_p.h" + name: "QQuickGradient" + defaultProperty: "stops" + prototype: "QObject" + exports: ["QtQuick/Gradient 2.0", "QtQuick/Gradient 2.12"] + exportMetaObjectRevisions: [0, 12] + Enum { + name: "Orientation" + values: ["Vertical", "Horizontal"] + } + Property { name: "stops"; type: "QQuickGradientStop"; isList: true; isReadonly: true } + Property { name: "orientation"; revision: 12; type: "Orientation" } + Signal { name: "updated" } + } + Component { + file: "private/qquickrectangle_p.h" + name: "QQuickGradientStop" + prototype: "QObject" + exports: ["QtQuick/GradientStop 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "position"; type: "double" } + Property { name: "color"; type: "QColor" } + } + Component { + file: "private/qquickgraphicsinfo_p.h" + name: "QQuickGraphicsInfo" + prototype: "QObject" + exports: ["QtQuick/GraphicsInfo 2.8"] + isCreatable: false + exportMetaObjectRevisions: [8] + attachedType: "QQuickGraphicsInfo" + Enum { + name: "GraphicsApi" + values: [ + "Unknown", + "Software", + "OpenGL", + "Direct3D12", + "OpenVG", + "OpenGLRhi", + "Direct3D11Rhi", + "VulkanRhi", + "MetalRhi", + "NullRhi" + ] + } + Enum { + name: "ShaderType" + values: ["UnknownShadingLanguage", "GLSL", "HLSL", "RhiShader"] + } + Enum { + name: "ShaderCompilationType" + values: ["RuntimeCompilation", "OfflineCompilation"] + } + Enum { + name: "ShaderSourceType" + values: [ + "ShaderSourceString", + "ShaderSourceFile", + "ShaderByteCode" + ] + } + Enum { + name: "OpenGLContextProfile" + values: [ + "OpenGLNoProfile", + "OpenGLCoreProfile", + "OpenGLCompatibilityProfile" + ] + } + Enum { + name: "RenderableType" + values: [ + "SurfaceFormatUnspecified", + "SurfaceFormatOpenGL", + "SurfaceFormatOpenGLES" + ] + } + Property { name: "api"; type: "GraphicsApi"; isReadonly: true } + Property { name: "shaderType"; type: "ShaderType"; isReadonly: true } + Property { name: "shaderCompilationType"; type: "ShaderCompilationType"; isReadonly: true } + Property { name: "shaderSourceType"; type: "ShaderSourceType"; isReadonly: true } + Property { name: "majorVersion"; type: "int"; isReadonly: true } + Property { name: "minorVersion"; type: "int"; isReadonly: true } + Property { name: "profile"; type: "OpenGLContextProfile"; isReadonly: true } + Property { name: "renderableType"; type: "RenderableType"; isReadonly: true } + Method { name: "updateInfo" } + Method { + name: "setWindow" + Parameter { name: "window"; type: "QQuickWindow"; isPointer: true } + } + } + Component { + file: "private/qquickpositioners_p.h" + name: "QQuickGrid" + prototype: "QQuickBasePositioner" + exports: [ + "QtQuick/Grid 2.0", + "QtQuick/Grid 2.1", + "QtQuick/Grid 2.11", + "QtQuick/Grid 2.4", + "QtQuick/Grid 2.6", + "QtQuick/Grid 2.7", + "QtQuick/Grid 2.9" + ] + exportMetaObjectRevisions: [0, 1, 11, 4, 6, 7, 9] + Enum { + name: "Flow" + values: ["LeftToRight", "TopToBottom"] + } + Enum { + name: "HAlignment" + values: ["AlignLeft", "AlignRight", "AlignHCenter"] + } + Enum { + name: "VAlignment" + values: ["AlignTop", "AlignBottom", "AlignVCenter"] + } + Property { name: "rows"; type: "int" } + Property { name: "columns"; type: "int" } + Property { name: "rowSpacing"; type: "double" } + Property { name: "columnSpacing"; type: "double" } + Property { name: "flow"; type: "Flow" } + Property { name: "layoutDirection"; type: "Qt::LayoutDirection" } + Property { name: "effectiveLayoutDirection"; type: "Qt::LayoutDirection"; isReadonly: true } + Property { name: "horizontalItemAlignment"; revision: 1; type: "HAlignment" } + Property { + name: "effectiveHorizontalItemAlignment" + revision: 1 + type: "HAlignment" + isReadonly: true + } + Property { name: "verticalItemAlignment"; revision: 1; type: "VAlignment" } + Signal { + name: "horizontalAlignmentChanged" + revision: 1 + Parameter { name: "alignment"; type: "HAlignment" } + } + Signal { + name: "effectiveHorizontalAlignmentChanged" + revision: 1 + Parameter { name: "alignment"; type: "HAlignment" } + } + Signal { + name: "verticalAlignmentChanged" + revision: 1 + Parameter { name: "alignment"; type: "VAlignment" } + } + } + Component { + file: "private/qquickshadereffectmesh_p.h" + name: "QQuickGridMesh" + prototype: "QQuickShaderEffectMesh" + exports: ["QtQuick/GridMesh 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "resolution"; type: "QSize" } + } + Component { + file: "private/qquickgridview_p.h" + name: "QQuickGridView" + defaultProperty: "data" + prototype: "QQuickItemView" + exports: [ + "QtQuick/GridView 2.0", + "QtQuick/GridView 2.1", + "QtQuick/GridView 2.10", + "QtQuick/GridView 2.11", + "QtQuick/GridView 2.12", + "QtQuick/GridView 2.13", + "QtQuick/GridView 2.15", + "QtQuick/GridView 2.3", + "QtQuick/GridView 2.4", + "QtQuick/GridView 2.7", + "QtQuick/GridView 2.9" + ] + exportMetaObjectRevisions: [0, 1, 10, 11, 12, 13, 15, 3, 4, 7, 9] + attachedType: "QQuickGridViewAttached" + Enum { + name: "Flow" + values: ["FlowLeftToRight", "FlowTopToBottom"] + } + Enum { + name: "SnapMode" + values: ["NoSnap", "SnapToRow", "SnapOneRow"] + } + Property { name: "flow"; type: "Flow" } + Property { name: "cellWidth"; type: "double" } + Property { name: "cellHeight"; type: "double" } + Property { name: "snapMode"; type: "SnapMode" } + Signal { name: "highlightMoveDurationChanged" } + Method { name: "moveCurrentIndexUp" } + Method { name: "moveCurrentIndexDown" } + Method { name: "moveCurrentIndexLeft" } + Method { name: "moveCurrentIndexRight" } + } + Component { name: "QQuickGridViewAttached"; prototype: "QQuickItemViewAttached" } + Component { + file: "private/qquickhoverhandler_p.h" + name: "QQuickHoverHandler" + prototype: "QQuickSinglePointHandler" + exports: ["QtQuick/HoverHandler 2.12", "QtQuick/HoverHandler 2.15"] + exportMetaObjectRevisions: [12, 15] + Property { name: "hovered"; type: "bool"; isReadonly: true } + } + Component { + file: "private/qquickimage_p.h" + name: "QQuickImage" + prototype: "QQuickImageBase" + exports: [ + "QtQuick/Image 2.0", + "QtQuick/Image 2.1", + "QtQuick/Image 2.11", + "QtQuick/Image 2.14", + "QtQuick/Image 2.15", + "QtQuick/Image 2.3", + "QtQuick/Image 2.4", + "QtQuick/Image 2.5", + "QtQuick/Image 2.7" + ] + exportMetaObjectRevisions: [0, 1, 11, 14, 15, 3, 4, 5, 7] + Enum { + name: "HAlignment" + values: ["AlignLeft", "AlignRight", "AlignHCenter"] + } + Enum { + name: "VAlignment" + values: ["AlignTop", "AlignBottom", "AlignVCenter"] + } + Enum { + name: "FillMode" + values: [ + "Stretch", + "PreserveAspectFit", + "PreserveAspectCrop", + "Tile", + "TileVertically", + "TileHorizontally", + "Pad" + ] + } + Property { name: "fillMode"; type: "FillMode" } + Property { name: "paintedWidth"; type: "double"; isReadonly: true } + Property { name: "paintedHeight"; type: "double"; isReadonly: true } + Property { name: "horizontalAlignment"; type: "HAlignment" } + Property { name: "verticalAlignment"; type: "VAlignment" } + Property { name: "mipmap"; revision: 3; type: "bool" } + Property { name: "autoTransform"; revision: 5; type: "bool" } + Property { name: "sourceClipRect"; revision: 15; type: "QRectF" } + Signal { name: "paintedGeometryChanged" } + Signal { + name: "horizontalAlignmentChanged" + Parameter { name: "alignment"; type: "HAlignment" } + } + Signal { + name: "verticalAlignmentChanged" + Parameter { name: "alignment"; type: "VAlignment" } + } + Signal { + name: "mipmapChanged" + revision: 3 + Parameter { type: "bool" } + } + Signal { name: "autoTransformChanged"; revision: 5 } + Method { name: "invalidateSceneGraph" } + } + Component { + file: "private/qquickimagebase_p.h" + name: "QQuickImageBase" + prototype: "QQuickImplicitSizeItem" + exports: ["QtQuick/ImageBase 2.14", "QtQuick/ImageBase 2.15"] + isCreatable: false + exportMetaObjectRevisions: [14, 15] + Enum { + name: "LoadPixmapOptions" + alias: "LoadPixmapOption" + isFlag: true + values: ["NoOption", "HandleDPR", "UseProviderOptions"] + } + Enum { + name: "Status" + values: ["Null", "Ready", "Loading", "Error"] + } + Property { name: "status"; type: "Status"; isReadonly: true } + Property { name: "source"; type: "QUrl" } + Property { name: "progress"; type: "double"; isReadonly: true } + Property { name: "asynchronous"; type: "bool" } + Property { name: "cache"; type: "bool" } + Property { name: "sourceSize"; type: "QSize" } + Property { name: "mirror"; type: "bool" } + Property { name: "currentFrame"; revision: 14; type: "int" } + Property { name: "frameCount"; revision: 14; type: "int"; isReadonly: true } + Property { name: "colorSpace"; revision: 15; type: "QColorSpace" } + Signal { + name: "sourceChanged" + Parameter { type: "QUrl" } + } + Signal { + name: "statusChanged" + Parameter { type: "QQuickImageBase::Status" } + } + Signal { + name: "progressChanged" + Parameter { name: "progress"; type: "double" } + } + Signal { name: "currentFrameChanged"; revision: 14 } + Signal { name: "frameCountChanged"; revision: 14 } + Signal { name: "sourceClipRectChanged"; revision: 15 } + Signal { name: "colorSpaceChanged"; revision: 15 } + Method { name: "requestFinished" } + Method { + name: "requestProgress" + Parameter { type: "qlonglong" } + Parameter { type: "qlonglong" } + } + } + Component { + file: "qquickitem.h" + name: "QQuickImplicitSizeItem" + defaultProperty: "data" + prototype: "QQuickItem" + Property { name: "implicitWidth"; type: "double"; isReadonly: true } + Property { name: "implicitHeight"; type: "double"; isReadonly: true } + } + Component { + file: "private/qquickvalidator_p.h" + name: "QQuickIntValidator" + prototype: "QIntValidator" + exports: ["QtQuick/IntValidator 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "locale"; type: "string" } + Signal { name: "localeNameChanged" } + } + Component { + file: "qquickitem.h" + name: "QQuickItem" + defaultProperty: "data" + prototype: "QObject" + exports: [ + "QtQuick/Item 2.0", + "QtQuick/Item 2.1", + "QtQuick/Item 2.11", + "QtQuick/Item 2.4", + "QtQuick/Item 2.7" + ] + exportMetaObjectRevisions: [0, 1, 11, 4, 7] + Enum { + name: "Flags" + alias: "Flag" + isFlag: true + values: [ + "ItemClipsChildrenToShape", + "ItemAcceptsInputMethod", + "ItemIsFocusScope", + "ItemHasContents", + "ItemAcceptsDrops" + ] + } + Enum { + name: "TransformOrigin" + values: [ + "TopLeft", + "Top", + "TopRight", + "Left", + "Center", + "Right", + "BottomLeft", + "Bottom", + "BottomRight" + ] + } + Property { name: "parent"; type: "QQuickItem"; isPointer: true } + Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "resources"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "children"; type: "QQuickItem"; isList: true; isReadonly: true } + Property { name: "x"; type: "double" } + Property { name: "y"; type: "double" } + Property { name: "z"; type: "double" } + Property { name: "width"; type: "double" } + Property { name: "height"; type: "double" } + Property { name: "opacity"; type: "double" } + Property { name: "enabled"; type: "bool" } + Property { name: "visible"; type: "bool" } + Property { name: "visibleChildren"; type: "QQuickItem"; isList: true; isReadonly: true } + Property { name: "states"; type: "QQuickState"; isList: true; isReadonly: true } + Property { name: "transitions"; type: "QQuickTransition"; isList: true; isReadonly: true } + Property { name: "state"; type: "string" } + Property { name: "childrenRect"; type: "QRectF"; isReadonly: true } + Property { name: "anchors"; type: "QQuickAnchors"; isReadonly: true; isPointer: true } + Property { name: "left"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "right"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "horizontalCenter"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "top"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "bottom"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "verticalCenter"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "baseline"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "baselineOffset"; type: "double" } + Property { name: "clip"; type: "bool" } + Property { name: "focus"; type: "bool" } + Property { name: "activeFocus"; type: "bool"; isReadonly: true } + Property { name: "activeFocusOnTab"; revision: 1; type: "bool" } + Property { name: "rotation"; type: "double" } + Property { name: "scale"; type: "double" } + Property { name: "transformOrigin"; type: "TransformOrigin" } + Property { name: "transformOriginPoint"; type: "QPointF"; isReadonly: true } + Property { name: "transform"; type: "QQuickTransform"; isList: true; isReadonly: true } + Property { name: "smooth"; type: "bool" } + Property { name: "antialiasing"; type: "bool" } + Property { name: "implicitWidth"; type: "double" } + Property { name: "implicitHeight"; type: "double" } + Property { name: "containmentMask"; revision: 11; type: "QObject"; isPointer: true } + Property { name: "layer"; type: "QQuickItemLayer"; isReadonly: true; isPointer: true } + Signal { + name: "childrenRectChanged" + Parameter { type: "QRectF" } + } + Signal { + name: "baselineOffsetChanged" + Parameter { type: "double" } + } + Signal { + name: "stateChanged" + Parameter { type: "string" } + } + Signal { + name: "focusChanged" + Parameter { type: "bool" } + } + Signal { + name: "activeFocusChanged" + Parameter { type: "bool" } + } + Signal { + name: "activeFocusOnTabChanged" + revision: 1 + Parameter { type: "bool" } + } + Signal { + name: "parentChanged" + Parameter { type: "QQuickItem"; isPointer: true } + } + Signal { + name: "transformOriginChanged" + Parameter { type: "TransformOrigin" } + } + Signal { + name: "smoothChanged" + Parameter { type: "bool" } + } + Signal { + name: "antialiasingChanged" + Parameter { type: "bool" } + } + Signal { + name: "clipChanged" + Parameter { type: "bool" } + } + Signal { + name: "windowChanged" + revision: 1 + Parameter { name: "window"; type: "QQuickWindow"; isPointer: true } + } + Signal { name: "containmentMaskChanged"; revision: 11 } + Method { name: "update" } + Method { + name: "_q_resourceObjectDeleted" + Parameter { type: "QObject"; isPointer: true } + } + Method { + name: "_q_createJSWrapper" + type: "qulonglong" + Parameter { type: "QV4::ExecutionEngine"; isPointer: true } + } + Method { + name: "grabToImage" + revision: 4 + type: "bool" + Parameter { name: "callback"; type: "QJSValue" } + Parameter { name: "targetSize"; type: "QSize" } + } + Method { + name: "grabToImage" + revision: 4 + type: "bool" + Parameter { name: "callback"; type: "QJSValue" } + } + Method { + name: "contains" + type: "bool" + Parameter { name: "point"; type: "QPointF" } + } + Method { + name: "mapFromItem" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "mapToItem" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "mapFromGlobal" + revision: 7 + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "mapToGlobal" + revision: 7 + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { name: "forceActiveFocus" } + Method { + name: "forceActiveFocus" + Parameter { name: "reason"; type: "Qt::FocusReason" } + } + Method { + name: "nextItemInFocusChain" + revision: 1 + type: "QQuickItem*" + Parameter { name: "forward"; type: "bool" } + } + Method { name: "nextItemInFocusChain"; revision: 1; type: "QQuickItem*" } + Method { + name: "childAt" + type: "QQuickItem*" + Parameter { name: "x"; type: "double" } + Parameter { name: "y"; type: "double" } + } + } + Component { + file: "qquickitemgrabresult.h" + name: "QQuickItemGrabResult" + prototype: "QObject" + Property { name: "image"; type: "QImage"; isReadonly: true } + Property { name: "url"; type: "QUrl"; isReadonly: true } + Signal { name: "ready" } + Method { name: "setup" } + Method { name: "render" } + Method { + name: "saveToFile" + type: "bool" + Parameter { name: "fileName"; type: "string" } + } + Method { + name: "saveToFile" + type: "bool" + Parameter { name: "fileName"; type: "string" } + } + } + Component { + file: "private/qquickitem_p.h" + name: "QQuickItemLayer" + prototype: "QObject" + Property { name: "enabled"; type: "bool" } + Property { name: "textureSize"; type: "QSize" } + Property { name: "sourceRect"; type: "QRectF" } + Property { name: "mipmap"; type: "bool" } + Property { name: "smooth"; type: "bool" } + Property { name: "wrapMode"; type: "QQuickShaderEffectSource::WrapMode" } + Property { name: "format"; type: "QQuickShaderEffectSource::Format" } + Property { name: "samplerName"; type: "QByteArray" } + Property { name: "effect"; type: "QQmlComponent"; isPointer: true } + Property { name: "textureMirroring"; type: "QQuickShaderEffectSource::TextureMirroring" } + Property { name: "samples"; type: "int" } + Signal { + name: "enabledChanged" + Parameter { name: "enabled"; type: "bool" } + } + Signal { + name: "sizeChanged" + Parameter { name: "size"; type: "QSize" } + } + Signal { + name: "mipmapChanged" + Parameter { name: "mipmap"; type: "bool" } + } + Signal { + name: "wrapModeChanged" + Parameter { name: "mode"; type: "QQuickShaderEffectSource::WrapMode" } + } + Signal { + name: "nameChanged" + Parameter { name: "name"; type: "QByteArray" } + } + Signal { + name: "effectChanged" + Parameter { name: "component"; type: "QQmlComponent"; isPointer: true } + } + Signal { + name: "smoothChanged" + Parameter { name: "smooth"; type: "bool" } + } + Signal { + name: "formatChanged" + Parameter { name: "format"; type: "QQuickShaderEffectSource::Format" } + } + Signal { + name: "sourceRectChanged" + Parameter { name: "sourceRect"; type: "QRectF" } + } + Signal { + name: "textureMirroringChanged" + Parameter { name: "mirroring"; type: "QQuickShaderEffectSource::TextureMirroring" } + } + Signal { + name: "samplesChanged" + Parameter { name: "count"; type: "int" } + } + } + Component { + file: "private/qquickitemview_p.h" + name: "QQuickItemView" + defaultProperty: "flickableData" + prototype: "QQuickFlickable" + exports: [ + "QtQuick/ItemView 2.1", + "QtQuick/ItemView 2.10", + "QtQuick/ItemView 2.11", + "QtQuick/ItemView 2.12", + "QtQuick/ItemView 2.13", + "QtQuick/ItemView 2.15", + "QtQuick/ItemView 2.3", + "QtQuick/ItemView 2.4", + "QtQuick/ItemView 2.7", + "QtQuick/ItemView 2.9" + ] + isCreatable: false + exportMetaObjectRevisions: [1, 10, 11, 12, 13, 15, 3, 4, 7, 9] + Enum { + name: "LayoutDirection" + values: [ + "LeftToRight", + "RightToLeft", + "VerticalTopToBottom", + "VerticalBottomToTop" + ] + } + Enum { + name: "VerticalLayoutDirection" + values: ["TopToBottom", "BottomToTop"] + } + Enum { + name: "HighlightRangeMode" + values: ["NoHighlightRange", "ApplyRange", "StrictlyEnforceRange"] + } + Enum { + name: "PositionMode" + values: [ + "Beginning", + "Center", + "End", + "Visible", + "Contain", + "SnapPosition" + ] + } + Property { name: "model"; type: "QVariant" } + Property { name: "delegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "count"; type: "int"; isReadonly: true } + Property { name: "currentIndex"; type: "int" } + Property { name: "currentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "keyNavigationWraps"; type: "bool" } + Property { name: "keyNavigationEnabled"; revision: 7; type: "bool" } + Property { name: "cacheBuffer"; type: "int" } + Property { name: "displayMarginBeginning"; revision: 3; type: "int" } + Property { name: "displayMarginEnd"; revision: 3; type: "int" } + Property { name: "layoutDirection"; type: "Qt::LayoutDirection" } + Property { name: "effectiveLayoutDirection"; type: "Qt::LayoutDirection"; isReadonly: true } + Property { name: "verticalLayoutDirection"; type: "VerticalLayoutDirection" } + Property { name: "header"; type: "QQmlComponent"; isPointer: true } + Property { name: "headerItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "footer"; type: "QQmlComponent"; isPointer: true } + Property { name: "footerItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "populate"; type: "QQuickTransition"; isPointer: true } + Property { name: "add"; type: "QQuickTransition"; isPointer: true } + Property { name: "addDisplaced"; type: "QQuickTransition"; isPointer: true } + Property { name: "move"; type: "QQuickTransition"; isPointer: true } + Property { name: "moveDisplaced"; type: "QQuickTransition"; isPointer: true } + Property { name: "remove"; type: "QQuickTransition"; isPointer: true } + Property { name: "removeDisplaced"; type: "QQuickTransition"; isPointer: true } + Property { name: "displaced"; type: "QQuickTransition"; isPointer: true } + Property { name: "highlight"; type: "QQmlComponent"; isPointer: true } + Property { name: "highlightItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "highlightFollowsCurrentItem"; type: "bool" } + Property { name: "highlightRangeMode"; type: "HighlightRangeMode" } + Property { name: "preferredHighlightBegin"; type: "double" } + Property { name: "preferredHighlightEnd"; type: "double" } + Property { name: "highlightMoveDuration"; type: "int" } + Property { name: "reuseItems"; revision: 15; type: "bool" } + Signal { name: "keyNavigationEnabledChanged"; revision: 7 } + Signal { name: "populateTransitionChanged" } + Signal { name: "addTransitionChanged" } + Signal { name: "addDisplacedTransitionChanged" } + Signal { name: "moveTransitionChanged" } + Signal { name: "moveDisplacedTransitionChanged" } + Signal { name: "removeTransitionChanged" } + Signal { name: "removeDisplacedTransitionChanged" } + Signal { name: "displacedTransitionChanged" } + Signal { name: "reuseItemsChanged"; revision: 15 } + Method { name: "destroyRemoved" } + Method { + name: "createdItem" + Parameter { name: "index"; type: "int" } + Parameter { name: "item"; type: "QObject"; isPointer: true } + } + Method { + name: "initItem" + Parameter { name: "index"; type: "int" } + Parameter { name: "item"; type: "QObject"; isPointer: true } + } + Method { + name: "modelUpdated" + Parameter { name: "changeSet"; type: "QQmlChangeSet" } + Parameter { name: "reset"; type: "bool" } + } + Method { + name: "destroyingItem" + Parameter { name: "item"; type: "QObject"; isPointer: true } + } + Method { + name: "onItemPooled" + revision: 15 + Parameter { name: "modelIndex"; type: "int" } + Parameter { name: "object"; type: "QObject"; isPointer: true } + } + Method { + name: "onItemReused" + revision: 15 + Parameter { name: "modelIndex"; type: "int" } + Parameter { name: "object"; type: "QObject"; isPointer: true } + } + Method { name: "animStopped" } + Method { name: "trackedPositionChanged" } + Method { + name: "positionViewAtIndex" + Parameter { name: "index"; type: "int" } + Parameter { name: "mode"; type: "int" } + } + Method { + name: "indexAt" + type: "int" + Parameter { name: "x"; type: "double" } + Parameter { name: "y"; type: "double" } + } + Method { + name: "itemAt" + type: "QQuickItem*" + Parameter { name: "x"; type: "double" } + Parameter { name: "y"; type: "double" } + } + Method { + name: "itemAtIndex" + revision: 13 + type: "QQuickItem*" + Parameter { name: "index"; type: "int" } + } + Method { name: "positionViewAtBeginning" } + Method { name: "positionViewAtEnd" } + Method { name: "forceLayout"; revision: 1 } + } + Component { + name: "QQuickItemViewAttached" + prototype: "QObject" + Property { name: "view"; type: "QQuickItemView"; isReadonly: true; isPointer: true } + Property { name: "isCurrentItem"; type: "bool"; isReadonly: true } + Property { name: "delayRemove"; type: "bool" } + Property { name: "section"; type: "string"; isReadonly: true } + Property { name: "previousSection"; type: "string"; isReadonly: true } + Property { name: "nextSection"; type: "string"; isReadonly: true } + Signal { name: "currentItemChanged" } + Signal { name: "add" } + Signal { name: "remove" } + Signal { name: "prevSectionChanged" } + Signal { name: "pooled" } + Signal { name: "reused" } + } + Component { + file: "private/qquickevents_p_p.h" + name: "QQuickKeyEvent" + prototype: "QObject" + Property { name: "key"; type: "int"; isReadonly: true } + Property { name: "text"; type: "string"; isReadonly: true } + Property { name: "modifiers"; type: "int"; isReadonly: true } + Property { name: "isAutoRepeat"; type: "bool"; isReadonly: true } + Property { name: "count"; type: "int"; isReadonly: true } + Property { name: "nativeScanCode"; type: "uint"; isReadonly: true } + Property { name: "accepted"; type: "bool" } + Method { + name: "matches" + revision: 2 + type: "bool" + Parameter { name: "key"; type: "QKeySequence::StandardKey" } + } + } + Component { + file: "private/qquickitem_p.h" + name: "QQuickKeyNavigationAttached" + prototype: "QObject" + exports: ["QtQuick/KeyNavigation 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + attachedType: "QQuickKeyNavigationAttached" + Enum { + name: "Priority" + values: ["BeforeItem", "AfterItem"] + } + Property { name: "left"; type: "QQuickItem"; isPointer: true } + Property { name: "right"; type: "QQuickItem"; isPointer: true } + Property { name: "up"; type: "QQuickItem"; isPointer: true } + Property { name: "down"; type: "QQuickItem"; isPointer: true } + Property { name: "tab"; type: "QQuickItem"; isPointer: true } + Property { name: "backtab"; type: "QQuickItem"; isPointer: true } + Property { name: "priority"; type: "Priority" } + } + Component { + file: "private/qquickitem_p.h" + name: "QQuickKeysAttached" + prototype: "QObject" + exports: ["QtQuick/Keys 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + attachedType: "QQuickKeysAttached" + Enum { + name: "Priority" + values: ["BeforeItem", "AfterItem"] + } + Property { name: "enabled"; type: "bool" } + Property { name: "forwardTo"; type: "QQuickItem"; isList: true; isReadonly: true } + Property { name: "priority"; type: "Priority" } + Signal { + name: "pressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "released" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "shortcutOverride" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "digit0Pressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "digit1Pressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "digit2Pressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "digit3Pressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "digit4Pressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "digit5Pressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "digit6Pressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "digit7Pressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "digit8Pressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "digit9Pressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "leftPressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "rightPressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "upPressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "downPressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "tabPressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "backtabPressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "asteriskPressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "numberSignPressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "escapePressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "returnPressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "enterPressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "deletePressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "spacePressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "backPressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "cancelPressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "selectPressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "yesPressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "noPressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "context1Pressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "context2Pressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "context3Pressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "context4Pressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "callPressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "hangupPressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "flipPressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "menuPressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "volumeUpPressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + Signal { + name: "volumeDownPressed" + Parameter { name: "event"; type: "QQuickKeyEvent"; isPointer: true } + } + } + Component { + file: "private/qquickitem_p.h" + name: "QQuickLayoutMirroringAttached" + prototype: "QObject" + exports: ["QtQuick/LayoutMirroring 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + attachedType: "QQuickLayoutMirroringAttached" + Property { name: "enabled"; type: "bool" } + Property { name: "childrenInherit"; type: "bool" } + } + Component { + file: "private/qquicklistview_p.h" + name: "QQuickListView" + defaultProperty: "data" + prototype: "QQuickItemView" + exports: [ + "QtQuick/ListView 2.0", + "QtQuick/ListView 2.1", + "QtQuick/ListView 2.10", + "QtQuick/ListView 2.11", + "QtQuick/ListView 2.12", + "QtQuick/ListView 2.13", + "QtQuick/ListView 2.15", + "QtQuick/ListView 2.3", + "QtQuick/ListView 2.4", + "QtQuick/ListView 2.7", + "QtQuick/ListView 2.9" + ] + exportMetaObjectRevisions: [0, 1, 10, 11, 12, 13, 15, 3, 4, 7, 9] + attachedType: "QQuickListViewAttached" + Enum { + name: "Orientation" + values: ["Horizontal", "Vertical"] + } + Enum { + name: "SnapMode" + values: ["NoSnap", "SnapToItem", "SnapOneItem"] + } + Enum { + name: "HeaderPositioning" + values: ["InlineHeader", "OverlayHeader", "PullBackHeader"] + } + Enum { + name: "FooterPositioning" + values: ["InlineFooter", "OverlayFooter", "PullBackFooter"] + } + Property { name: "highlightMoveVelocity"; type: "double" } + Property { name: "highlightResizeVelocity"; type: "double" } + Property { name: "highlightResizeDuration"; type: "int" } + Property { name: "spacing"; type: "double" } + Property { name: "orientation"; type: "Orientation" } + Property { name: "section"; type: "QQuickViewSection"; isReadonly: true; isPointer: true } + Property { name: "currentSection"; type: "string"; isReadonly: true } + Property { name: "snapMode"; type: "SnapMode" } + Property { name: "headerPositioning"; revision: 4; type: "HeaderPositioning" } + Property { name: "footerPositioning"; revision: 4; type: "FooterPositioning" } + Signal { name: "headerPositioningChanged"; revision: 4 } + Signal { name: "footerPositioningChanged"; revision: 4 } + Method { name: "incrementCurrentIndex" } + Method { name: "decrementCurrentIndex" } + } + Component { name: "QQuickListViewAttached"; prototype: "QQuickItemViewAttached" } + Component { + file: "private/qquickloader_p.h" + name: "QQuickLoader" + prototype: "QQuickImplicitSizeItem" + exports: [ + "QtQuick/Loader 2.0", + "QtQuick/Loader 2.1", + "QtQuick/Loader 2.11", + "QtQuick/Loader 2.4", + "QtQuick/Loader 2.7" + ] + exportMetaObjectRevisions: [0, 1, 11, 4, 7] + Enum { + name: "Status" + values: ["Null", "Ready", "Loading", "Error"] + } + Property { name: "active"; type: "bool" } + Property { name: "source"; type: "QUrl" } + Property { name: "sourceComponent"; type: "QQmlComponent"; isPointer: true } + Property { name: "item"; type: "QObject"; isReadonly: true; isPointer: true } + Property { name: "status"; type: "Status"; isReadonly: true } + Property { name: "progress"; type: "double"; isReadonly: true } + Property { name: "asynchronous"; type: "bool" } + Signal { name: "loaded" } + Method { name: "_q_sourceLoaded" } + Method { name: "_q_updateSize" } + Method { + name: "setSource" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + } + Component { + file: "private/qquicktranslate_p.h" + name: "QQuickMatrix4x4" + prototype: "QQuickTransform" + exports: ["QtQuick/Matrix4x4 2.3"] + exportMetaObjectRevisions: [3] + Property { name: "matrix"; type: "QMatrix4x4" } + } + Component { + file: "private/qquickmousearea_p.h" + name: "QQuickMouseArea" + defaultProperty: "data" + prototype: "QQuickItem" + exports: [ + "QtQuick/MouseArea 2.0", + "QtQuick/MouseArea 2.1", + "QtQuick/MouseArea 2.11", + "QtQuick/MouseArea 2.4", + "QtQuick/MouseArea 2.5", + "QtQuick/MouseArea 2.7", + "QtQuick/MouseArea 2.9" + ] + exportMetaObjectRevisions: [0, 1, 11, 4, 5, 7, 9] + Property { name: "mouseX"; type: "double"; isReadonly: true } + Property { name: "mouseY"; type: "double"; isReadonly: true } + Property { name: "containsMouse"; type: "bool"; isReadonly: true } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "enabled"; type: "bool" } + Property { name: "scrollGestureEnabled"; revision: 5; type: "bool" } + Property { name: "pressedButtons"; type: "Qt::MouseButtons"; isReadonly: true } + Property { name: "acceptedButtons"; type: "Qt::MouseButtons" } + Property { name: "hoverEnabled"; type: "bool" } + Property { name: "drag"; type: "QQuickDrag"; isReadonly: true; isPointer: true } + Property { name: "preventStealing"; type: "bool" } + Property { name: "propagateComposedEvents"; type: "bool" } + Property { name: "cursorShape"; type: "Qt::CursorShape" } + Property { name: "containsPress"; revision: 4; type: "bool"; isReadonly: true } + Property { name: "pressAndHoldInterval"; revision: 9; type: "int" } + Signal { name: "hoveredChanged" } + Signal { name: "scrollGestureEnabledChanged"; revision: 5 } + Signal { + name: "positionChanged" + Parameter { name: "mouse"; type: "QQuickMouseEvent"; isPointer: true } + } + Signal { + name: "mouseXChanged" + Parameter { name: "mouse"; type: "QQuickMouseEvent"; isPointer: true } + } + Signal { + name: "mouseYChanged" + Parameter { name: "mouse"; type: "QQuickMouseEvent"; isPointer: true } + } + Signal { + name: "pressed" + Parameter { name: "mouse"; type: "QQuickMouseEvent"; isPointer: true } + } + Signal { + name: "pressAndHold" + Parameter { name: "mouse"; type: "QQuickMouseEvent"; isPointer: true } + } + Signal { + name: "released" + Parameter { name: "mouse"; type: "QQuickMouseEvent"; isPointer: true } + } + Signal { + name: "clicked" + Parameter { name: "mouse"; type: "QQuickMouseEvent"; isPointer: true } + } + Signal { + name: "doubleClicked" + Parameter { name: "mouse"; type: "QQuickMouseEvent"; isPointer: true } + } + Signal { + name: "wheel" + Parameter { name: "wheel"; type: "QQuickWheelEvent"; isPointer: true } + } + Signal { name: "entered" } + Signal { name: "exited" } + Signal { name: "canceled" } + Signal { name: "containsPressChanged"; revision: 4 } + Signal { name: "pressAndHoldIntervalChanged"; revision: 9 } + } + Component { + file: "private/qquickevents_p_p.h" + name: "QQuickMouseEvent" + prototype: "QObject" + Property { name: "x"; type: "double"; isReadonly: true } + Property { name: "y"; type: "double"; isReadonly: true } + Property { name: "button"; type: "int"; isReadonly: true } + Property { name: "buttons"; type: "int"; isReadonly: true } + Property { name: "modifiers"; type: "int"; isReadonly: true } + Property { name: "source"; revision: 7; type: "int"; isReadonly: true } + Property { name: "wasHeld"; type: "bool"; isReadonly: true } + Property { name: "isClick"; type: "bool"; isReadonly: true } + Property { name: "accepted"; type: "bool" } + Property { name: "flags"; revision: 11; type: "int"; isReadonly: true } + } + Component { + file: "private/qquickpointerhandler_p.h" + name: "QQuickMultiPointHandler" + prototype: "QQuickPointerDeviceHandler" + Property { name: "minimumPointCount"; type: "int" } + Property { name: "maximumPointCount"; type: "int" } + Property { name: "centroid"; type: "QQuickHandlerPoint"; isReadonly: true } + } + Component { + file: "private/qquickmultipointtoucharea_p.h" + name: "QQuickMultiPointTouchArea" + defaultProperty: "data" + prototype: "QQuickItem" + exports: [ + "QtQuick/MultiPointTouchArea 2.0", + "QtQuick/MultiPointTouchArea 2.1", + "QtQuick/MultiPointTouchArea 2.11", + "QtQuick/MultiPointTouchArea 2.4", + "QtQuick/MultiPointTouchArea 2.7" + ] + exportMetaObjectRevisions: [0, 1, 11, 4, 7] + Property { name: "touchPoints"; type: "QQuickTouchPoint"; isList: true; isReadonly: true } + Property { name: "minimumTouchPoints"; type: "int" } + Property { name: "maximumTouchPoints"; type: "int" } + Property { name: "mouseEnabled"; type: "bool" } + Signal { + name: "pressed" + Parameter { name: "touchPoints"; type: "QList<QObject*>" } + } + Signal { + name: "updated" + Parameter { name: "touchPoints"; type: "QList<QObject*>" } + } + Signal { + name: "released" + Parameter { name: "touchPoints"; type: "QList<QObject*>" } + } + Signal { + name: "canceled" + Parameter { name: "touchPoints"; type: "QList<QObject*>" } + } + Signal { + name: "gestureStarted" + Parameter { name: "gesture"; type: "QQuickGrabGestureEvent"; isPointer: true } + } + Signal { + name: "touchUpdated" + Parameter { name: "touchPoints"; type: "QList<QObject*>" } + } + } + Component { + file: "private/qquickanimation_p.h" + name: "QQuickNumberAnimation" + prototype: "QQuickPropertyAnimation" + exports: [ + "QtQuick/NumberAnimation 2.0", + "QtQuick/NumberAnimation 2.12" + ] + exportMetaObjectRevisions: [0, 12] + Property { name: "from"; type: "double" } + Property { name: "to"; type: "double" } + } + Component { + file: "private/qquickanimator_p.h" + name: "QQuickOpacityAnimator" + prototype: "QQuickAnimator" + exports: [ + "QtQuick/OpacityAnimator 2.12", + "QtQuick/OpacityAnimator 2.2" + ] + exportMetaObjectRevisions: [12, 2] + } + Component { + file: "private/qquickopenglinfo_p.h" + name: "QQuickOpenGLInfo" + prototype: "QObject" + exports: ["QtQuick/OpenGLInfo 2.4"] + isCreatable: false + exportMetaObjectRevisions: [4] + attachedType: "QQuickOpenGLInfo" + Enum { + name: "ContextProfile" + values: ["NoProfile", "CoreProfile", "CompatibilityProfile"] + } + Enum { + name: "RenderableType" + values: ["Unspecified", "OpenGL", "OpenGLES"] + } + Property { name: "majorVersion"; type: "int"; isReadonly: true } + Property { name: "minorVersion"; type: "int"; isReadonly: true } + Property { name: "profile"; type: "ContextProfile"; isReadonly: true } + Property { name: "renderableType"; type: "RenderableType"; isReadonly: true } + Method { name: "updateFormat" } + Method { + name: "setWindow" + Parameter { name: "window"; type: "QQuickWindow"; isPointer: true } + } + } + Component { + file: "qquickpainteditem.h" + name: "QQuickPaintedItem" + defaultProperty: "data" + prototype: "QQuickItem" + exports: [ + "QtQuick/PaintedItem 2.0", + "QtQuick/PaintedItem 2.1", + "QtQuick/PaintedItem 2.11", + "QtQuick/PaintedItem 2.4", + "QtQuick/PaintedItem 2.7" + ] + isCreatable: false + exportMetaObjectRevisions: [0, 1, 11, 4, 7] + Enum { + name: "RenderTarget" + values: [ + "Image", + "FramebufferObject", + "InvertedYFramebufferObject" + ] + } + Enum { + name: "PerformanceHints" + alias: "PerformanceHint" + isFlag: true + values: ["FastFBOResizing"] + } + Property { name: "contentsSize"; type: "QSize" } + Property { name: "fillColor"; type: "QColor" } + Property { name: "contentsScale"; type: "double" } + Property { name: "renderTarget"; type: "RenderTarget" } + Property { name: "textureSize"; type: "QSize" } + Method { name: "invalidateSceneGraph" } + } + Component { + file: "private/qquickanimation_p.h" + name: "QQuickParallelAnimation" + defaultProperty: "animations" + prototype: "QQuickAnimationGroup" + exports: [ + "QtQuick/ParallelAnimation 2.0", + "QtQuick/ParallelAnimation 2.12" + ] + exportMetaObjectRevisions: [0, 12] + } + Component { + file: "private/qquickitemanimation_p.h" + name: "QQuickParentAnimation" + defaultProperty: "animations" + prototype: "QQuickAnimationGroup" + exports: [ + "QtQuick/ParentAnimation 2.0", + "QtQuick/ParentAnimation 2.12" + ] + exportMetaObjectRevisions: [0, 12] + Property { name: "target"; type: "QQuickItem"; isPointer: true } + Property { name: "newParent"; type: "QQuickItem"; isPointer: true } + Property { name: "via"; type: "QQuickItem"; isPointer: true } + } + Component { + file: "private/qquickstateoperations_p.h" + name: "QQuickParentChange" + prototype: "QQuickStateOperation" + exports: ["QtQuick/ParentChange 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "target"; type: "QQuickItem"; isPointer: true } + Property { name: "parent"; type: "QQuickItem"; isPointer: true } + Property { name: "x"; type: "QQmlScriptString" } + Property { name: "y"; type: "QQmlScriptString" } + Property { name: "width"; type: "QQmlScriptString" } + Property { name: "height"; type: "QQmlScriptString" } + Property { name: "scale"; type: "QQmlScriptString" } + Property { name: "rotation"; type: "QQmlScriptString" } + } + Component { + file: "private/qquickpath_p.h" + name: "QQuickPath" + defaultProperty: "pathElements" + prototype: "QObject" + exports: ["QtQuick/Path 2.0", "QtQuick/Path 2.14"] + exportMetaObjectRevisions: [0, 14] + Property { name: "pathElements"; type: "QQuickPathElement"; isList: true; isReadonly: true } + Property { name: "startX"; type: "double" } + Property { name: "startY"; type: "double" } + Property { name: "closed"; type: "bool"; isReadonly: true } + Property { name: "scale"; revision: 14; type: "QSizeF" } + Signal { name: "changed" } + Signal { name: "scaleChanged"; revision: 14 } + Method { name: "processPath" } + Method { + name: "pointAtPercent" + revision: 14 + type: "QPointF" + Parameter { name: "t"; type: "double" } + } + } + Component { + file: "private/qquickpath_p.h" + name: "QQuickPathAngleArc" + prototype: "QQuickCurve" + exports: ["QtQuick/PathAngleArc 2.11"] + exportMetaObjectRevisions: [11] + Property { name: "centerX"; type: "double" } + Property { name: "centerY"; type: "double" } + Property { name: "radiusX"; type: "double" } + Property { name: "radiusY"; type: "double" } + Property { name: "startAngle"; type: "double" } + Property { name: "sweepAngle"; type: "double" } + Property { name: "moveToStart"; type: "bool" } + } + Component { + file: "private/qquickitemanimation_p.h" + name: "QQuickPathAnimation" + prototype: "QQuickAbstractAnimation" + exports: ["QtQuick/PathAnimation 2.0", "QtQuick/PathAnimation 2.12"] + exportMetaObjectRevisions: [0, 12] + Enum { + name: "Orientation" + values: [ + "Fixed", + "RightFirst", + "LeftFirst", + "BottomFirst", + "TopFirst" + ] + } + Property { name: "duration"; type: "int" } + Property { name: "easing"; type: "QEasingCurve" } + Property { name: "path"; type: "QQuickPath"; isPointer: true } + Property { name: "target"; type: "QQuickItem"; isPointer: true } + Property { name: "orientation"; type: "Orientation" } + Property { name: "anchorPoint"; type: "QPointF" } + Property { name: "orientationEntryDuration"; type: "int" } + Property { name: "orientationExitDuration"; type: "int" } + Property { name: "endRotation"; type: "double" } + Signal { + name: "durationChanged" + Parameter { type: "int" } + } + Signal { + name: "easingChanged" + Parameter { type: "QEasingCurve" } + } + Signal { + name: "orientationChanged" + Parameter { type: "Orientation" } + } + Signal { + name: "anchorPointChanged" + Parameter { type: "QPointF" } + } + Signal { + name: "orientationEntryDurationChanged" + Parameter { type: "double" } + } + Signal { + name: "orientationExitDurationChanged" + Parameter { type: "double" } + } + Signal { + name: "endRotationChanged" + Parameter { type: "double" } + } + } + Component { + file: "private/qquickpath_p.h" + name: "QQuickPathArc" + prototype: "QQuickCurve" + exports: ["QtQuick/PathArc 2.0", "QtQuick/PathArc 2.9"] + exportMetaObjectRevisions: [0, 9] + Enum { + name: "ArcDirection" + values: ["Clockwise", "Counterclockwise"] + } + Property { name: "radiusX"; type: "double" } + Property { name: "radiusY"; type: "double" } + Property { name: "useLargeArc"; type: "bool" } + Property { name: "direction"; type: "ArcDirection" } + Property { name: "xAxisRotation"; revision: 9; type: "double" } + Signal { name: "xAxisRotationChanged"; revision: 9 } + } + Component { + file: "private/qquickpath_p.h" + name: "QQuickPathAttribute" + prototype: "QQuickPathElement" + exports: ["QtQuick/PathAttribute 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "name"; type: "string" } + Property { name: "value"; type: "double" } + } + Component { + file: "private/qquickpath_p.h" + name: "QQuickPathCatmullRomCurve" + prototype: "QQuickCurve" + exports: ["QtQuick/PathCurve 2.0"] + exportMetaObjectRevisions: [0] + } + Component { + file: "private/qquickpath_p.h" + name: "QQuickPathCubic" + prototype: "QQuickCurve" + exports: ["QtQuick/PathCubic 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "control1X"; type: "double" } + Property { name: "control1Y"; type: "double" } + Property { name: "control2X"; type: "double" } + Property { name: "control2Y"; type: "double" } + Property { name: "relativeControl1X"; type: "double" } + Property { name: "relativeControl1Y"; type: "double" } + Property { name: "relativeControl2X"; type: "double" } + Property { name: "relativeControl2Y"; type: "double" } + } + Component { + file: "private/qquickpath_p.h" + name: "QQuickPathElement" + prototype: "QObject" + Signal { name: "changed" } + } + Component { + file: "private/qquickpathinterpolator_p.h" + name: "QQuickPathInterpolator" + prototype: "QObject" + exports: ["QtQuick/PathInterpolator 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "path"; type: "QQuickPath"; isPointer: true } + Property { name: "progress"; type: "double" } + Property { name: "x"; type: "double"; isReadonly: true } + Property { name: "y"; type: "double"; isReadonly: true } + Property { name: "angle"; type: "double"; isReadonly: true } + Method { name: "_q_pathUpdated" } + } + Component { + file: "private/qquickpath_p.h" + name: "QQuickPathLine" + prototype: "QQuickCurve" + exports: ["QtQuick/PathLine 2.0"] + exportMetaObjectRevisions: [0] + } + Component { + file: "private/qquickpath_p.h" + name: "QQuickPathMove" + prototype: "QQuickCurve" + exports: ["QtQuick/PathMove 2.9"] + exportMetaObjectRevisions: [9] + } + Component { + file: "private/qquickpath_p.h" + name: "QQuickPathMultiline" + prototype: "QQuickCurve" + exports: ["QtQuick/PathMultiline 2.14"] + exportMetaObjectRevisions: [14] + Property { name: "start"; type: "QPointF"; isReadonly: true } + Property { name: "paths"; type: "QVariant" } + } + Component { + file: "private/qquickpath_p.h" + name: "QQuickPathPercent" + prototype: "QQuickPathElement" + exports: ["QtQuick/PathPercent 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "value"; type: "double" } + } + Component { + file: "private/qquickpath_p.h" + name: "QQuickPathPolyline" + prototype: "QQuickCurve" + exports: ["QtQuick/PathPolyline 2.14"] + exportMetaObjectRevisions: [14] + Property { name: "start"; type: "QPointF"; isReadonly: true } + Property { name: "path"; type: "QVariant" } + } + Component { + file: "private/qquickpath_p.h" + name: "QQuickPathQuad" + prototype: "QQuickCurve" + exports: ["QtQuick/PathQuad 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "controlX"; type: "double" } + Property { name: "controlY"; type: "double" } + Property { name: "relativeControlX"; type: "double" } + Property { name: "relativeControlY"; type: "double" } + } + Component { + file: "private/qquickpath_p.h" + name: "QQuickPathSvg" + prototype: "QQuickCurve" + exports: ["QtQuick/PathSvg 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "path"; type: "string" } + } + Component { + file: "private/qquickpath_p.h" + name: "QQuickPathText" + prototype: "QQuickPathElement" + exports: ["QtQuick/PathText 2.15"] + exportMetaObjectRevisions: [15] + Property { name: "x"; type: "double" } + Property { name: "y"; type: "double" } + Property { name: "width"; type: "double"; isReadonly: true } + Property { name: "height"; type: "double"; isReadonly: true } + Property { name: "text"; type: "string" } + Property { name: "font"; type: "QFont" } + Method { name: "invalidate" } + } + Component { + file: "private/qquickpathview_p.h" + name: "QQuickPathView" + defaultProperty: "data" + prototype: "QQuickItem" + exports: [ + "QtQuick/PathView 2.0", + "QtQuick/PathView 2.1", + "QtQuick/PathView 2.11", + "QtQuick/PathView 2.13", + "QtQuick/PathView 2.4", + "QtQuick/PathView 2.7" + ] + exportMetaObjectRevisions: [0, 1, 11, 13, 4, 7] + attachedType: "QQuickPathViewAttached" + Enum { + name: "HighlightRangeMode" + values: ["NoHighlightRange", "ApplyRange", "StrictlyEnforceRange"] + } + Enum { + name: "SnapMode" + values: ["NoSnap", "SnapToItem", "SnapOneItem"] + } + Enum { + name: "MovementDirection" + values: ["Shortest", "Negative", "Positive"] + } + Enum { + name: "PositionMode" + values: ["Beginning", "Center", "End", "Contain", "SnapPosition"] + } + Property { name: "model"; type: "QVariant" } + Property { name: "path"; type: "QQuickPath"; isPointer: true } + Property { name: "currentIndex"; type: "int" } + Property { name: "currentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "offset"; type: "double" } + Property { name: "highlight"; type: "QQmlComponent"; isPointer: true } + Property { name: "highlightItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "preferredHighlightBegin"; type: "double" } + Property { name: "preferredHighlightEnd"; type: "double" } + Property { name: "highlightRangeMode"; type: "HighlightRangeMode" } + Property { name: "highlightMoveDuration"; type: "int" } + Property { name: "dragMargin"; type: "double" } + Property { name: "maximumFlickVelocity"; type: "double" } + Property { name: "flickDeceleration"; type: "double" } + Property { name: "interactive"; type: "bool" } + Property { name: "moving"; type: "bool"; isReadonly: true } + Property { name: "flicking"; type: "bool"; isReadonly: true } + Property { name: "dragging"; type: "bool"; isReadonly: true } + Property { name: "count"; type: "int"; isReadonly: true } + Property { name: "delegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "pathItemCount"; type: "int" } + Property { name: "snapMode"; type: "SnapMode" } + Property { name: "movementDirection"; revision: 7; type: "MovementDirection" } + Property { name: "cacheItemCount"; type: "int" } + Signal { name: "snapPositionChanged" } + Signal { name: "movementStarted" } + Signal { name: "movementEnded" } + Signal { name: "movementDirectionChanged"; revision: 7 } + Signal { name: "flickStarted" } + Signal { name: "flickEnded" } + Signal { name: "dragStarted" } + Signal { name: "dragEnded" } + Method { name: "incrementCurrentIndex" } + Method { name: "decrementCurrentIndex" } + Method { name: "refill" } + Method { name: "ticked" } + Method { name: "movementEnding" } + Method { + name: "modelUpdated" + Parameter { name: "changeSet"; type: "QQmlChangeSet" } + Parameter { name: "reset"; type: "bool" } + } + Method { + name: "createdItem" + Parameter { name: "index"; type: "int" } + Parameter { name: "item"; type: "QObject"; isPointer: true } + } + Method { + name: "initItem" + Parameter { name: "index"; type: "int" } + Parameter { name: "item"; type: "QObject"; isPointer: true } + } + Method { + name: "destroyingItem" + Parameter { name: "item"; type: "QObject"; isPointer: true } + } + Method { name: "pathUpdated" } + Method { + name: "positionViewAtIndex" + Parameter { name: "index"; type: "int" } + Parameter { name: "mode"; type: "int" } + } + Method { + name: "indexAt" + type: "int" + Parameter { name: "x"; type: "double" } + Parameter { name: "y"; type: "double" } + } + Method { + name: "itemAt" + type: "QQuickItem*" + Parameter { name: "x"; type: "double" } + Parameter { name: "y"; type: "double" } + } + Method { + name: "itemAtIndex" + revision: 13 + type: "QQuickItem*" + Parameter { name: "index"; type: "int" } + } + } + Component { + name: "QQuickPathViewAttached" + prototype: "QObject" + Property { name: "view"; type: "QQuickPathView"; isReadonly: true; isPointer: true } + Property { name: "isCurrentItem"; type: "bool"; isReadonly: true } + Property { name: "onPath"; type: "bool"; isReadonly: true } + Signal { name: "currentItemChanged" } + Signal { name: "pathChanged" } + } + Component { + file: "private/qquickanimation_p.h" + name: "QQuickPauseAnimation" + prototype: "QQuickAbstractAnimation" + exports: ["QtQuick/PauseAnimation 2.0", "QtQuick/PauseAnimation 2.12"] + exportMetaObjectRevisions: [0, 12] + Property { name: "duration"; type: "int" } + Signal { + name: "durationChanged" + Parameter { type: "int" } + } + } + Component { + file: "private/qquickrectangle_p.h" + name: "QQuickPen" + prototype: "QObject" + Property { name: "width"; type: "double" } + Property { name: "color"; type: "QColor" } + Property { name: "pixelAligned"; type: "bool" } + Signal { name: "penChanged" } + } + Component { + file: "private/qquickpincharea_p.h" + name: "QQuickPinch" + prototype: "QObject" + exports: ["QtQuick/Pinch 2.0"] + exportMetaObjectRevisions: [0] + Enum { + name: "Axis" + values: ["NoDrag", "XAxis", "YAxis", "XAndYAxis", "XandYAxis"] + } + Property { name: "target"; type: "QQuickItem"; isPointer: true } + Property { name: "minimumScale"; type: "double" } + Property { name: "maximumScale"; type: "double" } + Property { name: "minimumRotation"; type: "double" } + Property { name: "maximumRotation"; type: "double" } + Property { name: "dragAxis"; type: "Axis" } + Property { name: "minimumX"; type: "double" } + Property { name: "maximumX"; type: "double" } + Property { name: "minimumY"; type: "double" } + Property { name: "maximumY"; type: "double" } + Property { name: "active"; type: "bool"; isReadonly: true } + } + Component { + file: "private/qquickpincharea_p.h" + name: "QQuickPinchArea" + defaultProperty: "data" + prototype: "QQuickItem" + exports: [ + "QtQuick/PinchArea 2.0", + "QtQuick/PinchArea 2.1", + "QtQuick/PinchArea 2.11", + "QtQuick/PinchArea 2.4", + "QtQuick/PinchArea 2.5", + "QtQuick/PinchArea 2.7" + ] + exportMetaObjectRevisions: [0, 1, 11, 4, 5, 7] + Property { name: "enabled"; type: "bool" } + Property { name: "pinch"; type: "QQuickPinch"; isReadonly: true; isPointer: true } + Signal { + name: "pinchStarted" + Parameter { name: "pinch"; type: "QQuickPinchEvent"; isPointer: true } + } + Signal { + name: "pinchUpdated" + Parameter { name: "pinch"; type: "QQuickPinchEvent"; isPointer: true } + } + Signal { + name: "pinchFinished" + Parameter { name: "pinch"; type: "QQuickPinchEvent"; isPointer: true } + } + Signal { + name: "smartZoom" + revision: 5 + Parameter { name: "pinch"; type: "QQuickPinchEvent"; isPointer: true } + } + } + Component { + file: "private/qquickpincharea_p.h" + name: "QQuickPinchEvent" + prototype: "QObject" + Property { name: "center"; type: "QPointF"; isReadonly: true } + Property { name: "startCenter"; type: "QPointF"; isReadonly: true } + Property { name: "previousCenter"; type: "QPointF"; isReadonly: true } + Property { name: "scale"; type: "double"; isReadonly: true } + Property { name: "previousScale"; type: "double"; isReadonly: true } + Property { name: "angle"; type: "double"; isReadonly: true } + Property { name: "previousAngle"; type: "double"; isReadonly: true } + Property { name: "rotation"; type: "double"; isReadonly: true } + Property { name: "point1"; type: "QPointF"; isReadonly: true } + Property { name: "startPoint1"; type: "QPointF"; isReadonly: true } + Property { name: "point2"; type: "QPointF"; isReadonly: true } + Property { name: "startPoint2"; type: "QPointF"; isReadonly: true } + Property { name: "pointCount"; type: "int"; isReadonly: true } + Property { name: "accepted"; type: "bool" } + } + Component { + file: "private/qquickpinchhandler_p.h" + name: "QQuickPinchHandler" + prototype: "QQuickMultiPointHandler" + exports: ["QtQuick/PinchHandler 2.12", "QtQuick/PinchHandler 2.15"] + exportMetaObjectRevisions: [12, 15] + Property { name: "minimumScale"; type: "double" } + Property { name: "maximumScale"; type: "double" } + Property { name: "minimumRotation"; type: "double" } + Property { name: "maximumRotation"; type: "double" } + Property { name: "scale"; type: "double"; isReadonly: true } + Property { name: "activeScale"; type: "double"; isReadonly: true } + Property { name: "rotation"; type: "double"; isReadonly: true } + Property { name: "translation"; type: "QVector2D"; isReadonly: true } + Property { name: "minimumX"; type: "double" } + Property { name: "maximumX"; type: "double" } + Property { name: "minimumY"; type: "double" } + Property { name: "maximumY"; type: "double" } + Property { name: "xAxis"; type: "QQuickDragAxis"; isReadonly: true; isPointer: true } + Property { name: "yAxis"; type: "QQuickDragAxis"; isReadonly: true; isPointer: true } + Signal { name: "updated" } + } + Component { + file: "private/qquickpointhandler_p.h" + name: "QQuickPointHandler" + prototype: "QQuickSinglePointHandler" + exports: ["QtQuick/PointHandler 2.12", "QtQuick/PointHandler 2.15"] + exportMetaObjectRevisions: [12, 15] + Property { name: "translation"; type: "QVector2D"; isReadonly: true } + } + Component { + file: "private/qquickevents_p_p.h" + name: "QQuickPointerDevice" + prototype: "QObject" + exports: ["QtQuick/PointerDevice 2.12"] + isCreatable: false + exportMetaObjectRevisions: [12] + Enum { + name: "DeviceTypes" + alias: "DeviceType" + isFlag: true + values: [ + "UnknownDevice", + "Mouse", + "TouchScreen", + "TouchPad", + "Puck", + "Stylus", + "Airbrush", + "AllDevices" + ] + } + Enum { + name: "PointerTypes" + alias: "PointerType" + isFlag: true + values: [ + "GenericPointer", + "Finger", + "Pen", + "Eraser", + "Cursor", + "AllPointerTypes" + ] + } + Enum { + name: "Capabilities" + alias: "CapabilityFlag" + isFlag: true + values: [ + "Position", + "Area", + "Pressure", + "Velocity", + "MouseEmulation", + "Scroll", + "Hover", + "Rotation", + "XTilt", + "YTilt" + ] + } + Property { name: "type"; type: "DeviceType"; isReadonly: true } + Property { name: "pointerType"; type: "PointerType"; isReadonly: true } + Property { name: "capabilities"; type: "Capabilities"; isReadonly: true } + Property { name: "maximumTouchPoints"; type: "int"; isReadonly: true } + Property { name: "buttonCount"; type: "int"; isReadonly: true } + Property { name: "name"; type: "string"; isReadonly: true } + Property { name: "uniqueId"; type: "QPointingDeviceUniqueId"; isReadonly: true } + } + Component { + file: "private/qquickpointerhandler_p.h" + name: "QQuickPointerDeviceHandler" + prototype: "QQuickPointerHandler" + Property { name: "acceptedDevices"; type: "QQuickPointerDevice::DeviceTypes" } + Property { name: "acceptedPointerTypes"; type: "QQuickPointerDevice::PointerTypes" } + Property { name: "acceptedButtons"; type: "Qt::MouseButtons" } + Property { name: "acceptedModifiers"; type: "Qt::KeyboardModifiers" } + Method { + name: "setAcceptedDevices" + Parameter { name: "acceptedDevices"; type: "QQuickPointerDevice::DeviceTypes" } + } + Method { + name: "setAcceptedPointerTypes" + Parameter { name: "acceptedPointerTypes"; type: "QQuickPointerDevice::PointerTypes" } + } + Method { + name: "setAcceptedButtons" + Parameter { name: "buttons"; type: "Qt::MouseButtons" } + } + Method { + name: "setAcceptedModifiers" + Parameter { name: "acceptedModifiers"; type: "Qt::KeyboardModifiers" } + } + } + Component { + file: "private/qquickevents_p_p.h" + name: "QQuickPointerEvent" + prototype: "QObject" + exports: ["QtQuick/PointerEvent 2.12"] + isCreatable: false + exportMetaObjectRevisions: [12] + Property { name: "device"; type: "QQuickPointerDevice"; isReadonly: true; isPointer: true } + Property { name: "modifiers"; type: "Qt::KeyboardModifiers"; isReadonly: true } + Property { name: "button"; type: "Qt::MouseButtons"; isReadonly: true } + Property { name: "buttons"; type: "Qt::MouseButtons"; isReadonly: true } + } + Component { + file: "private/qquickpointerhandler_p.h" + name: "QQuickPointerHandler" + prototype: "QObject" + exports: [ + "QtQuick/PointerHandler 2.12", + "QtQuick/PointerHandler 2.15" + ] + isCreatable: false + exportMetaObjectRevisions: [12, 15] + Enum { + name: "GrabPermissions" + alias: "GrabPermission" + isFlag: true + values: [ + "TakeOverForbidden", + "CanTakeOverFromHandlersOfSameType", + "CanTakeOverFromHandlersOfDifferentType", + "CanTakeOverFromItems", + "CanTakeOverFromAnything", + "ApprovesTakeOverByHandlersOfSameType", + "ApprovesTakeOverByHandlersOfDifferentType", + "ApprovesTakeOverByItems", + "ApprovesCancellation", + "ApprovesTakeOverByAnything" + ] + } + Property { name: "enabled"; type: "bool" } + Property { name: "active"; type: "bool"; isReadonly: true } + Property { name: "target"; type: "QQuickItem"; isPointer: true } + Property { name: "parent"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "grabPermissions"; type: "GrabPermissions" } + Property { name: "margin"; type: "double" } + Property { name: "dragThreshold"; revision: 15; type: "int" } + Property { name: "cursorShape"; revision: 15; type: "Qt::CursorShape" } + Signal { name: "dragThresholdChanged"; revision: 15 } + Signal { + name: "grabChanged" + Parameter { name: "transition"; type: "QQuickEventPoint::GrabTransition" } + Parameter { name: "point"; type: "QQuickEventPoint"; isPointer: true } + } + Signal { name: "grabPermissionChanged" } + Signal { + name: "canceled" + Parameter { name: "point"; type: "QQuickEventPoint"; isPointer: true } + } + Signal { name: "cursorShapeChanged"; revision: 15 } + } + Component { + file: "private/qquickevents_p_p.h" + name: "QQuickPointerMouseEvent" + prototype: "QQuickSinglePointEvent" + exports: ["QtQuick/PointerMouseEvent 2.12"] + isCreatable: false + exportMetaObjectRevisions: [12] + } + Component { + file: "private/qquickevents_p_p.h" + name: "QQuickPointerScrollEvent" + prototype: "QQuickSinglePointEvent" + exports: ["QtQuick/PointerScrollEvent 2.14"] + isCreatable: false + exportMetaObjectRevisions: [14] + Property { name: "angleDelta"; type: "QVector2D"; isReadonly: true } + Property { name: "pixelDelta"; type: "QVector2D"; isReadonly: true } + Property { name: "hasAngleDelta"; type: "bool"; isReadonly: true } + Property { name: "hasPixelDelta"; type: "bool"; isReadonly: true } + Property { name: "inverted"; type: "bool"; isReadonly: true } + } + Component { + file: "private/qquickevents_p_p.h" + name: "QQuickPointerTouchEvent" + prototype: "QQuickPointerEvent" + exports: ["QtQuick/PointerTouchEvent 2.12"] + isCreatable: false + exportMetaObjectRevisions: [12] + } + Component { + name: "QQuickPositionerAttached" + prototype: "QObject" + Property { name: "index"; type: "int"; isReadonly: true } + Property { name: "isFirstItem"; type: "bool"; isReadonly: true } + Property { name: "isLastItem"; type: "bool"; isReadonly: true } + } + Component { + file: "private/qquickanimation_p.h" + name: "QQuickPropertyAction" + prototype: "QQuickAbstractAnimation" + exports: ["QtQuick/PropertyAction 2.0", "QtQuick/PropertyAction 2.12"] + exportMetaObjectRevisions: [0, 12] + Property { name: "target"; type: "QObject"; isPointer: true } + Property { name: "property"; type: "string" } + Property { name: "properties"; type: "string" } + Property { name: "targets"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "exclude"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "value"; type: "QVariant" } + Signal { + name: "valueChanged" + Parameter { type: "QVariant" } + } + Signal { + name: "propertiesChanged" + Parameter { type: "string" } + } + } + Component { + file: "private/qquickanimation_p.h" + name: "QQuickPropertyAnimation" + prototype: "QQuickAbstractAnimation" + exports: [ + "QtQuick/PropertyAnimation 2.0", + "QtQuick/PropertyAnimation 2.12" + ] + exportMetaObjectRevisions: [0, 12] + Property { name: "duration"; type: "int" } + Property { name: "from"; type: "QVariant" } + Property { name: "to"; type: "QVariant" } + Property { name: "easing"; type: "QEasingCurve" } + Property { name: "target"; type: "QObject"; isPointer: true } + Property { name: "property"; type: "string" } + Property { name: "properties"; type: "string" } + Property { name: "targets"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "exclude"; type: "QObject"; isList: true; isReadonly: true } + Signal { + name: "durationChanged" + Parameter { type: "int" } + } + Signal { + name: "easingChanged" + Parameter { type: "QEasingCurve" } + } + Signal { + name: "propertiesChanged" + Parameter { type: "string" } + } + } + Component { + file: "private/qquickpropertychanges_p.h" + name: "QQuickPropertyChanges" + prototype: "QQuickStateOperation" + exports: ["QtQuick/PropertyChanges 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "target"; type: "QObject"; isPointer: true } + Property { name: "restoreEntryValues"; type: "bool" } + Property { name: "explicit"; type: "bool" } + } + Component { + file: "private/qquickrectangle_p.h" + name: "QQuickRectangle" + defaultProperty: "data" + prototype: "QQuickItem" + exports: [ + "QtQuick/Rectangle 2.0", + "QtQuick/Rectangle 2.1", + "QtQuick/Rectangle 2.11", + "QtQuick/Rectangle 2.4", + "QtQuick/Rectangle 2.7" + ] + exportMetaObjectRevisions: [0, 1, 11, 4, 7] + Property { name: "color"; type: "QColor" } + Property { name: "gradient"; type: "QJSValue" } + Property { name: "border"; type: "QQuickPen"; isReadonly: true; isPointer: true } + Property { name: "radius"; type: "double" } + Method { name: "doUpdate" } + } + Component { + file: "private/qquickrepeater_p.h" + name: "QQuickRepeater" + defaultProperty: "delegate" + prototype: "QQuickItem" + exports: [ + "QtQuick/Repeater 2.0", + "QtQuick/Repeater 2.1", + "QtQuick/Repeater 2.11", + "QtQuick/Repeater 2.4", + "QtQuick/Repeater 2.7" + ] + exportMetaObjectRevisions: [0, 1, 11, 4, 7] + Property { name: "model"; type: "QVariant" } + Property { name: "delegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "count"; type: "int"; isReadonly: true } + Signal { + name: "itemAdded" + Parameter { name: "index"; type: "int" } + Parameter { name: "item"; type: "QQuickItem"; isPointer: true } + } + Signal { + name: "itemRemoved" + Parameter { name: "index"; type: "int" } + Parameter { name: "item"; type: "QQuickItem"; isPointer: true } + } + Method { + name: "createdItem" + Parameter { name: "index"; type: "int" } + Parameter { name: "item"; type: "QObject"; isPointer: true } + } + Method { + name: "initItem" + Parameter { type: "int" } + Parameter { name: "item"; type: "QObject"; isPointer: true } + } + Method { + name: "modelUpdated" + Parameter { name: "changeSet"; type: "QQmlChangeSet" } + Parameter { name: "reset"; type: "bool" } + } + Method { + name: "itemAt" + type: "QQuickItem*" + Parameter { name: "index"; type: "int" } + } + } + Component { + file: "private/qquicktranslate_p.h" + name: "QQuickRotation" + prototype: "QQuickTransform" + exports: ["QtQuick/Rotation 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "origin"; type: "QVector3D" } + Property { name: "angle"; type: "double" } + Property { name: "axis"; type: "QVector3D" } + } + Component { + file: "private/qquickanimation_p.h" + name: "QQuickRotationAnimation" + prototype: "QQuickPropertyAnimation" + exports: [ + "QtQuick/RotationAnimation 2.0", + "QtQuick/RotationAnimation 2.12" + ] + exportMetaObjectRevisions: [0, 12] + Enum { + name: "RotationDirection" + values: ["Numerical", "Shortest", "Clockwise", "Counterclockwise"] + } + Property { name: "from"; type: "double" } + Property { name: "to"; type: "double" } + Property { name: "direction"; type: "RotationDirection" } + } + Component { + file: "private/qquickanimator_p.h" + name: "QQuickRotationAnimator" + prototype: "QQuickAnimator" + exports: [ + "QtQuick/RotationAnimator 2.12", + "QtQuick/RotationAnimator 2.2" + ] + exportMetaObjectRevisions: [12, 2] + Enum { + name: "RotationDirection" + values: ["Numerical", "Shortest", "Clockwise", "Counterclockwise"] + } + Property { name: "direction"; type: "RotationDirection" } + Signal { + name: "directionChanged" + Parameter { name: "dir"; type: "RotationDirection" } + } + } + Component { + file: "private/qquickpositioners_p.h" + name: "QQuickRow" + prototype: "QQuickBasePositioner" + exports: [ + "QtQuick/Row 2.0", + "QtQuick/Row 2.1", + "QtQuick/Row 2.11", + "QtQuick/Row 2.4", + "QtQuick/Row 2.6", + "QtQuick/Row 2.7", + "QtQuick/Row 2.9" + ] + exportMetaObjectRevisions: [0, 1, 11, 4, 6, 7, 9] + Property { name: "layoutDirection"; type: "Qt::LayoutDirection" } + Property { name: "effectiveLayoutDirection"; type: "Qt::LayoutDirection"; isReadonly: true } + } + Component { + file: "private/qquicktranslate_p.h" + name: "QQuickScale" + prototype: "QQuickTransform" + exports: ["QtQuick/Scale 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "origin"; type: "QVector3D" } + Property { name: "xScale"; type: "double" } + Property { name: "yScale"; type: "double" } + Property { name: "zScale"; type: "double" } + Signal { name: "scaleChanged" } + } + Component { + file: "private/qquickanimator_p.h" + name: "QQuickScaleAnimator" + prototype: "QQuickAnimator" + exports: ["QtQuick/ScaleAnimator 2.12", "QtQuick/ScaleAnimator 2.2"] + exportMetaObjectRevisions: [12, 2] + } + Component { + file: "private/qquickscalegrid_p_p.h" + name: "QQuickScaleGrid" + prototype: "QObject" + Property { name: "left"; type: "int" } + Property { name: "top"; type: "int" } + Property { name: "right"; type: "int" } + Property { name: "bottom"; type: "int" } + Signal { name: "borderChanged" } + Signal { name: "leftBorderChanged" } + Signal { name: "topBorderChanged" } + Signal { name: "rightBorderChanged" } + Signal { name: "bottomBorderChanged" } + } + Component { + file: "private/qquickanimation_p.h" + name: "QQuickScriptAction" + prototype: "QQuickAbstractAnimation" + exports: ["QtQuick/ScriptAction 2.0", "QtQuick/ScriptAction 2.12"] + exportMetaObjectRevisions: [0, 12] + Property { name: "script"; type: "QQmlScriptString" } + Property { name: "scriptName"; type: "string" } + } + Component { + file: "private/qquickanimation_p.h" + name: "QQuickSequentialAnimation" + defaultProperty: "animations" + prototype: "QQuickAnimationGroup" + exports: [ + "QtQuick/SequentialAnimation 2.0", + "QtQuick/SequentialAnimation 2.12" + ] + exportMetaObjectRevisions: [0, 12] + } + Component { + file: "private/qquickshadereffect_p.h" + name: "QQuickShaderEffect" + defaultProperty: "data" + prototype: "QQuickItem" + exports: [ + "QtQuick/ShaderEffect 2.0", + "QtQuick/ShaderEffect 2.1", + "QtQuick/ShaderEffect 2.11", + "QtQuick/ShaderEffect 2.4", + "QtQuick/ShaderEffect 2.7" + ] + exportMetaObjectRevisions: [0, 1, 11, 4, 7] + Enum { + name: "CullMode" + values: ["NoCulling", "BackFaceCulling", "FrontFaceCulling"] + } + Enum { + name: "Status" + values: ["Compiled", "Uncompiled", "Error"] + } + Property { name: "fragmentShader"; type: "QByteArray" } + Property { name: "vertexShader"; type: "QByteArray" } + Property { name: "blending"; type: "bool" } + Property { name: "mesh"; type: "QVariant" } + Property { name: "cullMode"; type: "CullMode" } + Property { name: "log"; type: "string"; isReadonly: true } + Property { name: "status"; type: "Status"; isReadonly: true } + Property { name: "supportsAtlasTextures"; revision: 4; type: "bool" } + } + Component { + file: "private/qquickshadereffectmesh_p.h" + name: "QQuickShaderEffectMesh" + prototype: "QObject" + exports: ["QtQuick/ShaderEffectMesh 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Signal { name: "geometryChanged" } + } + Component { + file: "private/qquickshadereffectsource_p.h" + name: "QQuickShaderEffectSource" + defaultProperty: "data" + prototype: "QQuickItem" + exports: [ + "QtQuick/ShaderEffectSource 2.0", + "QtQuick/ShaderEffectSource 2.1", + "QtQuick/ShaderEffectSource 2.11", + "QtQuick/ShaderEffectSource 2.4", + "QtQuick/ShaderEffectSource 2.6", + "QtQuick/ShaderEffectSource 2.7", + "QtQuick/ShaderEffectSource 2.9" + ] + exportMetaObjectRevisions: [0, 1, 11, 4, 6, 7, 9] + Enum { + name: "WrapMode" + values: [ + "ClampToEdge", + "RepeatHorizontally", + "RepeatVertically", + "Repeat" + ] + } + Enum { + name: "Format" + values: ["Alpha", "RGB", "RGBA"] + } + Enum { + name: "TextureMirroring" + values: ["NoMirroring", "MirrorHorizontally", "MirrorVertically"] + } + Property { name: "wrapMode"; type: "WrapMode" } + Property { name: "sourceItem"; type: "QQuickItem"; isPointer: true } + Property { name: "sourceRect"; type: "QRectF" } + Property { name: "textureSize"; type: "QSize" } + Property { name: "format"; type: "Format" } + Property { name: "live"; type: "bool" } + Property { name: "hideSource"; type: "bool" } + Property { name: "mipmap"; type: "bool" } + Property { name: "recursive"; type: "bool" } + Property { name: "textureMirroring"; revision: 6; type: "TextureMirroring" } + Property { name: "samples"; revision: 9; type: "int" } + Signal { name: "scheduledUpdateCompleted" } + Method { + name: "sourceItemDestroyed" + Parameter { name: "item"; type: "QObject"; isPointer: true } + } + Method { name: "invalidateSceneGraph" } + Method { + name: "sourceItemParentChanged" + Parameter { name: "parent"; type: "QQuickItem"; isPointer: true } + } + Method { name: "scheduleUpdate" } + } + Component { + file: "private/qquickshortcut_p.h" + name: "QQuickShortcut" + prototype: "QObject" + exports: [ + "QtQuick/Shortcut 2.5", + "QtQuick/Shortcut 2.6", + "QtQuick/Shortcut 2.9" + ] + exportMetaObjectRevisions: [5, 6, 9] + Property { name: "sequence"; type: "QVariant" } + Property { name: "sequences"; revision: 9; type: "QVariantList" } + Property { name: "nativeText"; revision: 6; type: "string"; isReadonly: true } + Property { name: "portableText"; revision: 6; type: "string"; isReadonly: true } + Property { name: "enabled"; type: "bool" } + Property { name: "autoRepeat"; type: "bool" } + Property { name: "context"; type: "Qt::ShortcutContext" } + Signal { name: "sequencesChanged"; revision: 9 } + Signal { name: "activated" } + Signal { name: "activatedAmbiguously" } + } + Component { + file: "private/qquickevents_p_p.h" + name: "QQuickSinglePointEvent" + prototype: "QQuickPointerEvent" + } + Component { + file: "private/qquickpointerhandler_p.h" + name: "QQuickSinglePointHandler" + prototype: "QQuickPointerDeviceHandler" + Property { name: "point"; type: "QQuickHandlerPoint"; isReadonly: true } + } + Component { + file: "private/qquicksmoothedanimation_p.h" + name: "QQuickSmoothedAnimation" + prototype: "QQuickNumberAnimation" + exports: [ + "QtQuick/SmoothedAnimation 2.0", + "QtQuick/SmoothedAnimation 2.12" + ] + exportMetaObjectRevisions: [0, 12] + Enum { + name: "ReversingMode" + values: ["Eased", "Immediate", "Sync"] + } + Property { name: "velocity"; type: "double" } + Property { name: "reversingMode"; type: "ReversingMode" } + Property { name: "maximumEasingTime"; type: "double" } + } + Component { + file: "private/qquickspringanimation_p.h" + name: "QQuickSpringAnimation" + prototype: "QQuickNumberAnimation" + exports: [ + "QtQuick/SpringAnimation 2.0", + "QtQuick/SpringAnimation 2.12" + ] + exportMetaObjectRevisions: [0, 12] + Property { name: "velocity"; type: "double" } + Property { name: "spring"; type: "double" } + Property { name: "damping"; type: "double" } + Property { name: "epsilon"; type: "double" } + Property { name: "modulus"; type: "double" } + Property { name: "mass"; type: "double" } + Signal { name: "syncChanged" } + } + Component { + file: "private/qquicksprite_p.h" + name: "QQuickSprite" + prototype: "QQuickStochasticState" + exports: ["QtQuick/Sprite 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "source"; type: "QUrl" } + Property { name: "reverse"; type: "bool" } + Property { name: "frameSync"; type: "bool" } + Property { name: "frames"; type: "int" } + Property { name: "frameCount"; type: "int" } + Property { name: "frameHeight"; type: "int" } + Property { name: "frameWidth"; type: "int" } + Property { name: "frameX"; type: "int" } + Property { name: "frameY"; type: "int" } + Property { name: "frameRate"; type: "double" } + Property { name: "frameRateVariation"; type: "double" } + Property { name: "frameDuration"; type: "int" } + Property { name: "frameDurationVariation"; type: "int" } + Signal { + name: "sourceChanged" + Parameter { name: "arg"; type: "QUrl" } + } + Signal { + name: "frameHeightChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "frameWidthChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "reverseChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "frameCountChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "frameXChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "frameYChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "frameRateChanged" + Parameter { name: "arg"; type: "double" } + } + Signal { + name: "frameRateVariationChanged" + Parameter { name: "arg"; type: "double" } + } + Signal { + name: "frameDurationChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "frameDurationVariationChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "frameSyncChanged" + Parameter { name: "arg"; type: "bool" } + } + Method { + name: "setSource" + Parameter { name: "arg"; type: "QUrl" } + } + Method { + name: "setFrameHeight" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setFrameWidth" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setReverse" + Parameter { name: "arg"; type: "bool" } + } + Method { + name: "setFrames" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setFrameCount" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setFrameX" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setFrameY" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setFrameRate" + Parameter { name: "arg"; type: "double" } + } + Method { + name: "setFrameRateVariation" + Parameter { name: "arg"; type: "double" } + } + Method { + name: "setFrameDuration" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setFrameDurationVariation" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setFrameSync" + Parameter { name: "arg"; type: "bool" } + } + Method { name: "startImageLoading" } + } + Component { + file: "private/qquickspritesequence_p.h" + name: "QQuickSpriteSequence" + defaultProperty: "sprites" + prototype: "QQuickItem" + exports: [ + "QtQuick/SpriteSequence 2.0", + "QtQuick/SpriteSequence 2.1", + "QtQuick/SpriteSequence 2.11", + "QtQuick/SpriteSequence 2.4", + "QtQuick/SpriteSequence 2.7" + ] + exportMetaObjectRevisions: [0, 1, 11, 4, 7] + Property { name: "running"; type: "bool" } + Property { name: "interpolate"; type: "bool" } + Property { name: "goalSprite"; type: "string" } + Property { name: "currentSprite"; type: "string"; isReadonly: true } + Property { name: "sprites"; type: "QQuickSprite"; isList: true; isReadonly: true } + Signal { + name: "runningChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "interpolateChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "goalSpriteChanged" + Parameter { name: "arg"; type: "string" } + } + Signal { + name: "currentSpriteChanged" + Parameter { name: "arg"; type: "string" } + } + Method { + name: "jumpTo" + Parameter { name: "sprite"; type: "string" } + } + Method { + name: "setGoalSprite" + Parameter { name: "sprite"; type: "string" } + } + Method { + name: "setRunning" + Parameter { name: "arg"; type: "bool" } + } + Method { + name: "setInterpolate" + Parameter { name: "arg"; type: "bool" } + } + Method { name: "createEngine" } + } + Component { + file: "private/qquickstate_p.h" + name: "QQuickState" + defaultProperty: "changes" + prototype: "QObject" + exports: ["QtQuick/State 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "name"; type: "string" } + Property { name: "when"; type: "bool" } + Property { name: "extend"; type: "string" } + Property { name: "changes"; type: "QQuickStateOperation"; isList: true; isReadonly: true } + Signal { name: "completed" } + } + Component { + file: "private/qquickstatechangescript_p.h" + name: "QQuickStateChangeScript" + prototype: "QQuickStateOperation" + exports: ["QtQuick/StateChangeScript 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "script"; type: "QQmlScriptString" } + Property { name: "name"; type: "string" } + } + Component { + file: "private/qquickstategroup_p.h" + name: "QQuickStateGroup" + prototype: "QObject" + exports: ["QtQuick/StateGroup 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "state"; type: "string" } + Property { name: "states"; type: "QQuickState"; isList: true; isReadonly: true } + Property { name: "transitions"; type: "QQuickTransition"; isList: true; isReadonly: true } + Signal { + name: "stateChanged" + Parameter { type: "string" } + } + } + Component { file: "private/qquickstate_p.h"; name: "QQuickStateOperation"; prototype: "QObject" } + Component { + name: "QQuickStochasticState" + prototype: "QObject" + Property { name: "duration"; type: "int" } + Property { name: "durationVariation"; type: "int" } + Property { name: "randomStart"; type: "bool" } + Property { name: "to"; type: "QVariantMap" } + Property { name: "name"; type: "string" } + Signal { + name: "durationChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "nameChanged" + Parameter { name: "arg"; type: "string" } + } + Signal { + name: "toChanged" + Parameter { name: "arg"; type: "QVariantMap" } + } + Signal { + name: "durationVariationChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { name: "entered" } + Signal { + name: "randomStartChanged" + Parameter { name: "arg"; type: "bool" } + } + Method { + name: "setDuration" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setName" + Parameter { name: "arg"; type: "string" } + } + Method { + name: "setTo" + Parameter { name: "arg"; type: "QVariantMap" } + } + Method { + name: "setDurationVariation" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setRandomStart" + Parameter { name: "arg"; type: "bool" } + } + } + Component { + file: "private/qquicksystempalette_p.h" + name: "QQuickSystemPalette" + prototype: "QObject" + exports: ["QtQuick/SystemPalette 2.0"] + exportMetaObjectRevisions: [0] + Enum { + name: "ColorGroup" + values: ["Active", "Inactive", "Disabled"] + } + Property { name: "colorGroup"; type: "QQuickSystemPalette::ColorGroup" } + Property { name: "window"; type: "QColor"; isReadonly: true } + Property { name: "windowText"; type: "QColor"; isReadonly: true } + Property { name: "base"; type: "QColor"; isReadonly: true } + Property { name: "text"; type: "QColor"; isReadonly: true } + Property { name: "alternateBase"; type: "QColor"; isReadonly: true } + Property { name: "button"; type: "QColor"; isReadonly: true } + Property { name: "buttonText"; type: "QColor"; isReadonly: true } + Property { name: "light"; type: "QColor"; isReadonly: true } + Property { name: "midlight"; type: "QColor"; isReadonly: true } + Property { name: "dark"; type: "QColor"; isReadonly: true } + Property { name: "mid"; type: "QColor"; isReadonly: true } + Property { name: "shadow"; type: "QColor"; isReadonly: true } + Property { name: "highlight"; type: "QColor"; isReadonly: true } + Property { name: "highlightedText"; type: "QColor"; isReadonly: true } + Signal { name: "paletteChanged" } + } + Component { + file: "private/qquicktableview_p.h" + name: "QQuickTableView" + defaultProperty: "flickableData" + prototype: "QQuickFlickable" + exports: ["QtQuick/TableView 2.12", "QtQuick/TableView 2.14"] + exportMetaObjectRevisions: [12, 14] + attachedType: "QQuickTableViewAttached" + Property { name: "rows"; type: "int"; isReadonly: true } + Property { name: "columns"; type: "int"; isReadonly: true } + Property { name: "rowSpacing"; type: "double" } + Property { name: "columnSpacing"; type: "double" } + Property { name: "rowHeightProvider"; type: "QJSValue" } + Property { name: "columnWidthProvider"; type: "QJSValue" } + Property { name: "model"; type: "QVariant" } + Property { name: "delegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "reuseItems"; type: "bool" } + Property { name: "contentWidth"; type: "double" } + Property { name: "contentHeight"; type: "double" } + Property { name: "syncView"; revision: 14; type: "QQuickTableView"; isPointer: true } + Property { name: "syncDirection"; revision: 14; type: "Qt::Orientations" } + Signal { name: "syncViewChanged"; revision: 14 } + Signal { name: "syncDirectionChanged"; revision: 14 } + Method { name: "_q_componentFinalized" } + Method { name: "forceLayout" } + } + Component { + name: "QQuickTableViewAttached" + prototype: "QObject" + Property { name: "view"; type: "QQuickTableView"; isReadonly: true; isPointer: true } + Signal { name: "pooled" } + Signal { name: "reused" } + } + Component { + file: "private/qquicktaphandler_p.h" + name: "QQuickTapHandler" + prototype: "QQuickSinglePointHandler" + exports: ["QtQuick/TapHandler 2.12", "QtQuick/TapHandler 2.15"] + exportMetaObjectRevisions: [12, 15] + Enum { + name: "GesturePolicy" + values: ["DragThreshold", "WithinBounds", "ReleaseWithinBounds"] + } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "tapCount"; type: "int"; isReadonly: true } + Property { name: "timeHeld"; type: "double"; isReadonly: true } + Property { name: "longPressThreshold"; type: "double" } + Property { name: "gesturePolicy"; type: "GesturePolicy" } + Signal { + name: "tapped" + Parameter { name: "eventPoint"; type: "QQuickEventPoint"; isPointer: true } + } + Signal { + name: "singleTapped" + Parameter { name: "eventPoint"; type: "QQuickEventPoint"; isPointer: true } + } + Signal { + name: "doubleTapped" + Parameter { name: "eventPoint"; type: "QQuickEventPoint"; isPointer: true } + } + Signal { name: "longPressed" } + } + Component { + file: "private/qquicktext_p.h" + name: "QQuickText" + prototype: "QQuickImplicitSizeItem" + exports: [ + "QtQuick/Text 2.0", + "QtQuick/Text 2.1", + "QtQuick/Text 2.10", + "QtQuick/Text 2.11", + "QtQuick/Text 2.2", + "QtQuick/Text 2.3", + "QtQuick/Text 2.4", + "QtQuick/Text 2.6", + "QtQuick/Text 2.7", + "QtQuick/Text 2.9" + ] + exportMetaObjectRevisions: [0, 1, 10, 11, 2, 3, 4, 6, 7, 9] + Enum { + name: "HAlignment" + values: [ + "AlignLeft", + "AlignRight", + "AlignHCenter", + "AlignJustify" + ] + } + Enum { + name: "VAlignment" + values: ["AlignTop", "AlignBottom", "AlignVCenter"] + } + Enum { + name: "TextStyle" + values: ["Normal", "Outline", "Raised", "Sunken"] + } + Enum { + name: "TextFormat" + values: [ + "PlainText", + "RichText", + "MarkdownText", + "AutoText", + "StyledText" + ] + } + Enum { + name: "TextElideMode" + values: ["ElideLeft", "ElideRight", "ElideMiddle", "ElideNone"] + } + Enum { + name: "WrapMode" + values: [ + "NoWrap", + "WordWrap", + "WrapAnywhere", + "WrapAtWordBoundaryOrAnywhere", + "Wrap" + ] + } + Enum { + name: "RenderType" + values: ["QtRendering", "NativeRendering"] + } + Enum { + name: "LineHeightMode" + values: ["ProportionalHeight", "FixedHeight"] + } + Enum { + name: "FontSizeMode" + values: ["FixedSize", "HorizontalFit", "VerticalFit", "Fit"] + } + Property { name: "text"; type: "string" } + Property { name: "font"; type: "QFont" } + Property { name: "color"; type: "QColor" } + Property { name: "linkColor"; type: "QColor" } + Property { name: "style"; type: "TextStyle" } + Property { name: "styleColor"; type: "QColor" } + Property { name: "horizontalAlignment"; type: "HAlignment" } + Property { name: "effectiveHorizontalAlignment"; type: "HAlignment"; isReadonly: true } + Property { name: "verticalAlignment"; type: "VAlignment" } + Property { name: "wrapMode"; type: "WrapMode" } + Property { name: "lineCount"; type: "int"; isReadonly: true } + Property { name: "truncated"; type: "bool"; isReadonly: true } + Property { name: "maximumLineCount"; type: "int" } + Property { name: "textFormat"; type: "TextFormat" } + Property { name: "elide"; type: "TextElideMode" } + Property { name: "contentWidth"; type: "double"; isReadonly: true } + Property { name: "contentHeight"; type: "double"; isReadonly: true } + Property { name: "paintedWidth"; type: "double"; isReadonly: true } + Property { name: "paintedHeight"; type: "double"; isReadonly: true } + Property { name: "lineHeight"; type: "double" } + Property { name: "lineHeightMode"; type: "LineHeightMode" } + Property { name: "baseUrl"; type: "QUrl" } + Property { name: "minimumPixelSize"; type: "int" } + Property { name: "minimumPointSize"; type: "int" } + Property { name: "fontSizeMode"; type: "FontSizeMode" } + Property { name: "renderType"; type: "RenderType" } + Property { name: "hoveredLink"; revision: 2; type: "string"; isReadonly: true } + Property { name: "padding"; revision: 6; type: "double" } + Property { name: "topPadding"; revision: 6; type: "double" } + Property { name: "leftPadding"; revision: 6; type: "double" } + Property { name: "rightPadding"; revision: 6; type: "double" } + Property { name: "bottomPadding"; revision: 6; type: "double" } + Property { name: "fontInfo"; revision: 9; type: "QJSValue"; isReadonly: true } + Property { name: "advance"; revision: 10; type: "QSizeF"; isReadonly: true } + Signal { + name: "textChanged" + Parameter { name: "text"; type: "string" } + } + Signal { + name: "linkActivated" + Parameter { name: "link"; type: "string" } + } + Signal { + name: "linkHovered" + revision: 2 + Parameter { name: "link"; type: "string" } + } + Signal { + name: "fontChanged" + Parameter { name: "font"; type: "QFont" } + } + Signal { + name: "styleChanged" + Parameter { name: "style"; type: "QQuickText::TextStyle" } + } + Signal { + name: "horizontalAlignmentChanged" + Parameter { name: "alignment"; type: "QQuickText::HAlignment" } + } + Signal { + name: "verticalAlignmentChanged" + Parameter { name: "alignment"; type: "QQuickText::VAlignment" } + } + Signal { + name: "textFormatChanged" + Parameter { name: "textFormat"; type: "QQuickText::TextFormat" } + } + Signal { + name: "elideModeChanged" + Parameter { name: "mode"; type: "QQuickText::TextElideMode" } + } + Signal { name: "contentSizeChanged" } + Signal { + name: "contentWidthChanged" + Parameter { name: "contentWidth"; type: "double" } + } + Signal { + name: "contentHeightChanged" + Parameter { name: "contentHeight"; type: "double" } + } + Signal { + name: "lineHeightChanged" + Parameter { name: "lineHeight"; type: "double" } + } + Signal { + name: "lineHeightModeChanged" + Parameter { name: "mode"; type: "LineHeightMode" } + } + Signal { + name: "lineLaidOut" + Parameter { name: "line"; type: "QQuickTextLine"; isPointer: true } + } + Signal { name: "paddingChanged"; revision: 6 } + Signal { name: "topPaddingChanged"; revision: 6 } + Signal { name: "leftPaddingChanged"; revision: 6 } + Signal { name: "rightPaddingChanged"; revision: 6 } + Signal { name: "bottomPaddingChanged"; revision: 6 } + Signal { name: "fontInfoChanged"; revision: 9 } + Method { name: "q_updateLayout" } + Method { name: "triggerPreprocess" } + Method { name: "imageDownloadFinished" } + Method { name: "doLayout" } + Method { name: "forceLayout"; revision: 9 } + Method { + name: "linkAt" + revision: 3 + type: "string" + Parameter { name: "x"; type: "double" } + Parameter { name: "y"; type: "double" } + } + } + Component { file: "qquicktextdocument.h"; name: "QQuickTextDocument"; prototype: "QObject" } + Component { + file: "private/qquicktextedit_p.h" + name: "QQuickTextEdit" + prototype: "QQuickImplicitSizeItem" + exports: [ + "QtQuick/TextEdit 2.0", + "QtQuick/TextEdit 2.1", + "QtQuick/TextEdit 2.10", + "QtQuick/TextEdit 2.11", + "QtQuick/TextEdit 2.2", + "QtQuick/TextEdit 2.3", + "QtQuick/TextEdit 2.4", + "QtQuick/TextEdit 2.6", + "QtQuick/TextEdit 2.7" + ] + exportMetaObjectRevisions: [0, 1, 10, 11, 2, 3, 4, 6, 7] + Enum { + name: "HAlignment" + values: [ + "AlignLeft", + "AlignRight", + "AlignHCenter", + "AlignJustify" + ] + } + Enum { + name: "VAlignment" + values: ["AlignTop", "AlignBottom", "AlignVCenter"] + } + Enum { + name: "TextFormat" + values: ["PlainText", "RichText", "AutoText", "MarkdownText"] + } + Enum { + name: "WrapMode" + values: [ + "NoWrap", + "WordWrap", + "WrapAnywhere", + "WrapAtWordBoundaryOrAnywhere", + "Wrap" + ] + } + Enum { + name: "SelectionMode" + values: ["SelectCharacters", "SelectWords"] + } + Enum { + name: "RenderType" + values: ["QtRendering", "NativeRendering"] + } + Property { name: "text"; type: "string" } + Property { name: "color"; type: "QColor" } + Property { name: "selectionColor"; type: "QColor" } + Property { name: "selectedTextColor"; type: "QColor" } + Property { name: "font"; type: "QFont" } + Property { name: "horizontalAlignment"; type: "HAlignment" } + Property { name: "effectiveHorizontalAlignment"; type: "HAlignment"; isReadonly: true } + Property { name: "verticalAlignment"; type: "VAlignment" } + Property { name: "wrapMode"; type: "WrapMode" } + Property { name: "lineCount"; type: "int"; isReadonly: true } + Property { name: "length"; type: "int"; isReadonly: true } + Property { name: "contentWidth"; type: "double"; isReadonly: true } + Property { name: "contentHeight"; type: "double"; isReadonly: true } + Property { name: "paintedWidth"; type: "double"; isReadonly: true } + Property { name: "paintedHeight"; type: "double"; isReadonly: true } + Property { name: "textFormat"; type: "TextFormat" } + Property { name: "readOnly"; type: "bool" } + Property { name: "cursorVisible"; type: "bool" } + Property { name: "cursorPosition"; type: "int" } + Property { name: "cursorRectangle"; type: "QRectF"; isReadonly: true } + Property { name: "cursorDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "overwriteMode"; type: "bool" } + Property { name: "selectionStart"; type: "int"; isReadonly: true } + Property { name: "selectionEnd"; type: "int"; isReadonly: true } + Property { name: "selectedText"; type: "string"; isReadonly: true } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "persistentSelection"; type: "bool" } + Property { name: "textMargin"; type: "double" } + Property { name: "inputMethodHints"; type: "Qt::InputMethodHints" } + Property { name: "selectByKeyboard"; revision: 1; type: "bool" } + Property { name: "selectByMouse"; type: "bool" } + Property { name: "mouseSelectionMode"; type: "SelectionMode" } + Property { name: "canPaste"; type: "bool"; isReadonly: true } + Property { name: "canUndo"; type: "bool"; isReadonly: true } + Property { name: "canRedo"; type: "bool"; isReadonly: true } + Property { name: "inputMethodComposing"; type: "bool"; isReadonly: true } + Property { name: "baseUrl"; type: "QUrl" } + Property { name: "renderType"; type: "RenderType" } + Property { + name: "textDocument" + revision: 1 + type: "QQuickTextDocument" + isReadonly: true + isPointer: true + } + Property { name: "hoveredLink"; revision: 2; type: "string"; isReadonly: true } + Property { name: "padding"; revision: 6; type: "double" } + Property { name: "topPadding"; revision: 6; type: "double" } + Property { name: "leftPadding"; revision: 6; type: "double" } + Property { name: "rightPadding"; revision: 6; type: "double" } + Property { name: "bottomPadding"; revision: 6; type: "double" } + Property { name: "preeditText"; revision: 7; type: "string"; isReadonly: true } + Property { name: "tabStopDistance"; revision: 10; type: "double" } + Signal { name: "preeditTextChanged"; revision: 7 } + Signal { name: "contentSizeChanged" } + Signal { + name: "colorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "selectionColorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "selectedTextColorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "fontChanged" + Parameter { name: "font"; type: "QFont" } + } + Signal { + name: "horizontalAlignmentChanged" + Parameter { name: "alignment"; type: "QQuickTextEdit::HAlignment" } + } + Signal { + name: "verticalAlignmentChanged" + Parameter { name: "alignment"; type: "QQuickTextEdit::VAlignment" } + } + Signal { + name: "textFormatChanged" + Parameter { name: "textFormat"; type: "QQuickTextEdit::TextFormat" } + } + Signal { + name: "readOnlyChanged" + Parameter { name: "isReadOnly"; type: "bool" } + } + Signal { + name: "cursorVisibleChanged" + Parameter { name: "isCursorVisible"; type: "bool" } + } + Signal { + name: "overwriteModeChanged" + Parameter { name: "overwriteMode"; type: "bool" } + } + Signal { + name: "activeFocusOnPressChanged" + Parameter { name: "activeFocusOnPressed"; type: "bool" } + } + Signal { + name: "persistentSelectionChanged" + Parameter { name: "isPersistentSelection"; type: "bool" } + } + Signal { + name: "textMarginChanged" + Parameter { name: "textMargin"; type: "double" } + } + Signal { + name: "selectByKeyboardChanged" + revision: 1 + Parameter { name: "selectByKeyboard"; type: "bool" } + } + Signal { + name: "selectByMouseChanged" + Parameter { name: "selectByMouse"; type: "bool" } + } + Signal { + name: "mouseSelectionModeChanged" + Parameter { name: "mode"; type: "QQuickTextEdit::SelectionMode" } + } + Signal { + name: "linkActivated" + Parameter { name: "link"; type: "string" } + } + Signal { + name: "linkHovered" + revision: 2 + Parameter { name: "link"; type: "string" } + } + Signal { name: "editingFinished"; revision: 6 } + Signal { name: "paddingChanged"; revision: 6 } + Signal { name: "topPaddingChanged"; revision: 6 } + Signal { name: "leftPaddingChanged"; revision: 6 } + Signal { name: "rightPaddingChanged"; revision: 6 } + Signal { name: "bottomPaddingChanged"; revision: 6 } + Signal { + name: "tabStopDistanceChanged" + revision: 10 + Parameter { name: "distance"; type: "double" } + } + Method { name: "selectAll" } + Method { name: "selectWord" } + Method { + name: "select" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Method { name: "deselect" } + Method { + name: "isRightToLeft" + type: "bool" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Method { name: "cut" } + Method { name: "copy" } + Method { name: "paste" } + Method { name: "undo" } + Method { name: "redo" } + Method { + name: "insert" + Parameter { name: "position"; type: "int" } + Parameter { name: "text"; type: "string" } + } + Method { + name: "remove" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Method { + name: "append" + revision: 2 + Parameter { name: "text"; type: "string" } + } + Method { name: "clear"; revision: 7 } + Method { name: "q_textChanged" } + Method { + name: "q_contentsChange" + Parameter { type: "int" } + Parameter { type: "int" } + Parameter { type: "int" } + } + Method { name: "updateSelection" } + Method { name: "moveCursorDelegate" } + Method { name: "createCursor" } + Method { name: "q_canPasteChanged" } + Method { name: "updateWholeDocument" } + Method { + name: "invalidateBlock" + Parameter { name: "block"; type: "QTextBlock" } + } + Method { name: "updateCursor" } + Method { + name: "q_linkHovered" + Parameter { name: "link"; type: "string" } + } + Method { + name: "q_markerHovered" + Parameter { name: "hovered"; type: "bool" } + } + Method { name: "q_updateAlignment" } + Method { name: "updateSize" } + Method { name: "triggerPreprocess" } + Method { + name: "inputMethodQuery" + revision: 4 + type: "QVariant" + Parameter { name: "query"; type: "Qt::InputMethodQuery" } + Parameter { name: "argument"; type: "QVariant" } + } + Method { + name: "positionToRectangle" + type: "QRectF" + Parameter { type: "int" } + } + Method { + name: "positionAt" + type: "int" + Parameter { name: "x"; type: "double" } + Parameter { name: "y"; type: "double" } + } + Method { + name: "moveCursorSelection" + Parameter { name: "pos"; type: "int" } + } + Method { + name: "moveCursorSelection" + Parameter { name: "pos"; type: "int" } + Parameter { name: "mode"; type: "SelectionMode" } + } + Method { + name: "getText" + type: "string" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Method { + name: "getFormattedText" + type: "string" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Method { + name: "linkAt" + revision: 3 + type: "string" + Parameter { name: "x"; type: "double" } + Parameter { name: "y"; type: "double" } + } + } + Component { + file: "private/qquicktextinput_p.h" + name: "QQuickTextInput" + prototype: "QQuickImplicitSizeItem" + exports: [ + "QtQuick/TextInput 2.0", + "QtQuick/TextInput 2.1", + "QtQuick/TextInput 2.11", + "QtQuick/TextInput 2.2", + "QtQuick/TextInput 2.4", + "QtQuick/TextInput 2.6", + "QtQuick/TextInput 2.7", + "QtQuick/TextInput 2.9" + ] + exportMetaObjectRevisions: [0, 1, 11, 2, 4, 6, 7, 9] + Enum { + name: "EchoMode" + values: ["Normal", "NoEcho", "Password", "PasswordEchoOnEdit"] + } + Enum { + name: "HAlignment" + values: ["AlignLeft", "AlignRight", "AlignHCenter"] + } + Enum { + name: "VAlignment" + values: ["AlignTop", "AlignBottom", "AlignVCenter"] + } + Enum { + name: "WrapMode" + values: [ + "NoWrap", + "WordWrap", + "WrapAnywhere", + "WrapAtWordBoundaryOrAnywhere", + "Wrap" + ] + } + Enum { + name: "SelectionMode" + values: ["SelectCharacters", "SelectWords"] + } + Enum { + name: "CursorPosition" + values: ["CursorBetweenCharacters", "CursorOnCharacter"] + } + Enum { + name: "RenderType" + values: ["QtRendering", "NativeRendering"] + } + Property { name: "text"; type: "string" } + Property { name: "length"; type: "int"; isReadonly: true } + Property { name: "color"; type: "QColor" } + Property { name: "selectionColor"; type: "QColor" } + Property { name: "selectedTextColor"; type: "QColor" } + Property { name: "font"; type: "QFont" } + Property { name: "horizontalAlignment"; type: "HAlignment" } + Property { name: "effectiveHorizontalAlignment"; type: "HAlignment"; isReadonly: true } + Property { name: "verticalAlignment"; type: "VAlignment" } + Property { name: "wrapMode"; type: "WrapMode" } + Property { name: "readOnly"; type: "bool" } + Property { name: "cursorVisible"; type: "bool" } + Property { name: "cursorPosition"; type: "int" } + Property { name: "cursorRectangle"; type: "QRectF"; isReadonly: true } + Property { name: "cursorDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "overwriteMode"; type: "bool" } + Property { name: "selectionStart"; type: "int"; isReadonly: true } + Property { name: "selectionEnd"; type: "int"; isReadonly: true } + Property { name: "selectedText"; type: "string"; isReadonly: true } + Property { name: "maximumLength"; type: "int" } + Property { name: "validator"; type: "QValidator"; isPointer: true } + Property { name: "inputMask"; type: "string" } + Property { name: "inputMethodHints"; type: "Qt::InputMethodHints" } + Property { name: "acceptableInput"; type: "bool"; isReadonly: true } + Property { name: "echoMode"; type: "EchoMode" } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "passwordCharacter"; type: "string" } + Property { name: "passwordMaskDelay"; revision: 4; type: "int" } + Property { name: "displayText"; type: "string"; isReadonly: true } + Property { name: "preeditText"; revision: 7; type: "string"; isReadonly: true } + Property { name: "autoScroll"; type: "bool" } + Property { name: "selectByMouse"; type: "bool" } + Property { name: "mouseSelectionMode"; type: "SelectionMode" } + Property { name: "persistentSelection"; type: "bool" } + Property { name: "canPaste"; type: "bool"; isReadonly: true } + Property { name: "canUndo"; type: "bool"; isReadonly: true } + Property { name: "canRedo"; type: "bool"; isReadonly: true } + Property { name: "inputMethodComposing"; type: "bool"; isReadonly: true } + Property { name: "contentWidth"; type: "double"; isReadonly: true } + Property { name: "contentHeight"; type: "double"; isReadonly: true } + Property { name: "renderType"; type: "RenderType" } + Property { name: "padding"; revision: 6; type: "double" } + Property { name: "topPadding"; revision: 6; type: "double" } + Property { name: "leftPadding"; revision: 6; type: "double" } + Property { name: "rightPadding"; revision: 6; type: "double" } + Property { name: "bottomPadding"; revision: 6; type: "double" } + Signal { name: "accepted" } + Signal { name: "editingFinished"; revision: 2 } + Signal { name: "textEdited"; revision: 9 } + Signal { + name: "fontChanged" + Parameter { name: "font"; type: "QFont" } + } + Signal { + name: "horizontalAlignmentChanged" + Parameter { name: "alignment"; type: "QQuickTextInput::HAlignment" } + } + Signal { + name: "verticalAlignmentChanged" + Parameter { name: "alignment"; type: "QQuickTextInput::VAlignment" } + } + Signal { + name: "readOnlyChanged" + Parameter { name: "isReadOnly"; type: "bool" } + } + Signal { + name: "cursorVisibleChanged" + Parameter { name: "isCursorVisible"; type: "bool" } + } + Signal { + name: "overwriteModeChanged" + Parameter { name: "overwriteMode"; type: "bool" } + } + Signal { + name: "maximumLengthChanged" + Parameter { name: "maximumLength"; type: "int" } + } + Signal { + name: "inputMaskChanged" + Parameter { name: "inputMask"; type: "string" } + } + Signal { + name: "echoModeChanged" + Parameter { name: "echoMode"; type: "QQuickTextInput::EchoMode" } + } + Signal { + name: "passwordMaskDelayChanged" + revision: 4 + Parameter { name: "delay"; type: "int" } + } + Signal { name: "preeditTextChanged"; revision: 7 } + Signal { + name: "activeFocusOnPressChanged" + Parameter { name: "activeFocusOnPress"; type: "bool" } + } + Signal { + name: "autoScrollChanged" + Parameter { name: "autoScroll"; type: "bool" } + } + Signal { + name: "selectByMouseChanged" + Parameter { name: "selectByMouse"; type: "bool" } + } + Signal { + name: "mouseSelectionModeChanged" + Parameter { name: "mode"; type: "QQuickTextInput::SelectionMode" } + } + Signal { name: "contentSizeChanged" } + Signal { name: "paddingChanged"; revision: 6 } + Signal { name: "topPaddingChanged"; revision: 6 } + Signal { name: "leftPaddingChanged"; revision: 6 } + Signal { name: "rightPaddingChanged"; revision: 6 } + Signal { name: "bottomPaddingChanged"; revision: 6 } + Method { name: "selectAll" } + Method { name: "selectWord" } + Method { + name: "select" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Method { name: "deselect" } + Method { + name: "isRightToLeft" + type: "bool" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Method { name: "cut" } + Method { name: "copy" } + Method { name: "paste" } + Method { name: "undo" } + Method { name: "redo" } + Method { + name: "insert" + Parameter { name: "position"; type: "int" } + Parameter { name: "text"; type: "string" } + } + Method { + name: "remove" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Method { + name: "ensureVisible" + revision: 4 + Parameter { name: "position"; type: "int" } + } + Method { name: "clear"; revision: 7 } + Method { name: "selectionChanged" } + Method { name: "createCursor" } + Method { + name: "updateCursorRectangle" + Parameter { name: "scroll"; type: "bool" } + } + Method { name: "updateCursorRectangle" } + Method { name: "q_canPasteChanged" } + Method { name: "q_updateAlignment" } + Method { name: "triggerPreprocess" } + Method { name: "q_validatorChanged" } + Method { + name: "positionAt" + Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "positionToRectangle" + type: "QRectF" + Parameter { name: "pos"; type: "int" } + } + Method { + name: "moveCursorSelection" + Parameter { name: "pos"; type: "int" } + } + Method { + name: "moveCursorSelection" + Parameter { name: "pos"; type: "int" } + Parameter { name: "mode"; type: "SelectionMode" } + } + Method { + name: "inputMethodQuery" + revision: 4 + type: "QVariant" + Parameter { name: "query"; type: "Qt::InputMethodQuery" } + Parameter { name: "argument"; type: "QVariant" } + } + Method { + name: "getText" + type: "string" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + } + Component { + file: "private/qquicktext_p.h" + name: "QQuickTextLine" + prototype: "QObject" + Property { name: "number"; type: "int"; isReadonly: true } + Property { name: "width"; type: "double" } + Property { name: "height"; type: "double" } + Property { name: "x"; type: "double" } + Property { name: "y"; type: "double" } + Property { name: "implicitWidth"; revision: 15; type: "double"; isReadonly: true } + Property { name: "isLast"; revision: 15; type: "bool"; isReadonly: true } + } + Component { + file: "private/qquicktextmetrics_p.h" + name: "QQuickTextMetrics" + prototype: "QObject" + exports: ["QtQuick/TextMetrics 2.4"] + exportMetaObjectRevisions: [4] + Property { name: "font"; type: "QFont" } + Property { name: "text"; type: "string" } + Property { name: "advanceWidth"; type: "double"; isReadonly: true } + Property { name: "boundingRect"; type: "QRectF"; isReadonly: true } + Property { name: "width"; type: "double"; isReadonly: true } + Property { name: "height"; type: "double"; isReadonly: true } + Property { name: "tightBoundingRect"; type: "QRectF"; isReadonly: true } + Property { name: "elidedText"; type: "string"; isReadonly: true } + Property { name: "elide"; type: "Qt::TextElideMode" } + Property { name: "elideWidth"; type: "double" } + Signal { name: "metricsChanged" } + } + Component { + file: "private/qquickmultipointtoucharea_p.h" + name: "QQuickTouchPoint" + prototype: "QObject" + exports: ["QtQuick/TouchPoint 2.0", "QtQuick/TouchPoint 2.9"] + exportMetaObjectRevisions: [0, 9] + Property { name: "pointId"; type: "int"; isReadonly: true } + Property { name: "uniqueId"; revision: 9; type: "QPointingDeviceUniqueId"; isReadonly: true } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "x"; type: "double"; isReadonly: true } + Property { name: "y"; type: "double"; isReadonly: true } + Property { name: "ellipseDiameters"; revision: 9; type: "QSizeF"; isReadonly: true } + Property { name: "pressure"; type: "double"; isReadonly: true } + Property { name: "rotation"; revision: 9; type: "double"; isReadonly: true } + Property { name: "velocity"; type: "QVector2D"; isReadonly: true } + Property { name: "area"; type: "QRectF"; isReadonly: true } + Property { name: "startX"; type: "double"; isReadonly: true } + Property { name: "startY"; type: "double"; isReadonly: true } + Property { name: "previousX"; type: "double"; isReadonly: true } + Property { name: "previousY"; type: "double"; isReadonly: true } + Property { name: "sceneX"; type: "double"; isReadonly: true } + Property { name: "sceneY"; type: "double"; isReadonly: true } + Signal { name: "uniqueIdChanged"; revision: 9 } + Signal { name: "ellipseDiametersChanged"; revision: 9 } + Signal { name: "rotationChanged"; revision: 9 } + } + Component { + file: "qquickitem.h" + name: "QQuickTransform" + prototype: "QObject" + Method { name: "update" } + } + Component { + file: "private/qquicktransition_p.h" + name: "QQuickTransition" + defaultProperty: "animations" + prototype: "QObject" + exports: ["QtQuick/Transition 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "from"; type: "string" } + Property { name: "to"; type: "string" } + Property { name: "reversible"; type: "bool" } + Property { name: "running"; type: "bool"; isReadonly: true } + Property { name: "animations"; type: "QQuickAbstractAnimation"; isList: true; isReadonly: true } + Property { name: "enabled"; type: "bool" } + } + Component { + file: "private/qquicktranslate_p.h" + name: "QQuickTranslate" + prototype: "QQuickTransform" + exports: ["QtQuick/Translate 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "x"; type: "double" } + Property { name: "y"; type: "double" } + } + Component { + file: "private/qquickanimator_p.h" + name: "QQuickUniformAnimator" + prototype: "QQuickAnimator" + exports: [ + "QtQuick/UniformAnimator 2.12", + "QtQuick/UniformAnimator 2.2" + ] + exportMetaObjectRevisions: [12, 2] + Property { name: "uniform"; type: "string" } + Signal { + name: "uniformChanged" + Parameter { type: "string" } + } + } + Component { + file: "private/qquickanimation_p.h" + name: "QQuickVector3dAnimation" + prototype: "QQuickPropertyAnimation" + exports: [ + "QtQuick/Vector3dAnimation 2.0", + "QtQuick/Vector3dAnimation 2.12" + ] + exportMetaObjectRevisions: [0, 12] + Property { name: "from"; type: "QVector3D" } + Property { name: "to"; type: "QVector3D" } + } + Component { + file: "private/qquicklistview_p.h" + name: "QQuickViewSection" + prototype: "QObject" + exports: ["QtQuick/ViewSection 2.0"] + exportMetaObjectRevisions: [0] + Enum { + name: "SectionCriteria" + values: ["FullString", "FirstCharacter"] + } + Enum { + name: "LabelPositioning" + values: ["InlineLabels", "CurrentLabelAtStart", "NextLabelAtEnd"] + } + Property { name: "property"; type: "string" } + Property { name: "criteria"; type: "SectionCriteria" } + Property { name: "delegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "labelPositioning"; type: "int" } + Signal { name: "sectionsChanged" } + } + Component { + file: "private/qquickitemviewtransition_p.h" + name: "QQuickViewTransitionAttached" + prototype: "QObject" + exports: ["QtQuick/ViewTransition 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + attachedType: "QQuickViewTransitionAttached" + Property { name: "index"; type: "int"; isReadonly: true } + Property { name: "item"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "destination"; type: "QPointF"; isReadonly: true } + Property { name: "targetIndexes"; type: "QList<int>"; isReadonly: true } + Property { name: "targetItems"; type: "QObject"; isList: true; isReadonly: true } + } + Component { + file: "private/qquickevents_p_p.h" + name: "QQuickWheelEvent" + prototype: "QObject" + Property { name: "x"; type: "double"; isReadonly: true } + Property { name: "y"; type: "double"; isReadonly: true } + Property { name: "angleDelta"; type: "QPoint"; isReadonly: true } + Property { name: "pixelDelta"; type: "QPoint"; isReadonly: true } + Property { name: "buttons"; type: "int"; isReadonly: true } + Property { name: "modifiers"; type: "int"; isReadonly: true } + Property { name: "inverted"; type: "bool"; isReadonly: true } + Property { name: "accepted"; type: "bool" } + } + Component { + file: "private/qquickwheelhandler_p.h" + name: "QQuickWheelHandler" + prototype: "QQuickSinglePointHandler" + exports: ["QtQuick/WheelHandler 2.14", "QtQuick/WheelHandler 2.15"] + exportMetaObjectRevisions: [14, 15] + Property { name: "orientation"; type: "Qt::Orientation" } + Property { name: "invertible"; type: "bool" } + Property { name: "activeTimeout"; type: "double" } + Property { name: "rotation"; type: "double" } + Property { name: "rotationScale"; type: "double" } + Property { name: "property"; type: "string" } + Property { name: "targetScaleMultiplier"; type: "double" } + Property { name: "targetTransformAroundCursor"; type: "bool" } + Signal { + name: "wheel" + Parameter { name: "event"; type: "QQuickPointerScrollEvent"; isPointer: true } + } + } + Component { + file: "private/qquickanimator_p.h" + name: "QQuickXAnimator" + prototype: "QQuickAnimator" + exports: ["QtQuick/XAnimator 2.12", "QtQuick/XAnimator 2.2"] + exportMetaObjectRevisions: [12, 2] + } + Component { + file: "private/qquickanimator_p.h" + name: "QQuickYAnimator" + prototype: "QQuickAnimator" + exports: ["QtQuick/YAnimator 2.12", "QtQuick/YAnimator 2.2"] + exportMetaObjectRevisions: [12, 2] + } + Component { + file: "private/qquickforeignutils_p.h" + name: "QRegExpValidator" + prototype: "QValidator" + exports: ["QtQuick/RegExpValidator 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "regExp"; type: "QRegExp" } + Signal { + name: "regExpChanged" + Parameter { name: "regExp"; type: "QRegExp" } + } + } + Component { + file: "private/qquickforeignutils_p.h" + name: "QRegularExpressionValidator" + prototype: "QValidator" + exports: ["QtQuick/RegularExpressionValidator 2.14"] + exportMetaObjectRevisions: [14] + Property { name: "regularExpression"; type: "QRegularExpression" } + Signal { + name: "regularExpressionChanged" + Parameter { name: "re"; type: "QRegularExpression" } + } + Method { + name: "setRegularExpression" + Parameter { name: "re"; type: "QRegularExpression" } + } + } + Component { + file: "private/qquickforeignutils_p.h" + name: "QValidator" + prototype: "QObject" + Enum { + name: "State" + values: ["Invalid", "Intermediate", "Acceptable"] + } + Signal { name: "changed" } + } +} diff --git a/deployment_test/QtQuick.2/qmldir b/deployment_test/QtQuick.2/qmldir new file mode 100644 index 0000000000000000000000000000000000000000..e4e7f5d00b6c8b3429fb5fcdbae15f6e71bd95a1 --- /dev/null +++ b/deployment_test/QtQuick.2/qmldir @@ -0,0 +1,6 @@ +module QtQuick +plugin qtquick2plugin +classname QtQuick2Plugin +typeinfo plugins.qmltypes +depends QtQml 2.15 +designersupported diff --git a/deployment_test/QtQuick.2/qtquick2plugin.dll b/deployment_test/QtQuick.2/qtquick2plugin.dll new file mode 100644 index 0000000000000000000000000000000000000000..8af255d64c5547e09b8e62c10f401ad1726c73ba Binary files /dev/null and b/deployment_test/QtQuick.2/qtquick2plugin.dll differ diff --git a/deployment_test/QtQuick/Controls.2/AbstractButton.qml b/deployment_test/QtQuick/Controls.2/AbstractButton.qml new file mode 100644 index 0000000000000000000000000000000000000000..50ddb933a7aa6675d7fa5d94b605b205a3bc0ac0 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/AbstractButton.qml @@ -0,0 +1,47 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T + +T.AbstractButton { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) +} diff --git a/deployment_test/QtQuick/Controls.2/Action.qml b/deployment_test/QtQuick/Controls.2/Action.qml new file mode 100644 index 0000000000000000000000000000000000000000..996e9086a0de60bf80cf9da809272e53493209b9 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Action.qml @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T + +T.Action { } diff --git a/deployment_test/QtQuick/Controls.2/ActionGroup.qml b/deployment_test/QtQuick/Controls.2/ActionGroup.qml new file mode 100644 index 0000000000000000000000000000000000000000..89e72c8fcfef447f6dff7e5c5faac6a014eec269 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/ActionGroup.qml @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T + +T.ActionGroup { } diff --git a/deployment_test/QtQuick/Controls.2/ApplicationWindow.qml b/deployment_test/QtQuick/Controls.2/ApplicationWindow.qml new file mode 100644 index 0000000000000000000000000000000000000000..4686a298e8c48b8956a403d185914d718723e943 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/ApplicationWindow.qml @@ -0,0 +1,55 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Window 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Templates 2.12 as T + +T.ApplicationWindow { + id: window + + color: palette.window + + overlay.modal: Rectangle { + color: Color.transparent(window.palette.shadow, 0.5) + } + + overlay.modeless: Rectangle { + color: Color.transparent(window.palette.shadow, 0.12) + } +} diff --git a/deployment_test/QtQuick/Controls.2/BusyIndicator.qml b/deployment_test/QtQuick/Controls.2/BusyIndicator.qml new file mode 100644 index 0000000000000000000000000000000000000000..ff5c191cbc3efcccd70360c1bfcbf7c020531312 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/BusyIndicator.qml @@ -0,0 +1,63 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Templates 2.12 as T + +T.BusyIndicator { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + padding: 6 + + contentItem: BusyIndicatorImpl { + implicitWidth: 48 + implicitHeight: 48 + + pen: control.palette.dark + fill: control.palette.dark + + running: control.running + opacity: control.running ? 1 : 0 + Behavior on opacity { OpacityAnimator { duration: 250 } } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Button.qml b/deployment_test/QtQuick/Controls.2/Button.qml new file mode 100644 index 0000000000000000000000000000000000000000..a9e7fce63ba5cc173f067490f2ccbbe47f320924 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Button.qml @@ -0,0 +1,80 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Templates 2.12 as T + +T.Button { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + padding: 6 + horizontalPadding: padding + 2 + spacing: 6 + + icon.width: 24 + icon.height: 24 + icon.color: control.checked || control.highlighted ? control.palette.brightText : + control.flat && !control.down ? (control.visualFocus ? control.palette.highlight : control.palette.windowText) : control.palette.buttonText + + contentItem: IconLabel { + spacing: control.spacing + mirrored: control.mirrored + display: control.display + + icon: control.icon + text: control.text + font: control.font + color: control.checked || control.highlighted ? control.palette.brightText : + control.flat && !control.down ? (control.visualFocus ? control.palette.highlight : control.palette.windowText) : control.palette.buttonText + } + + background: Rectangle { + implicitWidth: 100 + implicitHeight: 40 + visible: !control.flat || control.down || control.checked || control.highlighted + color: Color.blend(control.checked || control.highlighted ? control.palette.dark : control.palette.button, + control.palette.mid, control.down ? 0.5 : 0.0) + border.color: control.palette.highlight + border.width: control.visualFocus ? 2 : 0 + } +} diff --git a/deployment_test/QtQuick/Controls.2/ButtonGroup.qml b/deployment_test/QtQuick/Controls.2/ButtonGroup.qml new file mode 100644 index 0000000000000000000000000000000000000000..cf0355ba7b1b8034f60ea7daf42c5ecf72a5c61e --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/ButtonGroup.qml @@ -0,0 +1,40 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T + +T.ButtonGroup { } diff --git a/deployment_test/QtQuick/Controls.2/CheckBox.qml b/deployment_test/QtQuick/Controls.2/CheckBox.qml new file mode 100644 index 0000000000000000000000000000000000000000..b1f50ed1bb1da55fc2a3381aa9fb1f2cedea953f --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/CheckBox.qml @@ -0,0 +1,93 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 + +T.CheckBox { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + padding: 6 + spacing: 6 + + // keep in sync with CheckDelegate.qml (shared CheckIndicator.qml was removed for performance reasons) + indicator: Rectangle { + implicitWidth: 28 + implicitHeight: 28 + + x: control.text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + + color: control.down ? control.palette.light : control.palette.base + border.width: control.visualFocus ? 2 : 1 + border.color: control.visualFocus ? control.palette.highlight : control.palette.mid + + ColorImage { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + defaultColor: "#353637" + color: control.palette.text + source: "qrc:/qt-project.org/imports/QtQuick/Controls.2/images/check.png" + visible: control.checkState === Qt.Checked + } + + Rectangle { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + width: 16 + height: 3 + color: control.palette.text + visible: control.checkState === Qt.PartiallyChecked + } + } + + contentItem: CheckLabel { + leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 + + text: control.text + font: control.font + color: control.palette.windowText + } +} diff --git a/deployment_test/QtQuick/Controls.2/CheckDelegate.qml b/deployment_test/QtQuick/Controls.2/CheckDelegate.qml new file mode 100644 index 0000000000000000000000000000000000000000..71b390acb1803030f02e2e5c6d61ffa22b2df855 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/CheckDelegate.qml @@ -0,0 +1,110 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 + +T.CheckDelegate { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + padding: 12 + spacing: 12 + + icon.width: 24 + icon.height: 24 + icon.color: control.palette.text + + contentItem: IconLabel { + leftPadding: control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: !control.mirrored ? control.indicator.width + control.spacing : 0 + + spacing: control.spacing + mirrored: control.mirrored + display: control.display + alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft + + icon: control.icon + text: control.text + font: control.font + color: control.palette.text + } + + // keep in sync with CheckBox.qml (shared CheckIndicator.qml was removed for performance reasons) + indicator: Rectangle { + implicitWidth: 28 + implicitHeight: 28 + + x: control.mirrored ? control.leftPadding : control.width - width - control.rightPadding + y: control.topPadding + (control.availableHeight - height) / 2 + + color: control.down ? control.palette.light : control.palette.base + border.width: control.visualFocus ? 2 : 1 + border.color: control.visualFocus ? control.palette.highlight : control.palette.mid + + ColorImage { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + defaultColor: "#353637" + color: control.palette.text + source: "qrc:/qt-project.org/imports/QtQuick/Controls.2/images/check.png" + visible: control.checkState === Qt.Checked + } + + Rectangle { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + width: 16 + height: 3 + color: control.palette.text + visible: control.checkState === Qt.PartiallyChecked + } + } + + background: Rectangle { + implicitWidth: 100 + implicitHeight: 40 + visible: control.down || control.highlighted + color: control.down ? control.palette.midlight : control.palette.light + } +} diff --git a/deployment_test/QtQuick/Controls.2/ComboBox.qml b/deployment_test/QtQuick/Controls.2/ComboBox.qml new file mode 100644 index 0000000000000000000000000000000000000000..e9f93d66f6ecb8ed64e67ba1804405b1f1a65559 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/ComboBox.qml @@ -0,0 +1,142 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.15 +import QtQuick.Window 2.15 +import QtQuick.Controls 2.15 +import QtQuick.Controls.impl 2.15 +import QtQuick.Templates 2.15 as T + +T.ComboBox { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + leftPadding: padding + (!control.mirrored || !indicator || !indicator.visible ? 0 : indicator.width + spacing) + rightPadding: padding + (control.mirrored || !indicator || !indicator.visible ? 0 : indicator.width + spacing) + + delegate: ItemDelegate { + width: ListView.view.width + text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] : model[control.textRole]) : modelData + palette.text: control.palette.text + palette.highlightedText: control.palette.highlightedText + font.weight: control.currentIndex === index ? Font.DemiBold : Font.Normal + highlighted: control.highlightedIndex === index + hoverEnabled: control.hoverEnabled + } + + indicator: ColorImage { + x: control.mirrored ? control.padding : control.width - width - control.padding + y: control.topPadding + (control.availableHeight - height) / 2 + color: control.palette.dark + defaultColor: "#353637" + source: "qrc:/qt-project.org/imports/QtQuick/Controls.2/images/double-arrow.png" + opacity: enabled ? 1 : 0.3 + } + + contentItem: T.TextField { + leftPadding: !control.mirrored ? 12 : control.editable && activeFocus ? 3 : 1 + rightPadding: control.mirrored ? 12 : control.editable && activeFocus ? 3 : 1 + topPadding: 6 - control.padding + bottomPadding: 6 - control.padding + + text: control.editable ? control.editText : control.displayText + + enabled: control.editable + autoScroll: control.editable + readOnly: control.down + inputMethodHints: control.inputMethodHints + validator: control.validator + selectByMouse: control.selectTextByMouse + + font: control.font + color: control.editable ? control.palette.text : control.palette.buttonText + selectionColor: control.palette.highlight + selectedTextColor: control.palette.highlightedText + verticalAlignment: Text.AlignVCenter + + background: Rectangle { + visible: control.enabled && control.editable && !control.flat + border.width: parent && parent.activeFocus ? 2 : 1 + border.color: parent && parent.activeFocus ? control.palette.highlight : control.palette.button + color: control.palette.base + } + } + + background: Rectangle { + implicitWidth: 140 + implicitHeight: 40 + + color: control.down ? control.palette.mid : control.palette.button + border.color: control.palette.highlight + border.width: !control.editable && control.visualFocus ? 2 : 0 + visible: !control.flat || control.down + } + + popup: T.Popup { + y: control.height + width: control.width + height: Math.min(contentItem.implicitHeight, control.Window.height - topMargin - bottomMargin) + topMargin: 6 + bottomMargin: 6 + + contentItem: ListView { + clip: true + implicitHeight: contentHeight + model: control.delegateModel + currentIndex: control.highlightedIndex + highlightMoveDuration: 0 + + Rectangle { + z: 10 + width: parent.width + height: parent.height + color: "transparent" + border.color: control.palette.mid + } + + T.ScrollIndicator.vertical: ScrollIndicator { } + } + + background: Rectangle { + color: control.palette.window + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Container.qml b/deployment_test/QtQuick/Controls.2/Container.qml new file mode 100644 index 0000000000000000000000000000000000000000..83ab957d33b984797fc49f463f120c8e4a4babb8 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Container.qml @@ -0,0 +1,47 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T + +T.Container { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) +} diff --git a/deployment_test/QtQuick/Controls.2/Control.qml b/deployment_test/QtQuick/Controls.2/Control.qml new file mode 100644 index 0000000000000000000000000000000000000000..a963a56330c800e75dcd1b27f3ece3db3f308245 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Control.qml @@ -0,0 +1,47 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T + +T.Control { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) +} diff --git a/deployment_test/QtQuick/Controls.2/DelayButton.qml b/deployment_test/QtQuick/Controls.2/DelayButton.qml new file mode 100644 index 0000000000000000000000000000000000000000..1c545a71e67a38942934bdbba4021cab24064b2e --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/DelayButton.qml @@ -0,0 +1,105 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Templates 2.12 as T + +T.DelayButton { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + padding: 6 + horizontalPadding: padding + 2 + + transition: Transition { + NumberAnimation { + duration: control.delay * (control.pressed ? 1.0 - control.progress : 0.3 * control.progress) + } + } + + contentItem: ItemGroup { + ClippedText { + clip: control.progress > 0 + clipX: -control.leftPadding + control.progress * control.width + clipWidth: (1.0 - control.progress) * control.width + visible: control.progress < 1 + + text: control.text + font: control.font + opacity: enabled ? 1 : 0.3 + color: control.palette.buttonText + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + elide: Text.ElideRight + } + + ClippedText { + clip: control.progress > 0 + clipX: -control.leftPadding + clipWidth: control.progress * control.width + visible: control.progress > 0 + + text: control.text + font: control.font + opacity: enabled ? 1 : 0.3 + color: control.palette.brightText + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + elide: Text.ElideRight + } + } + + background: Rectangle { + implicitWidth: 100 + implicitHeight: 40 + color: Color.blend(control.palette.button, control.palette.mid, control.down ? 0.5 : 0.0) + border.color: control.palette.highlight + border.width: control.visualFocus ? 2 : 0 + + PaddedRectangle { + padding: control.visualFocus ? 2 : 0 + width: control.progress * parent.width + height: parent.height + color: Color.blend(control.palette.dark, control.palette.mid, control.down ? 0.5 : 0.0) + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Dial.qml b/deployment_test/QtQuick/Controls.2/Dial.qml new file mode 100644 index 0000000000000000000000000000000000000000..cc4618a56927c6d7c7f8921998179deac73ba40e --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Dial.qml @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Templates 2.12 as T + +T.Dial { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) || 184 // ### remove 184 in Qt 6 + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) || 184 // ### remove 184 in Qt 6 + + background: DialImpl { + implicitWidth: 184 + implicitHeight: 184 + color: control.visualFocus ? control.palette.highlight : control.palette.dark + progress: control.position + opacity: control.enabled ? 1 : 0.3 + } + + handle: ColorImage { + x: control.background.x + control.background.width / 2 - control.handle.width / 2 + y: control.background.y + control.background.height / 2 - control.handle.height / 2 + width: 14 + height: 10 + defaultColor: "#353637" + color: control.visualFocus ? control.palette.highlight : control.palette.dark + source: "qrc:/qt-project.org/imports/QtQuick/Controls.2/images/dial-indicator.png" + antialiasing: true + opacity: control.enabled ? 1 : 0.3 + transform: [ + Translate { + y: -Math.min(control.background.width, control.background.height) * 0.4 + control.handle.height / 2 + }, + Rotation { + angle: control.angle + origin.x: control.handle.width / 2 + origin.y: control.handle.height / 2 + } + ] + } +} diff --git a/deployment_test/QtQuick/Controls.2/Dialog.qml b/deployment_test/QtQuick/Controls.2/Dialog.qml new file mode 100644 index 0000000000000000000000000000000000000000..6c2e4b1b190246f58ed99aee0c7d093d1fa5814d --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Dialog.qml @@ -0,0 +1,86 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 + +T.Dialog { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding, + implicitHeaderWidth, + implicitFooterWidth) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding + + (implicitHeaderHeight > 0 ? implicitHeaderHeight + spacing : 0) + + (implicitFooterHeight > 0 ? implicitFooterHeight + spacing : 0)) + + padding: 12 + + background: Rectangle { + color: control.palette.window + border.color: control.palette.dark + } + + header: Label { + text: control.title + visible: control.title + elide: Label.ElideRight + font.bold: true + padding: 12 + background: Rectangle { + x: 1; y: 1 + width: parent.width - 2 + height: parent.height - 1 + color: control.palette.window + } + } + + footer: DialogButtonBox { + visible: count > 0 + } + + T.Overlay.modal: Rectangle { + color: Color.transparent(control.palette.shadow, 0.5) + } + + T.Overlay.modeless: Rectangle { + color: Color.transparent(control.palette.shadow, 0.12) + } +} diff --git a/deployment_test/QtQuick/Controls.2/DialogButtonBox.qml b/deployment_test/QtQuick/Controls.2/DialogButtonBox.qml new file mode 100644 index 0000000000000000000000000000000000000000..3c9d5b48eb2626d54a1ae895ecb3c14cc6ab57b1 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/DialogButtonBox.qml @@ -0,0 +1,72 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T + +T.DialogButtonBox { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + (control.count === 1 ? implicitContentWidth * 2 : implicitContentWidth) + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + contentWidth: contentItem.contentWidth + + spacing: 1 + padding: 12 + alignment: count === 1 ? Qt.AlignRight : undefined + + delegate: Button { + width: control.count === 1 ? control.availableWidth / 2 : undefined + } + + contentItem: ListView { + model: control.contentModel + spacing: control.spacing + orientation: ListView.Horizontal + boundsBehavior: Flickable.StopAtBounds + snapMode: ListView.SnapToItem + } + + background: Rectangle { + implicitHeight: 40 + x: 1; y: 1 + width: parent.width - 2 + height: parent.height - 2 + color: control.palette.window + } +} diff --git a/deployment_test/QtQuick/Controls.2/Drawer.qml b/deployment_test/QtQuick/Controls.2/Drawer.qml new file mode 100644 index 0000000000000000000000000000000000000000..17465fd44c58b5e03ec32145e526a2293cee6939 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Drawer.qml @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Templates 2.12 as T + +T.Drawer { + id: control + + parent: T.Overlay.overlay + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + topPadding: control.edge === Qt.BottomEdge + leftPadding: control.edge === Qt.RightEdge + rightPadding: control.edge === Qt.LeftEdge + bottomPadding: control.edge === Qt.TopEdge + + enter: Transition { SmoothedAnimation { velocity: 5 } } + exit: Transition { SmoothedAnimation { velocity: 5 } } + + background: Rectangle { + color: control.palette.window + Rectangle { + readonly property bool horizontal: control.edge === Qt.LeftEdge || control.edge === Qt.RightEdge + width: horizontal ? 1 : parent.width + height: horizontal ? parent.height : 1 + color: control.palette.dark + x: control.edge === Qt.LeftEdge ? parent.width - 1 : 0 + y: control.edge === Qt.TopEdge ? parent.height - 1 : 0 + } + } + + T.Overlay.modal: Rectangle { + color: Color.transparent(control.palette.shadow, 0.5) + } + + T.Overlay.modeless: Rectangle { + color: Color.transparent(control.palette.shadow, 0.12) + } +} diff --git a/deployment_test/QtQuick/Controls.2/Frame.qml b/deployment_test/QtQuick/Controls.2/Frame.qml new file mode 100644 index 0000000000000000000000000000000000000000..2fe461040e2570f2b9a3dde2afd53bc1854c2417 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Frame.qml @@ -0,0 +1,56 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Templates 2.12 as T + +T.Frame { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + padding: 12 + + background: Rectangle { + color: "transparent" + border.color: control.palette.mid + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/ApplicationWindow.qml b/deployment_test/QtQuick/Controls.2/Fusion/ApplicationWindow.qml new file mode 100644 index 0000000000000000000000000000000000000000..9079403ec57fe593b7d794896f05431b7c0bfdb4 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/ApplicationWindow.qml @@ -0,0 +1,55 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Window 2.2 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +T.ApplicationWindow { + id: window + + color: palette.window + + overlay.modal: Rectangle { + color: Fusion.topShadow + } + + overlay.modeless: Rectangle { + color: Fusion.topShadow + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/BusyIndicator.qml b/deployment_test/QtQuick/Controls.2/Fusion/BusyIndicator.qml new file mode 100644 index 0000000000000000000000000000000000000000..554c3368de7d84a442b5db95bf299e8e4d49e96f --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/BusyIndicator.qml @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +T.BusyIndicator { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + padding: 6 + + contentItem: BusyIndicatorImpl { + implicitWidth: 28 + implicitHeight: 28 + color: control.palette.text + + running: control.running + opacity: control.running ? 1 : 0 + Behavior on opacity { OpacityAnimator { duration: 250 } } + + RotationAnimator on rotation { + running: control.running || contentItem.visible + from: 0 + to: 360 + duration: 1000 + loops: Animation.Infinite + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/Button.qml b/deployment_test/QtQuick/Controls.2/Fusion/Button.qml new file mode 100644 index 0000000000000000000000000000000000000000..7822634de30701a3bb1df7a1843ee8092b658afc --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/Button.qml @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +T.Button { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + padding: 4 + spacing: 6 + + icon.width: 16 + icon.height: 16 + + contentItem: IconLabel { + spacing: control.spacing + mirrored: control.mirrored + display: control.display + + icon: control.icon + text: control.text + font: control.font + color: control.palette.buttonText + } + + background: ButtonPanel { + implicitWidth: 80 + implicitHeight: 24 + + control: control + visible: !control.flat || control.down || control.checked || control.highlighted || control.visualFocus || control.hovered + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/ButtonPanel.qml b/deployment_test/QtQuick/Controls.2/Fusion/ButtonPanel.qml new file mode 100644 index 0000000000000000000000000000000000000000..125aa2f3dd6f716205b3e8ef3aa6dab7d646811e --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/ButtonPanel.qml @@ -0,0 +1,77 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +Rectangle { + id: panel + + property Item control + property bool highlighted: control.highlighted + + visible: !control.flat || control.down || control.checked + + color: Fusion.buttonColor(control.palette, panel.highlighted, control.down || control.checked, control.hovered) + gradient: control.down || control.checked ? null : buttonGradient + + Gradient { + id: buttonGradient + GradientStop { + position: 0 + color: Fusion.gradientStart(Fusion.buttonColor(panel.control.palette, panel.highlighted, panel.control.down, panel.control.hovered)) + } + GradientStop { + position: 1 + color: Fusion.gradientStop(Fusion.buttonColor(panel.control.palette, panel.highlighted, panel.control.down, panel.control.hovered)) + } + } + + radius: 2 + border.color: Fusion.buttonOutline(control.palette, panel.highlighted || control.visualFocus, control.enabled) + + Rectangle { + x: 1; y: 1 + width: parent.width - 2 + height: parent.height - 2 + border.color: Fusion.innerContrastLine + color: "transparent" + radius: 2 + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/CheckBox.qml b/deployment_test/QtQuick/Controls.2/Fusion/CheckBox.qml new file mode 100644 index 0000000000000000000000000000000000000000..edb4c77faab397dbe5a8a6b5cd6e32af2e6c36c8 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/CheckBox.qml @@ -0,0 +1,72 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +T.CheckBox { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + padding: 6 + spacing: 6 + + indicator: CheckIndicator { + x: control.text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + control: control + } + + contentItem: Text { + leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 + + text: control.text + font: control.font + color: control.palette.windowText + elide: Text.ElideRight + verticalAlignment: Text.AlignVCenter + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/CheckDelegate.qml b/deployment_test/QtQuick/Controls.2/Fusion/CheckDelegate.qml new file mode 100644 index 0000000000000000000000000000000000000000..1b97b1fd38d2c0967e5496a59272240ddff51b15 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/CheckDelegate.qml @@ -0,0 +1,87 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +T.CheckDelegate { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + padding: 6 + spacing: 6 + + icon.width: 16 + icon.height: 16 + + contentItem: IconLabel { + leftPadding: control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: !control.mirrored ? control.indicator.width + control.spacing : 0 + + spacing: control.spacing + mirrored: control.mirrored + display: control.display + alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft + + icon: control.icon + text: control.text + font: control.font + color: control.highlighted ? Fusion.highlightedText(control.palette) : control.palette.text + } + + indicator: CheckIndicator { + x: control.mirrored ? control.leftPadding : control.width - width - control.rightPadding + y: control.topPadding + (control.availableHeight - height) / 2 + + control: control + } + + background: Rectangle { + implicitWidth: 100 + implicitHeight: 20 + color: control.down ? Fusion.buttonColor(control.palette, false, true, true) + : control.highlighted ? Fusion.highlight(control.palette) : control.palette.base + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/CheckIndicator.qml b/deployment_test/QtQuick/Controls.2/Fusion/CheckIndicator.qml new file mode 100644 index 0000000000000000000000000000000000000000..7dcfee30511fea99b1832382ec2a5db91619a69a --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/CheckIndicator.qml @@ -0,0 +1,92 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +Rectangle { + id: indicator + + property Item control + readonly property color pressedColor: Fusion.mergedColors(control.palette.base, control.palette.windowText, 85) + readonly property color checkMarkColor: Qt.darker(control.palette.text, 1.2) + + implicitWidth: 14 + implicitHeight: 14 + + color: control.down ? indicator.pressedColor : control.palette.base + border.color: control.visualFocus ? Fusion.highlightedOutline(control.palette) + : Qt.lighter(Fusion.outline(control.palette), 1.1) + + Rectangle { + x: 1; y: 1 + width: parent.width - 2 + height: 1 + color: Fusion.topShadow + visible: indicator.control.enabled && !indicator.control.down + } + + ColorImage { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + color: Color.transparent(indicator.checkMarkColor, 210 / 255) + source: "qrc:/qt-project.org/imports/QtQuick/Controls.2/Fusion/images/checkmark.png" + visible: indicator.control.checkState === Qt.Checked || (indicator.control.checked && indicator.control.checkState === undefined) + } + + Rectangle { + x: 3; y: 3 + width: parent.width - 6 + height: parent.width - 6 + + visible: indicator.control.checkState === Qt.PartiallyChecked + + gradient: Gradient { + GradientStop { + position: 0 + color: Color.transparent(indicator.checkMarkColor, 80 / 255) + } + GradientStop { + position: 1 + color: Color.transparent(indicator.checkMarkColor, 140 / 255) + } + } + border.color: Color.transparent(indicator.checkMarkColor, 180 / 255) + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/ComboBox.qml b/deployment_test/QtQuick/Controls.2/Fusion/ComboBox.qml new file mode 100644 index 0000000000000000000000000000000000000000..5e26f90ec4353c582bcba88539750cdc553b270e --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/ComboBox.qml @@ -0,0 +1,176 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.15 +import QtQuick.Window 2.15 +import QtQuick.Templates 2.15 as T +import QtQuick.Controls 2.15 +import QtQuick.Controls.impl 2.15 +import QtQuick.Controls.Fusion 2.15 +import QtQuick.Controls.Fusion.impl 2.15 + +T.ComboBox { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + leftPadding: padding + (!control.mirrored || !indicator || !indicator.visible ? 0 : indicator.width + spacing) + rightPadding: padding + (control.mirrored || !indicator || !indicator.visible ? 0 : indicator.width + spacing) + + delegate: MenuItem { + width: ListView.view.width + text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] : model[control.textRole]) : modelData + font.weight: control.currentIndex === index ? Font.DemiBold : Font.Normal + highlighted: control.highlightedIndex === index + hoverEnabled: control.hoverEnabled + } + + indicator: ColorImage { + x: control.mirrored ? control.padding : control.width - width - control.padding + y: control.topPadding + (control.availableHeight - height) / 2 + color: control.editable ? control.palette.text : control.palette.buttonText + source: "qrc:/qt-project.org/imports/QtQuick/Controls.2/Fusion/images/arrow.png" + width: 20 + fillMode: Image.Pad + } + + contentItem: T.TextField { + topPadding: 4 + leftPadding: 4 - control.padding + rightPadding: 4 - control.padding + bottomPadding: 4 + + text: control.editable ? control.editText : control.displayText + + enabled: control.editable + autoScroll: control.editable + readOnly: control.down + inputMethodHints: control.inputMethodHints + validator: control.validator + selectByMouse: control.selectTextByMouse + + font: control.font + color: control.editable ? control.palette.text : control.palette.buttonText + selectionColor: control.palette.highlight + selectedTextColor: control.palette.highlightedText + verticalAlignment: Text.AlignVCenter + + background: PaddedRectangle { + clip: true + radius: 2 + padding: 1 + leftPadding: control.mirrored ? -2 : padding + rightPadding: !control.mirrored ? -2 : padding + color: control.palette.base + visible: control.editable && !control.flat + + Rectangle { + x: parent.width - width + y: 1 + width: 1 + height: parent.height - 2 + color: Fusion.buttonOutline(control.palette, control.activeFocus, control.enabled) + } + + Rectangle { + x: 1 + y: 1 + width: parent.width - 3 + height: 1 + color: Fusion.topShadow + } + } + + Rectangle { + x: 1 - control.leftPadding + y: 1 + width: control.width - 2 + height: control.height - 2 + color: "transparent" + border.color: Color.transparent(Fusion.highlightedOutline(control.palette), 40 / 255) + visible: control.activeFocus + radius: 1.7 + } + } + + background: ButtonPanel { + implicitWidth: 120 + implicitHeight: 24 + + control: control + visible: !control.flat || control.down + // ### TODO: fix control.contentItem.activeFocus + highlighted: control.visualFocus || control.contentItem.activeFocus + } + + popup: T.Popup { + width: control.width + height: Math.min(contentItem.implicitHeight + 2, control.Window.height - topMargin - bottomMargin) + topMargin: 6 + bottomMargin: 6 + palette: control.palette + padding: 1 + + contentItem: ListView { + clip: true + implicitHeight: contentHeight + model: control.delegateModel + currentIndex: control.highlightedIndex + highlightRangeMode: ListView.ApplyRange + highlightMoveDuration: 0 + + T.ScrollBar.vertical: ScrollBar { } + } + + background: Rectangle { + color: control.popup.palette.window + border.color: Fusion.outline(control.palette) + + Rectangle { + z: -1 + x: 1; y: 1 + width: parent.width + height: parent.height + color: control.palette.shadow + opacity: 0.2 + } + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/DelayButton.qml b/deployment_test/QtQuick/Controls.2/Fusion/DelayButton.qml new file mode 100644 index 0000000000000000000000000000000000000000..622de111df599798e6b083a6cf1dc9373c1c29ca --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/DelayButton.qml @@ -0,0 +1,116 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +T.DelayButton { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + padding: 6 + + transition: Transition { + NumberAnimation { + duration: control.delay * (control.pressed ? 1.0 - control.progress : 0.3 * control.progress) + } + } + + contentItem: ItemGroup { + ClippedText { + clip: control.progress > 0 + clipX: -control.leftPadding + (control.mirrored ? 0 : control.progress * control.width) + clipWidth: control.width + visible: control.mirrored ? control.progress > 0 : control.progress < 1 + + text: control.text + font: control.font + color: control.mirrored ? control.palette.brightText : control.palette.buttonText + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + elide: Text.ElideRight + } + + ClippedText { + clip: control.progress > 0 + clipX: -control.leftPadding + clipWidth: (control.mirrored ? 1.0 - control.progress : control.progress) * control.width + visible: control.mirrored ? control.progress < 1 : control.progress > 0 + + text: control.text + font: control.font + color: control.mirrored ? control.palette.buttonText : control.palette.brightText + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + elide: Text.ElideRight + } + } + + background: ButtonPanel { + implicitWidth: 80 + implicitHeight: 24 + + control: control + highlighted: false + scale: control.mirrored ? -1 : 1 + + Rectangle { + width: control.progress * parent.width + height: parent.height + + radius: 2 + border.color: Qt.darker(Fusion.highlight(control.palette), 1.4) + gradient: Gradient { + GradientStop { + position: 0 + color: Qt.lighter(Fusion.highlight(control.palette), 1.2) + } + GradientStop { + position: 1 + color: Fusion.highlight(control.palette) + } + } + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/Dial.qml b/deployment_test/QtQuick/Controls.2/Fusion/Dial.qml new file mode 100644 index 0000000000000000000000000000000000000000..a133724260f43c13c8c3fda5052a4903a482fd24 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/Dial.qml @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +T.Dial { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) || 100 // ### remove 100 in Qt 6 + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) || 100 // ### remove 100 in Qt 6 + + background: DialImpl { + implicitWidth: 100 + implicitHeight: 100 + palette: control.palette + highlight: control.visualFocus + } + + handle: KnobImpl { + x: control.background.x + control.background.width / 2 - control.handle.width / 2 + y: control.background.y + control.background.height / 2 - control.handle.height / 2 + width: control.width / 7 + height: control.height / 7 + palette: control.palette + transform: [ + Translate { + y: -Math.min(control.background.width, control.background.height) * 0.42 + control.handle.height + }, + Rotation { + angle: control.angle + origin.x: control.handle.width / 2 + origin.y: control.handle.height / 2 + } + ] + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/Dialog.qml b/deployment_test/QtQuick/Controls.2/Fusion/Dialog.qml new file mode 100644 index 0000000000000000000000000000000000000000..79e179d9e849ef27248b5a77f7be4565aa1a5759 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/Dialog.qml @@ -0,0 +1,100 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +T.Dialog { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding, + implicitHeaderWidth, + implicitFooterWidth) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding + + (implicitHeaderHeight > 0 ? implicitHeaderHeight + spacing : 0) + + (implicitFooterHeight > 0 ? implicitFooterHeight + spacing : 0)) + + padding: 6 + + background: Rectangle { + color: control.palette.window + border.color: control.palette.mid + radius: 2 + + Rectangle { + z: -1 + x: 1; y: 1 + width: parent.width + height: parent.height + color: control.palette.shadow + opacity: 0.2 + radius: 2 + } + } + + header: Label { + text: control.title + visible: control.title + elide: Label.ElideRight + font.bold: true + padding: 6 + background: Rectangle { + x: 1; y: 1 + width: parent.width - 2 + height: parent.height - 1 + color: control.palette.window + radius: 2 + } + } + + footer: DialogButtonBox { + visible: count > 0 + } + + T.Overlay.modal: Rectangle { + color: Fusion.topShadow + } + + T.Overlay.modeless: Rectangle { + color: Fusion.topShadow + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/DialogButtonBox.qml b/deployment_test/QtQuick/Controls.2/Fusion/DialogButtonBox.qml new file mode 100644 index 0000000000000000000000000000000000000000..a0b0f243c2031cbb99c0619edd989fcb7ab00010 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/DialogButtonBox.qml @@ -0,0 +1,74 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +T.DialogButtonBox { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + spacing: 6 + padding: 6 + alignment: Qt.AlignRight + + delegate: Button { } + + contentItem: ListView { + model: control.contentModel + spacing: control.spacing + orientation: ListView.Horizontal + boundsBehavior: Flickable.StopAtBounds + snapMode: ListView.SnapToItem + } + + background: Rectangle { + implicitHeight: 32 + x: 1; y: 1 + width: parent.width - 2 + height: parent.height - 2 + color: control.palette.window + radius: 2 + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/Drawer.qml b/deployment_test/QtQuick/Controls.2/Fusion/Drawer.qml new file mode 100644 index 0000000000000000000000000000000000000000..5a23dde1ff7aa673d0bad4c8fc625cb115ea8a12 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/Drawer.qml @@ -0,0 +1,89 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +T.Drawer { + id: control + + parent: T.Overlay.overlay + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + topPadding: control.edge === Qt.BottomEdge + leftPadding: control.edge === Qt.RightEdge + rightPadding: control.edge === Qt.LeftEdge + bottomPadding: control.edge === Qt.TopEdge + + enter: Transition { SmoothedAnimation { velocity: 5 } } + exit: Transition { SmoothedAnimation { velocity: 5 } } + + background: Rectangle { + color: control.palette.window + readonly property bool horizontal: control.edge === Qt.LeftEdge || control.edge === Qt.RightEdge + Rectangle { + width: parent.horizontal ? 1 : parent.width + height: parent.horizontal ? parent.height : 1 + color: control.palette.mid + x: control.edge === Qt.LeftEdge ? parent.width - 1 : 0 + y: control.edge === Qt.TopEdge ? parent.height - 1 : 0 + } + Rectangle { + width: parent.horizontal ? 1 : parent.width + height: parent.horizontal ? parent.height : 1 + color: control.palette.shadow + opacity: 0.2 + x: control.edge === Qt.LeftEdge ? parent.width : 0 + y: control.edge === Qt.TopEdge ? parent.height : 0 + } + } + + T.Overlay.modal: Rectangle { + color: Fusion.topShadow + } + + T.Overlay.modeless: Rectangle { + color: Fusion.topShadow + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/Frame.qml b/deployment_test/QtQuick/Controls.2/Fusion/Frame.qml new file mode 100644 index 0000000000000000000000000000000000000000..c2df635198148fc0aaaf4c02830651d9113f29eb --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/Frame.qml @@ -0,0 +1,58 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +T.Frame { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + padding: 9 + + background: Rectangle { + color: "transparent" + border.color: Qt.lighter(Fusion.outline(control.palette), 1.08) + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/GroupBox.qml b/deployment_test/QtQuick/Controls.2/Fusion/GroupBox.qml new file mode 100644 index 0000000000000000000000000000000000000000..3df3e1e60d511a02b54cf8c02e3a7c6a90baf603 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/GroupBox.qml @@ -0,0 +1,77 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +T.GroupBox { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding, + implicitLabelWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + spacing: 6 + padding: 9 + topPadding: padding + (implicitLabelWidth > 0 ? implicitLabelHeight + spacing : 0) + + label: Text { + x: control.leftPadding + width: control.availableWidth + + text: control.title + font: control.font + color: control.palette.windowText + elide: Text.ElideRight + verticalAlignment: Text.AlignVCenter + } + + background: Rectangle { + y: control.topPadding - control.bottomPadding + width: parent.width + height: parent.height - control.topPadding + control.bottomPadding + + radius: 2 + color: Color.transparent("black", 3 / 255) + border.color: Qt.lighter(Fusion.outline(control.palette), 1.08) + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/HorizontalHeaderView.qml b/deployment_test/QtQuick/Controls.2/Fusion/HorizontalHeaderView.qml new file mode 100644 index 0000000000000000000000000000000000000000..bbd9dc3f1309f3221b47448a720e07937db3db12 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/HorizontalHeaderView.qml @@ -0,0 +1,78 @@ +/**************************************************************************** +** +** Copyright (C) 2020 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.15 +import QtQuick.Controls 2.15 +import QtQuick.Templates 2.15 as T + +T.HorizontalHeaderView { + id: control + + implicitWidth: syncView ? syncView.width : 0 + implicitHeight: contentHeight + + delegate: Rectangle { + // Qt6: add cellPadding (and font etc) as public API in headerview + readonly property real cellPadding: 8 + + implicitWidth: text.implicitWidth + (cellPadding * 2) + implicitHeight: Math.max(control.height, text.implicitHeight + (cellPadding * 2)) + border.color: "#cacaca" + + gradient: Gradient { + GradientStop { + position: 0 + color: "#fbfbfb" + } + GradientStop { + position: 1 + color: "#e0dfe0" + } + } + + Text { + id: text + text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] + : model[control.textRole]) + : modelData + width: parent.width + height: parent.height + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + color: "#ff26282a" + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/ItemDelegate.qml b/deployment_test/QtQuick/Controls.2/Fusion/ItemDelegate.qml new file mode 100644 index 0000000000000000000000000000000000000000..4c15ae68894b2c815bbe19f0cf43cbd6089fe860 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/ItemDelegate.qml @@ -0,0 +1,77 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +T.ItemDelegate { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + padding: 6 + spacing: 6 + + icon.width: 16 + icon.height: 16 + + contentItem: IconLabel { + spacing: control.spacing + mirrored: control.mirrored + display: control.display + alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft + + icon: control.icon + text: control.text + font: control.font + color: control.highlighted ? Fusion.highlightedText(control.palette) : control.palette.text + } + + background: Rectangle { + implicitWidth: 100 + implicitHeight: 20 + color: control.down ? Fusion.buttonColor(control.palette, false, true, true) + : control.highlighted ? Fusion.highlight(control.palette) : control.palette.base + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/Label.qml b/deployment_test/QtQuick/Controls.2/Fusion/Label.qml new file mode 100644 index 0000000000000000000000000000000000000000..9821f71c988bf1b3c9a7131a9d878e956be0e014 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/Label.qml @@ -0,0 +1,49 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +T.Label { + id: control + + color: control.palette.windowText + linkColor: control.palette.link +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/Menu.qml b/deployment_test/QtQuick/Controls.2/Fusion/Menu.qml new file mode 100644 index 0000000000000000000000000000000000000000..8bace6b93f31e013239545119375a53a15c4c9ad --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/Menu.qml @@ -0,0 +1,95 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 +import QtQuick.Window 2.12 + +T.Menu { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + margins: 0 + padding: 1 + overlap: 2 + + delegate: MenuItem { } + + contentItem: ListView { + implicitHeight: contentHeight + model: control.contentModel + interactive: Window.window + ? contentHeight + control.topPadding + control.bottomPadding > Window.window.height + : false + clip: true + currentIndex: control.currentIndex + + ScrollIndicator.vertical: ScrollIndicator {} + } + + background: Rectangle { + implicitWidth: 200 + implicitHeight: 20 + + color: control.palette.base + border.color: Fusion.outline(control.palette) + + Rectangle { + z: -1 + x: 1; y: 1 + width: parent.width + height: parent.height + color: control.palette.shadow + opacity: 0.2 + } + } + + T.Overlay.modal: Rectangle { + color: Fusion.topShadow + } + + T.Overlay.modeless: Rectangle { + color: Fusion.topShadow + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/MenuBar.qml b/deployment_test/QtQuick/Controls.2/Fusion/MenuBar.qml new file mode 100644 index 0000000000000000000000000000000000000000..4ba71feed654fedb46887dccb513c5c29701720d --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/MenuBar.qml @@ -0,0 +1,74 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +T.MenuBar { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + delegate: MenuBarItem { } + + contentItem: Row { + spacing: control.spacing + Repeater { + model: control.contentModel + } + } + + background: Rectangle { + implicitHeight: 20 + + color: control.palette.window + + Rectangle { + y: parent.height - height + width: parent.width + height: 1 + color: Fusion.mergedColors(Qt.darker(control.palette.window, 1.2), + Qt.lighter(Fusion.outline(control.palette), 1.4), 60) + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/MenuBarItem.qml b/deployment_test/QtQuick/Controls.2/Fusion/MenuBarItem.qml new file mode 100644 index 0000000000000000000000000000000000000000..9fa685dcc0d8a4860a09b9cc49844ee614d34846 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/MenuBarItem.qml @@ -0,0 +1,78 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +T.MenuBarItem { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + padding: 6 + spacing: 6 + + icon.width: 16 + icon.height: 16 + + contentItem: IconLabel { + spacing: control.spacing + mirrored: control.mirrored + display: control.display + alignment: Qt.AlignLeft + + icon: control.icon + text: control.text + font: control.font + color: control.down || control.highlighted ? Fusion.highlightedText(control.palette) : control.palette.text + } + + background: Rectangle { + implicitWidth: 20 + implicitHeight: 20 + + color: Fusion.highlight(control.palette) + visible: control.down || control.highlighted + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/MenuItem.qml b/deployment_test/QtQuick/Controls.2/Fusion/MenuItem.qml new file mode 100644 index 0000000000000000000000000000000000000000..a428fbc8d27e61785e63723ed0f26bcc5b7fcf02 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/MenuItem.qml @@ -0,0 +1,103 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +T.MenuItem { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + padding: 6 + spacing: 6 + + icon.width: 16 + icon.height: 16 + + contentItem: IconLabel { + readonly property real arrowPadding: control.subMenu && control.arrow ? control.arrow.width + control.spacing : 0 + readonly property real indicatorPadding: control.checkable && control.indicator ? control.indicator.width + control.spacing : 0 + leftPadding: !control.mirrored ? indicatorPadding : arrowPadding + rightPadding: control.mirrored ? indicatorPadding : arrowPadding + + spacing: control.spacing + mirrored: control.mirrored + display: control.display + alignment: Qt.AlignLeft + + icon: control.icon + text: control.text + font: control.font + color: control.down || control.highlighted ? Fusion.highlightedText(control.palette) : control.palette.text + } + + arrow: ColorImage { + x: control.mirrored ? control.padding : control.width - width - control.padding + y: control.topPadding + (control.availableHeight - height) / 2 + width: 20 + + visible: control.subMenu + rotation: control.mirrored ? 90 : -90 + color: control.down || control.hovered || control.highlighted ? Fusion.highlightedText(control.palette) : control.palette.text + source: "qrc:/qt-project.org/imports/QtQuick/Controls.2/Fusion/images/arrow.png" + fillMode: Image.Pad + } + + indicator: CheckIndicator { + x: control.mirrored ? control.width - width - control.rightPadding : control.leftPadding + y: control.topPadding + (control.availableHeight - height) / 2 + + control: control + visible: control.checkable + } + + background: Rectangle { + implicitWidth: 200 + implicitHeight: 20 + + color: Fusion.highlight(control.palette) + visible: control.down || control.highlighted + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/MenuSeparator.qml b/deployment_test/QtQuick/Controls.2/Fusion/MenuSeparator.qml new file mode 100644 index 0000000000000000000000000000000000000000..522ada150e32bea86dbf3e7745eede1a40539fb6 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/MenuSeparator.qml @@ -0,0 +1,60 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +T.MenuSeparator { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + padding: 5 + verticalPadding: 1 + + contentItem: Rectangle { + implicitWidth: 188 + implicitHeight: 1 + color: Qt.lighter(Fusion.darkShade, 1.06) + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/Page.qml b/deployment_test/QtQuick/Controls.2/Fusion/Page.qml new file mode 100644 index 0000000000000000000000000000000000000000..ce4b1d54c8348953ca244a5a3e9010e64ae9701c --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/Page.qml @@ -0,0 +1,59 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +T.Page { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding, + implicitHeaderWidth, + implicitFooterWidth) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding + + (implicitHeaderHeight > 0 ? implicitHeaderHeight + spacing : 0) + + (implicitFooterHeight > 0 ? implicitFooterHeight + spacing : 0)) + + background: Rectangle { + color: control.palette.window + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/PageIndicator.qml b/deployment_test/QtQuick/Controls.2/Fusion/PageIndicator.qml new file mode 100644 index 0000000000000000000000000000000000000000..5679b14f29b6e3ef3a052eab5d77d043115981f8 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/PageIndicator.qml @@ -0,0 +1,74 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +T.PageIndicator { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + padding: 4 + spacing: 4 + + delegate: Rectangle { + implicitWidth: 6 + implicitHeight: 6 + + radius: width / 2 + color: control.palette.shadow + + opacity: index === currentIndex ? 0.95 : pressed ? 0.75 : 0.45 + Behavior on opacity { OpacityAnimator { duration: 100 } } + } + + contentItem: Row { + spacing: control.spacing + + Repeater { + model: control.count + delegate: control.delegate + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/Pane.qml b/deployment_test/QtQuick/Controls.2/Fusion/Pane.qml new file mode 100644 index 0000000000000000000000000000000000000000..28be3b47f3c92bfe039c252a0f0920c375841e05 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/Pane.qml @@ -0,0 +1,57 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +T.Pane { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + padding: 9 + + background: Rectangle { + color: control.palette.window + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/Popup.qml b/deployment_test/QtQuick/Controls.2/Fusion/Popup.qml new file mode 100644 index 0000000000000000000000000000000000000000..25a8c5ae0758fe06cd8030b2337f9e3f5ea6528d --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/Popup.qml @@ -0,0 +1,67 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +T.Popup { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + padding: 6 + + background: Rectangle { + color: control.palette.window + border.color: control.palette.mid + radius: 2 + } + + T.Overlay.modal: Rectangle { + color: Fusion.topShadow + } + + T.Overlay.modeless: Rectangle { + color: Fusion.topShadow + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/ProgressBar.qml b/deployment_test/QtQuick/Controls.2/Fusion/ProgressBar.qml new file mode 100644 index 0000000000000000000000000000000000000000..5deade587d46048ce107f473acb4244ceafb46c8 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/ProgressBar.qml @@ -0,0 +1,117 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +T.ProgressBar { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + contentItem: Item { + implicitWidth: 120 + implicitHeight: 24 + scale: control.mirrored ? -1 : 1 + + Rectangle { + height: parent.height + width: (control.indeterminate ? 1.0 : control.position) * parent.width + + radius: 2 + border.color: Qt.darker(Fusion.highlight(control.palette), 1.4) + gradient: Gradient { + GradientStop { + position: 0 + color: Qt.lighter(Fusion.highlight(control.palette), 1.2) + } + GradientStop { + position: 1 + color: Fusion.highlight(control.palette) + } + } + } + + Item { + x: 1; y: 1 + width: parent.width - 2 + height: parent.height - 2 + visible: control.indeterminate + clip: true + + ColorImage { + width: Math.ceil(parent.width / implicitWidth + 1) * implicitWidth + height: parent.height + + mirror: control.mirrored + fillMode: Image.TileHorizontally + source: "qrc:/qt-project.org/imports/QtQuick/Controls.2/Fusion/images/progressmask.png" + color: Color.transparent(Qt.lighter(Fusion.highlight(control.palette), 1.2), 160 / 255) + + visible: control.indeterminate + NumberAnimation on x { + running: control.indeterminate && control.visible + from: -31 // progressmask.png width + to: 0 + loops: Animation.Infinite + duration: 750 + } + } + } + } + + background: Rectangle { + implicitWidth: 120 + implicitHeight: 24 + + radius: 2 + color: control.palette.base + border.color: Fusion.outline(control.palette) + + Rectangle { + x: 1; y: 1; height: 1 + width: parent.width - 2 + color: Fusion.topShadow + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/RadioButton.qml b/deployment_test/QtQuick/Controls.2/Fusion/RadioButton.qml new file mode 100644 index 0000000000000000000000000000000000000000..a940aff3ccd4856c11606f4ca4cc8a24f2d9969b --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/RadioButton.qml @@ -0,0 +1,72 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +T.RadioButton { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + padding: 6 + spacing: 6 + + indicator: RadioIndicator { + x: control.text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + control: control + } + + contentItem: Text { + leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 + + text: control.text + font: control.font + color: control.palette.windowText + elide: Text.ElideRight + verticalAlignment: Text.AlignVCenter + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/RadioDelegate.qml b/deployment_test/QtQuick/Controls.2/Fusion/RadioDelegate.qml new file mode 100644 index 0000000000000000000000000000000000000000..e8555a17e163d04733e450bb8eb2ac2d447def3f --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/RadioDelegate.qml @@ -0,0 +1,87 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +T.RadioDelegate { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + padding: 6 + spacing: 6 + + icon.width: 16 + icon.height: 16 + + contentItem: IconLabel { + leftPadding: control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: !control.mirrored ? control.indicator.width + control.spacing : 0 + + spacing: control.spacing + mirrored: control.mirrored + display: control.display + alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft + + icon: control.icon + text: control.text + font: control.font + color: control.highlighted ? Fusion.highlightedText(control.palette) : control.palette.text + } + + indicator: RadioIndicator { + x: control.mirrored ? control.leftPadding : control.width - width - control.rightPadding + y: control.topPadding + (control.availableHeight - height) / 2 + + control: control + } + + background: Rectangle { + implicitWidth: 100 + implicitHeight: 20 + color: control.down ? Fusion.buttonColor(control.palette, false, true, true) + : control.highlighted ? Fusion.highlight(control.palette) : control.palette.base + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/RadioIndicator.qml b/deployment_test/QtQuick/Controls.2/Fusion/RadioIndicator.qml new file mode 100644 index 0000000000000000000000000000000000000000..c73cd49f477c6cbf2828f8be85e9fdf44659ca8d --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/RadioIndicator.qml @@ -0,0 +1,78 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +Rectangle { + id: indicator + + property Item control + readonly property color pressedColor: Fusion.mergedColors(control.palette.base, control.palette.windowText, 85) + readonly property color checkMarkColor: Qt.darker(control.palette.text, 1.2) + + implicitWidth: 14 + implicitHeight: 14 + + radius: width / 2 + color: control.down ? indicator.pressedColor : control.palette.base + border.color: control.visualFocus ? Fusion.highlightedOutline(control.palette) + : Qt.darker(control.palette.window, 1.5) + + Rectangle { + y: 1 + width: parent.width + height: parent.height - 1 + radius: width / 2 + color: "transparent" + border.color: Fusion.topShadow + visible: indicator.control.enabled && !indicator.control.down + } + + Rectangle { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + width: parent.width / 2.32 + height: parent.height / 2.32 + radius: width / 2 + color: Color.transparent(indicator.checkMarkColor, 180 / 255) + border.color: Color.transparent(indicator.checkMarkColor, 200 / 255) + visible: indicator.control.checked + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/RangeSlider.qml b/deployment_test/QtQuick/Controls.2/Fusion/RangeSlider.qml new file mode 100644 index 0000000000000000000000000000000000000000..7edbed57637837854d8d53d67a86941358b1e036 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/RangeSlider.qml @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +T.RangeSlider { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + Math.max(first.implicitHandleWidth, + second.implicitHandleWidth) + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + Math.max(first.implicitHandleHeight, + second.implicitHandleHeight) + topPadding + bottomPadding) + + first.handle: SliderHandle { + x: control.leftPadding + Math.round(control.horizontal ? control.first.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) + y: control.topPadding + Math.round(control.horizontal ? (control.availableHeight - height) / 2 : control.first.visualPosition * (control.availableHeight - height)) + + palette: control.palette + pressed: control.first.pressed + hovered: control.first.hovered + vertical: control.vertical + visualFocus: activeFocus + } + + second.handle: SliderHandle { + x: control.leftPadding + Math.round(control.horizontal ? control.second.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) + y: control.topPadding + Math.round(control.horizontal ? (control.availableHeight - height) / 2 : control.second.visualPosition * (control.availableHeight - height)) + + palette: control.palette + pressed: control.second.pressed + hovered: control.second.hovered + vertical: control.vertical + visualFocus: activeFocus + } + + background: SliderGroove { + control: control + offset: control.first.position + progress: control.second.position + visualProgress: control.second.visualPosition + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/RoundButton.qml b/deployment_test/QtQuick/Controls.2/Fusion/RoundButton.qml new file mode 100644 index 0000000000000000000000000000000000000000..59bf4c16d2dd6a0fd35671c71f5e46ccadd013be --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/RoundButton.qml @@ -0,0 +1,99 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +T.RoundButton { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + padding: 6 + spacing: 6 + + icon.width: 16 + icon.height: 16 + + contentItem: IconLabel { + spacing: control.spacing + mirrored: control.mirrored + display: control.display + + icon: control.icon + text: control.text + font: control.font + color: control.palette.buttonText + } + + background: Rectangle { + implicitWidth: 32 + implicitHeight: 32 + visible: !control.flat || control.down || control.checked + + gradient: Gradient { + GradientStop { + position: 0 + color: control.down || control.checked ? Fusion.buttonColor(control.palette, control.highlighted, control.down || control.checked, control.hovered) + : Fusion.gradientStart(Fusion.buttonColor(control.palette, control.highlighted, control.down, control.hovered)) + } + GradientStop { + position: 1 + color: control.down || control.checked ? Fusion.buttonColor(control.palette, control.highlighted, control.down || control.checked, control.hovered) + : Fusion.gradientStop(Fusion.buttonColor(control.palette, control.highlighted, control.down, control.hovered)) + } + } + + radius: control.radius + border.color: Fusion.buttonOutline(control.palette, control.highlighted || control.visualFocus, control.enabled) + + Rectangle { + x: 1; y: 1 + width: parent.width - 2 + height: parent.height - 2 + border.color: Fusion.innerContrastLine + color: "transparent" + radius: control.radius + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/ScrollBar.qml b/deployment_test/QtQuick/Controls.2/Fusion/ScrollBar.qml new file mode 100644 index 0000000000000000000000000000000000000000..93b58f0e34e0878d6dfa51659a0188323bbd110d --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/ScrollBar.qml @@ -0,0 +1,78 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +T.ScrollBar { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + padding: 2 + visible: control.policy !== T.ScrollBar.AlwaysOff + minimumSize: orientation == Qt.Horizontal ? height / width : width / height + + contentItem: Rectangle { + implicitWidth: control.interactive ? 6 : 2 + implicitHeight: control.interactive ? 6 : 2 + + radius: width / 2 + color: control.pressed ? control.palette.dark : control.palette.mid + opacity: 0.0 + + states: State { + name: "active" + when: control.policy === T.ScrollBar.AlwaysOn || (control.active && control.size < 1.0) + PropertyChanges { target: control.contentItem; opacity: 0.75 } + } + + transitions: Transition { + from: "active" + SequentialAnimation { + PauseAnimation { duration: 450 } + NumberAnimation { target: control.contentItem; duration: 200; property: "opacity"; to: 0.0 } + } + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/ScrollIndicator.qml b/deployment_test/QtQuick/Controls.2/Fusion/ScrollIndicator.qml new file mode 100644 index 0000000000000000000000000000000000000000..efe0b2fa815f34bbb2a1ee4bf808f2f1b88c0db6 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/ScrollIndicator.qml @@ -0,0 +1,78 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +T.ScrollIndicator { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + padding: 2 + + contentItem: Rectangle { + implicitWidth: 2 + implicitHeight: 2 + + color: control.palette.mid + visible: control.size < 1.0 + opacity: 0.0 + + states: State { + name: "active" + when: control.active + PropertyChanges { target: control.contentItem; opacity: 0.75 } + } + + transitions: [ + Transition { + from: "active" + SequentialAnimation { + PauseAnimation { duration: 450 } + NumberAnimation { target: control.contentItem; duration: 200; property: "opacity"; to: 0.0 } + } + } + ] + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/Slider.qml b/deployment_test/QtQuick/Controls.2/Fusion/Slider.qml new file mode 100644 index 0000000000000000000000000000000000000000..d212a233b016bb202103fcdf94997a85861ab9ec --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/Slider.qml @@ -0,0 +1,68 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +T.Slider { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitHandleWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitHandleHeight + topPadding + bottomPadding) + + handle: SliderHandle { + x: control.leftPadding + Math.round(control.horizontal ? control.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) + y: control.topPadding + Math.round(control.horizontal ? (control.availableHeight - height) / 2 : control.visualPosition * (control.availableHeight - height)) + + palette: control.palette + pressed: control.pressed + hovered: control.hovered + vertical: control.vertical + visualFocus: control.visualFocus + } + + background: SliderGroove { + control: control + progress: control.position + visualProgress: control.visualPosition + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/SliderGroove.qml b/deployment_test/QtQuick/Controls.2/Fusion/SliderGroove.qml new file mode 100644 index 0000000000000000000000000000000000000000..381a02b5983dd9bc8b748685076870bb01bf39ee --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/SliderGroove.qml @@ -0,0 +1,94 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +Rectangle { + id: groove + + property Item control + property real offset + property real progress + property real visualProgress + + x: control.horizontal ? 0 : (control.availableWidth - width) / 2 + y: control.horizontal ? (control.availableHeight - height) / 2 : 0 + + implicitWidth: control.horizontal ? 160 : 5 + implicitHeight: control.horizontal ? 5 : 160 + width: control.horizontal ? control.availableWidth : implicitWidth + height: control.horizontal ? implicitHeight : control.availableHeight + + radius: 2 + border.color: Fusion.outline(control.palette) + scale: control.horizontal && control.mirrored ? -1 : 1 + + gradient: Gradient { + GradientStop { + position: 0 + color: Qt.darker(Fusion.grooveColor(groove.control.palette), 1.1) + } + GradientStop { + position: 1 + color: Qt.lighter(Fusion.grooveColor(groove.control.palette), 1.1) + } + } + + Rectangle { + x: groove.control.horizontal ? groove.offset * parent.width : 0 + y: groove.control.horizontal ? 0 : groove.visualProgress * parent.height + width: groove.control.horizontal ? groove.progress * parent.width - groove.offset * parent.width : 5 + height: groove.control.horizontal ? 5 : groove.progress * parent.height - groove.offset * parent.height + + radius: 2 + border.color: Qt.darker(Fusion.highlightedOutline(groove.control.palette), 1.1) + + gradient: Gradient { + GradientStop { + position: 0 + color: Fusion.highlight(groove.control.palette) + } + GradientStop { + position: 1 + color: Qt.lighter(Fusion.highlight(groove.control.palette), 1.2) + } + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/SliderHandle.qml b/deployment_test/QtQuick/Controls.2/Fusion/SliderHandle.qml new file mode 100644 index 0000000000000000000000000000000000000000..c53af57e6a5f0ce08662a13f95067ef0c78b600f --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/SliderHandle.qml @@ -0,0 +1,86 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +Rectangle { + id: handle + + property var palette + property bool pressed + property bool hovered + property bool vertical + property bool visualFocus + + implicitWidth: 13 + implicitHeight: 13 + + gradient: Gradient { + GradientStop { + position: 0 + color: Fusion.gradientStart(Fusion.buttonColor(handle.palette, handle.visualFocus, handle.pressed, handle.hovered)) + } + GradientStop { + position: 1 + color: Fusion.gradientStop(Fusion.buttonColor(handle.palette, handle.visualFocus, handle.pressed, handle.hovered)) + } + } + rotation: handle.vertical ? -90 : 0 + border.width: 1 + border.color: "transparent" + radius: 2 + + Rectangle { + width: parent.width + height: parent.height + border.color: handle.visualFocus ? Fusion.highlightedOutline(handle.palette) : Fusion.outline(handle.palette) + color: "transparent" + radius: 2 + + Rectangle { + x: 1; y: 1 + width: parent.width - 2 + height: parent.height - 2 + border.color: Fusion.innerContrastLine + color: "transparent" + radius: 2 + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/SpinBox.qml b/deployment_test/QtQuick/Controls.2/Fusion/SpinBox.qml new file mode 100644 index 0000000000000000000000000000000000000000..41754f63fc985c3548bf8e3e00cd5dea919cc814 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/SpinBox.qml @@ -0,0 +1,182 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +T.SpinBox { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentItem.implicitWidth + 2 * padding + + Math.max(up.implicitIndicatorWidth, + down.implicitIndicatorWidth)) + implicitHeight: Math.max(implicitContentHeight + topPadding + bottomPadding, + implicitBackgroundHeight, + up.implicitIndicatorHeight + + down.implicitIndicatorHeight) + + padding: 4 + leftPadding: padding + (control.mirrored ? (up.indicator ? up.indicator.width : 0) : (down.indicator ? down.indicator.width : 0)) + rightPadding: padding + (control.mirrored ? (down.indicator ? down.indicator.width : 0) : (up.indicator ? up.indicator.width : 0)) + + validator: IntValidator { + locale: control.locale.name + bottom: Math.min(control.from, control.to) + top: Math.max(control.from, control.to) + } + + contentItem: TextInput { + z: 2 + text: control.displayText + + font: control.font + color: control.palette.text + selectionColor: control.palette.highlight + selectedTextColor: control.palette.highlightedText + horizontalAlignment: Qt.AlignHCenter + verticalAlignment: Qt.AlignVCenter + + readOnly: !control.editable + validator: control.validator + inputMethodHints: control.inputMethodHints + } + + up.indicator: PaddedRectangle { + x: control.mirrored ? 1 : parent.width - width - 1 + y: 1 + height: parent.height / 2 - 1 + implicitWidth: 16 + implicitHeight: 10 + + radius: 1.7 + clip: true + topPadding: -2 + leftPadding: -2 + color: control.up.pressed ? Fusion.buttonColor(control.palette, false, true, true) : "transparent" + + ColorImage { + scale: -1 + width: parent.width + height: parent.height + opacity: enabled ? 1.0 : 0.5 + color: control.palette.buttonText + source: "qrc:/qt-project.org/imports/QtQuick/Controls.2/Fusion/images/arrow.png" + fillMode: Image.Pad + } + } + + down.indicator: PaddedRectangle { + x: control.mirrored ? 1 : parent.width - width - 1 + y: parent.height - height - 1 + height: parent.height / 2 - 1 + implicitWidth: 16 + implicitHeight: 10 + + radius: 1.7 + clip: true + topPadding: -2 + leftPadding: -2 + color: control.down.pressed ? Fusion.buttonColor(control.palette, false, true, true) : "transparent" + + ColorImage { + width: parent.width + height: parent.height + opacity: enabled ? 1.0 : 0.5 + color: control.palette.buttonText + source: "qrc:/qt-project.org/imports/QtQuick/Controls.2/Fusion/images/arrow.png" + fillMode: Image.Pad + } + } + + background: Rectangle { + implicitWidth: 120 + implicitHeight: 24 + + radius: 2 + color: control.palette.base + border.color: control.activeFocus ? Fusion.highlightedOutline(control.palette) : Fusion.outline(control.palette) + + Rectangle { + x: 2 + y: 1 + width: parent.width - 4 + height: 1 + color: Fusion.topShadow + } + + Rectangle { + x: control.mirrored ? 1 : parent.width - width - 1 + y: 1 + width: Math.max(control.up.indicator ? control.up.indicator.width : 0, + control.down.indicator ? control.down.indicator.width : 0) + 1 + height: parent.height - 2 + + radius: 2 + gradient: Gradient { + GradientStop { + position: 0 + color: Fusion.gradientStart(Fusion.buttonColor(control.palette, control.visualFocus, false, control.up.hovered || control.down.hovered)) + } + GradientStop { + position: 1 + color: Fusion.gradientStop(Fusion.buttonColor(control.palette, control.visualFocus, false, control.up.hovered || control.down.hovered)) + } + } + + Rectangle { + x: control.mirrored ? parent.width - 1 : 0 + height: parent.height + width: 1 + color: Fusion.outline(control.palette) + } + } + + Rectangle { + x: 1; y: 1 + width: parent.width - 2 + height: parent.height - 2 + color: "transparent" + border.color: Color.transparent(Fusion.highlightedOutline(control.palette), 40 / 255) + visible: control.activeFocus + radius: 1.7 + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/SplitView.qml b/deployment_test/QtQuick/Controls.2/Fusion/SplitView.qml new file mode 100644 index 0000000000000000000000000000000000000000..6a04b4da133d2c68da8f9a59967a77fae6b25850 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/SplitView.qml @@ -0,0 +1,56 @@ +/**************************************************************************** +** +** Copyright (C) 2018 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.13 +import QtQuick.Templates 2.13 as T +import QtQuick.Controls 2.13 +import QtQuick.Controls.impl 2.13 +import QtQuick.Controls.Fusion 2.13 + +T.SplitView { + id: control + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + handle: Rectangle { + implicitWidth: control.orientation === Qt.Horizontal ? 2 : control.width + implicitHeight: control.orientation === Qt.Horizontal ? control.height : 2 + color: T.SplitHandle.pressed ? palette.dark + : (T.SplitHandle.hovered ? control.palette.midlight : control.palette.mid) + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/SwipeDelegate.qml b/deployment_test/QtQuick/Controls.2/Fusion/SwipeDelegate.qml new file mode 100644 index 0000000000000000000000000000000000000000..48c531ea4434aa42b5e209282a45e4e19876b426 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/SwipeDelegate.qml @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +T.SwipeDelegate { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + padding: 6 + spacing: 6 + + icon.width: 16 + icon.height: 16 + + swipe.transition: Transition { SmoothedAnimation { velocity: 3; easing.type: Easing.InOutCubic } } + + contentItem: IconLabel { + spacing: control.spacing + mirrored: control.mirrored + display: control.display + alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft + + icon: control.icon + text: control.text + font: control.font + color: control.highlighted ? Fusion.highlightedText(control.palette) : control.palette.text + } + + background: Rectangle { + implicitWidth: 100 + implicitHeight: 20 + color: control.down ? Fusion.buttonColor(control.palette, false, true, true) + : control.highlighted ? Fusion.highlight(control.palette) : control.palette.base + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/Switch.qml b/deployment_test/QtQuick/Controls.2/Fusion/Switch.qml new file mode 100644 index 0000000000000000000000000000000000000000..bf18003a8df0c5d84c9b3d5edcc9c7a59957e3de --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/Switch.qml @@ -0,0 +1,72 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +T.Switch { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + padding: 6 + spacing: 6 + + indicator: SwitchIndicator { + x: control.text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + control: control + } + + contentItem: Text { + leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 + + text: control.text + font: control.font + color: control.palette.text + elide: Text.ElideRight + verticalAlignment: Text.AlignVCenter + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/SwitchDelegate.qml b/deployment_test/QtQuick/Controls.2/Fusion/SwitchDelegate.qml new file mode 100644 index 0000000000000000000000000000000000000000..67c419244e8c7e3f5404e7ff12a9a82d4109cdef --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/SwitchDelegate.qml @@ -0,0 +1,86 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +T.SwitchDelegate { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + padding: 6 + spacing: 6 + + icon.width: 16 + icon.height: 16 + + indicator: SwitchIndicator { + x: control.text ? (control.mirrored ? control.leftPadding : control.width - width - control.rightPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + control: control + } + + contentItem: IconLabel { + leftPadding: control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: !control.mirrored ? control.indicator.width + control.spacing : 0 + + spacing: control.spacing + mirrored: control.mirrored + display: control.display + alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft + + icon: control.icon + text: control.text + font: control.font + color: control.highlighted ? Fusion.highlightedText(control.palette) : control.palette.text + } + + background: Rectangle { + implicitWidth: 100 + implicitHeight: 20 + color: control.down ? Fusion.buttonColor(control.palette, false, true, true) + : control.highlighted ? Fusion.highlight(control.palette) : control.palette.base + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/SwitchIndicator.qml b/deployment_test/QtQuick/Controls.2/Fusion/SwitchIndicator.qml new file mode 100644 index 0000000000000000000000000000000000000000..ae7c89a088d37ba17f0a8538279fd239296664f1 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/SwitchIndicator.qml @@ -0,0 +1,137 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +Rectangle { + id: indicator + + property Item control + readonly property color pressedColor: Fusion.mergedColors(control.palette.base, control.palette.windowText, 85) + readonly property color checkMarkColor: Qt.darker(control.palette.text, 1.2) + + implicitWidth: 40 + implicitHeight: 16 + + radius: 2 + border.color: Fusion.outline(control.palette) + + gradient: Gradient { + GradientStop { + position: 0 + color: Qt.darker(Fusion.grooveColor(indicator.control.palette), 1.1) + } + GradientStop { + position: 1 + color: Qt.lighter(Fusion.grooveColor(indicator.control.palette), 1.1) + } + } + + Rectangle { + x: indicator.control.mirrored ? handle.x : 0 + width: indicator.control.mirrored ? parent.width - handle.x : handle.x + handle.width + height: parent.height + + opacity: indicator.control.checked ? 1 : 0 + Behavior on opacity { + enabled: !indicator.control.down + NumberAnimation { duration: 80 } + } + + radius: 2 + border.color: Qt.darker(Fusion.highlightedOutline(indicator.control.palette), 1.1) + border.width: indicator.control.enabled ? 1 : 0 + + gradient: Gradient { + GradientStop { + position: 0 + color: Fusion.highlight(indicator.control.palette) + } + GradientStop { + position: 1 + color: Qt.lighter(Fusion.highlight(indicator.control.palette), 1.2) + } + } + } + + Rectangle { + id: handle + x: Math.max(0, Math.min(parent.width - width, indicator.control.visualPosition * parent.width - (width / 2))) + y: (parent.height - height) / 2 + width: 20 + height: 16 + radius: 2 + + gradient: Gradient { + GradientStop { + position: 0 + color: Fusion.gradientStart(Fusion.buttonColor(indicator.control.palette, indicator.control.visualFocus, indicator.control.pressed, indicator.control.hovered)) + } + GradientStop { + position: 1 + color: Fusion.gradientStop(Fusion.buttonColor(indicator.control.palette, indicator.control.visualFocus, indicator.control.pressed, indicator.control.hovered)) + } + } + border.width: 1 + border.color: "transparent" + + Rectangle { + width: parent.width + height: parent.height + border.color: indicator.control.visualFocus ? Fusion.highlightedOutline(indicator.control.palette) : Fusion.outline(indicator.control.palette) + color: "transparent" + radius: 2 + + Rectangle { + x: 1; y: 1 + width: parent.width - 2 + height: parent.height - 2 + border.color: Fusion.innerContrastLine + color: "transparent" + radius: 2 + } + } + + Behavior on x { + enabled: !indicator.control.down + SmoothedAnimation { velocity: 200 } + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/TabBar.qml b/deployment_test/QtQuick/Controls.2/Fusion/TabBar.qml new file mode 100644 index 0000000000000000000000000000000000000000..233a2acdfcad62310530427a54aada8dd1ce5b6f --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/TabBar.qml @@ -0,0 +1,80 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +T.TabBar { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + spacing: -1 + + contentItem: ListView { + model: control.contentModel + currentIndex: control.currentIndex + + spacing: control.spacing + orientation: ListView.Horizontal + boundsBehavior: Flickable.StopAtBounds + flickableDirection: Flickable.AutoFlickIfNeeded + snapMode: ListView.SnapToItem + + highlightMoveDuration: 0 + highlightRangeMode: ListView.ApplyRange + preferredHighlightBegin: 40 + preferredHighlightEnd: width - 40 + } + + background: Item { + implicitHeight: 21 + + Rectangle { + width: parent.width + height: 1 + y: control.position === T.TabBar.Header ? parent.height - 1 : 0 + color: Fusion.outline(control.palette) + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/TabButton.qml b/deployment_test/QtQuick/Controls.2/Fusion/TabButton.qml new file mode 100644 index 0000000000000000000000000000000000000000..136503b6b32151e4c3dd050f12e0dac3b2961538 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/TabButton.qml @@ -0,0 +1,97 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +T.TabButton { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + padding: 2 + horizontalPadding: 4 + spacing: 6 + + icon.width: 16 + icon.height: 16 + + z: checked + + contentItem: IconLabel { + spacing: control.spacing + mirrored: control.mirrored + display: control.display + + icon: control.icon + text: control.text + font: control.font + color: control.palette.buttonText + } + + background: Rectangle { + y: control.checked || control.TabBar.position !== T.TabBar.Header ? 0 : 2 + implicitHeight: 21 + height: control.height - (control.checked ? 0 : 2) + + border.color: Qt.lighter(Fusion.outline(control.palette), 1.1) + + gradient: Gradient { + GradientStop { + position: 0 + color: control.checked ? Qt.lighter(Fusion.tabFrameColor(control.palette), 1.04) + : Qt.darker(Fusion.tabFrameColor(control.palette), 1.08) + } + GradientStop { + position: control.checked ? 0 : 0.85 + color: control.checked ? Qt.lighter(Fusion.tabFrameColor(control.palette), 1.04) + : Qt.darker(Fusion.tabFrameColor(control.palette), 1.08) + } + GradientStop { + position: 1 + color: control.checked ? Fusion.tabFrameColor(control.palette) + : Qt.darker(Fusion.tabFrameColor(control.palette), 1.16) + } + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/TextArea.qml b/deployment_test/QtQuick/Controls.2/Fusion/TextArea.qml new file mode 100644 index 0000000000000000000000000000000000000000..c7107ac444061690848e207343568f8731278bb6 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/TextArea.qml @@ -0,0 +1,77 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +T.TextArea { + id: control + + implicitWidth: Math.max(contentWidth + leftPadding + rightPadding, + implicitBackgroundWidth + leftInset + rightInset, + placeholder.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(contentHeight + topPadding + bottomPadding, + implicitBackgroundHeight + topInset + bottomInset, + placeholder.implicitHeight + topPadding + bottomPadding) + + padding: 6 + leftPadding: padding + 4 + + color: control.palette.text + selectionColor: control.palette.highlight + selectedTextColor: control.palette.highlightedText + placeholderTextColor: Color.transparent(control.color, 0.5) + + PlaceholderText { + id: placeholder + x: control.leftPadding + y: control.topPadding + width: control.width - (control.leftPadding + control.rightPadding) + height: control.height - (control.topPadding + control.bottomPadding) + + text: control.placeholderText + font: control.font + color: control.placeholderTextColor + verticalAlignment: control.verticalAlignment + visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter) + elide: Text.ElideRight + renderType: control.renderType + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/TextField.qml b/deployment_test/QtQuick/Controls.2/Fusion/TextField.qml new file mode 100644 index 0000000000000000000000000000000000000000..d5b5788d2bc4e7ea99b0b63dd0f23317b0c2192f --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/TextField.qml @@ -0,0 +1,103 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +T.TextField { + id: control + + implicitWidth: implicitBackgroundWidth + leftInset + rightInset + || Math.max(contentWidth, placeholder.implicitWidth) + leftPadding + rightPadding + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding, + placeholder.implicitHeight + topPadding + bottomPadding) + + padding: 4 + + color: control.palette.text + selectionColor: control.palette.highlight + selectedTextColor: control.palette.highlightedText + placeholderTextColor: Color.transparent(control.color, 0.5) + verticalAlignment: TextInput.AlignVCenter + + PlaceholderText { + id: placeholder + x: control.leftPadding + y: control.topPadding + width: control.width - (control.leftPadding + control.rightPadding) + height: control.height - (control.topPadding + control.bottomPadding) + + text: control.placeholderText + font: control.font + color: control.placeholderTextColor + verticalAlignment: control.verticalAlignment + visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter) + elide: Text.ElideRight + renderType: control.renderType + } + + background: Rectangle { + implicitWidth: 120 + implicitHeight: 24 + + radius: 2 + color: control.palette.base + border.color: control.activeFocus ? Fusion.highlightedOutline(control.palette) : Fusion.outline(control.palette) + + Rectangle { + x: 1; y: 1 + width: parent.width - 2 + height: parent.height - 2 + color: "transparent" + border.color: Color.transparent(Fusion.highlightedOutline(control.palette), 40 / 255) + visible: control.activeFocus + radius: 1.7 + } + + Rectangle { + x: 2 + y: 1 + width: parent.width - 4 + height: 1 + color: Fusion.topShadow + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/ToolBar.qml b/deployment_test/QtQuick/Controls.2/Fusion/ToolBar.qml new file mode 100644 index 0000000000000000000000000000000000000000..fa069c0b756e60a266a5ead32243c5e25b34f283 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/ToolBar.qml @@ -0,0 +1,83 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +T.ToolBar { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + horizontalPadding: 6 + topPadding: control.position === T.ToolBar.Footer ? 1 : 0 + bottomPadding: control.position === T.ToolBar.Header ? 1 : 0 + + background: Rectangle { + implicitHeight: 26 + + gradient: Gradient { + GradientStop { + position: 0 + color: Qt.lighter(control.palette.window, 1.04) + } + GradientStop { + position: 1 + color: control.palette.window + } + } + + Rectangle { + width: parent.width + height: 1 + color: control.position === T.ToolBar.Header ? Fusion.lightShade : Fusion.darkShade + } + + Rectangle { + y: parent.height - height + width: parent.width + height: 1 + color: control.position === T.ToolBar.Header ? Fusion.darkShade : Fusion.lightShade + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/ToolButton.qml b/deployment_test/QtQuick/Controls.2/Fusion/ToolButton.qml new file mode 100644 index 0000000000000000000000000000000000000000..4c00b402753eaa8292df29746b8da09367b3bf8c --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/ToolButton.qml @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +T.ToolButton { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + padding: 6 + spacing: 6 + + icon.width: 16 + icon.height: 16 + + contentItem: IconLabel { + spacing: control.spacing + mirrored: control.mirrored + display: control.display + + icon: control.icon + text: control.text + font: control.font + color: control.palette.buttonText + } + + background: ButtonPanel { + implicitWidth: 20 + implicitHeight: 20 + + control: control + visible: control.down || control.checked || control.highlighted || control.visualFocus || control.hovered + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/ToolSeparator.qml b/deployment_test/QtQuick/Controls.2/Fusion/ToolSeparator.qml new file mode 100644 index 0000000000000000000000000000000000000000..5d366652144f91c0a21b65a1ad09b74107522ad8 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/ToolSeparator.qml @@ -0,0 +1,67 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +T.ToolSeparator { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + padding: vertical ? 6 : 2 + verticalPadding: vertical ? 2 : 6 + + contentItem: Rectangle { + implicitWidth: vertical ? 2 : 8 + implicitHeight: vertical ? 8 : 2 + color: Qt.darker(control.palette.window, 1.1) + + Rectangle { + x: 1 + width: 1 + height: parent.height + color: Qt.lighter(control.palette.window, 1.1) + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/ToolTip.qml b/deployment_test/QtQuick/Controls.2/Fusion/ToolTip.qml new file mode 100644 index 0000000000000000000000000000000000000000..b505e2c99d3983df25871bb656df26f863c96f93 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/ToolTip.qml @@ -0,0 +1,80 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +T.ToolTip { + id: control + + x: parent ? (parent.width - implicitWidth) / 2 : 0 + y: -implicitHeight - 3 + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + margins: 6 + padding: 6 + + closePolicy: T.Popup.CloseOnEscape | T.Popup.CloseOnPressOutsideParent | T.Popup.CloseOnReleaseOutsideParent + + contentItem: Text { + text: control.text + font: control.font + wrapMode: Text.Wrap + color: control.palette.toolTipText + } + + background: Rectangle { + color: control.palette.toolTipBase + border.color: control.palette.toolTipText + + Rectangle { + z: -1 + x: 1; y: 1 + width: parent.width + height: parent.height + color: control.palette.shadow + opacity: 0.5 + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/Tumbler.qml b/deployment_test/QtQuick/Controls.2/Fusion/Tumbler.qml new file mode 100644 index 0000000000000000000000000000000000000000..0129f06cebbb8aceaf9625da6830ad83004502b4 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/Tumbler.qml @@ -0,0 +1,77 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Fusion 2.12 +import QtQuick.Controls.Fusion.impl 2.12 + +T.Tumbler { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) || 60 // ### remove 60 in Qt 6 + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) || 200 // ### remove 200 in Qt 6 + + delegate: Text { + text: modelData + color: control.palette.windowText + font: control.font + opacity: (1.0 - Math.abs(Tumbler.displacement) / (control.visibleItemCount / 2)) * (control.enabled ? 1 : 0.6) + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + } + + contentItem: TumblerView { + implicitWidth: 60 + implicitHeight: 200 + model: control.model + delegate: control.delegate + path: Path { + startX: control.contentItem.width / 2 + startY: -control.contentItem.delegateHeight / 2 + PathLine { + x: control.contentItem.width / 2 + y: (control.visibleItemCount + 1) * control.contentItem.delegateHeight - control.contentItem.delegateHeight / 2 + } + } + + property real delegateHeight: control.availableHeight / control.visibleItemCount + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/VerticalHeaderView.qml b/deployment_test/QtQuick/Controls.2/Fusion/VerticalHeaderView.qml new file mode 100644 index 0000000000000000000000000000000000000000..b220cdf23b63217161277e756846f9994a6ffd19 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/VerticalHeaderView.qml @@ -0,0 +1,78 @@ +/**************************************************************************** +** +** Copyright (C) 2020 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.15 +import QtQuick.Controls 2.15 +import QtQuick.Templates 2.15 as T + +T.VerticalHeaderView { + id: control + + implicitWidth: contentWidth + implicitHeight: syncView ? syncView.height : 0 + + delegate: Rectangle { + // Qt6: add cellPadding (and font etc) as public API in headerview + readonly property real cellPadding: 8 + + implicitWidth: Math.max(control.width, text.implicitWidth + (cellPadding * 2)) + implicitHeight: text.implicitHeight + (cellPadding * 2) + border.color: "#cacaca" + + gradient: Gradient { + GradientStop { + position: 0 + color: "#fbfbfb" + } + GradientStop { + position: 1 + color: "#e0dfe0" + } + } + + Text { + id: text + text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] + : model[control.textRole]) + : modelData + width: parent.width + height: parent.height + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + color: "#ff26282a" + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/plugins.qmltypes b/deployment_test/QtQuick/Controls.2/Fusion/plugins.qmltypes new file mode 100644 index 0000000000000000000000000000000000000000..681b8b90f908d73290e92926a272059e8f17c67f --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/plugins.qmltypes @@ -0,0 +1,414 @@ +import QtQuick.tooling 1.2 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. +// +// This file was auto-generated by: +// 'qmlplugindump -nonrelocatable -dependencies dependencies.json QtQuick.Controls.Fusion 2.15' + +Module { + dependencies: ["QtQuick.Controls 2.0"] + Component { + name: "QQuickFusionBusyIndicator" + defaultProperty: "data" + prototype: "QQuickPaintedItem" + exports: ["QtQuick.Controls.Fusion.impl/BusyIndicatorImpl 2.3"] + exportMetaObjectRevisions: [0] + Property { name: "color"; type: "QColor" } + Property { name: "running"; type: "bool" } + } + Component { + name: "QQuickFusionDial" + defaultProperty: "data" + prototype: "QQuickPaintedItem" + exports: ["QtQuick.Controls.Fusion.impl/DialImpl 2.3"] + exportMetaObjectRevisions: [0] + Property { name: "highlight"; type: "bool" } + Property { name: "palette"; type: "QPalette" } + } + Component { + name: "QQuickFusionKnob" + defaultProperty: "data" + prototype: "QQuickPaintedItem" + exports: ["QtQuick.Controls.Fusion.impl/KnobImpl 2.3"] + exportMetaObjectRevisions: [0] + Property { name: "palette"; type: "QPalette" } + } + Component { + name: "QQuickFusionStyle" + prototype: "QObject" + exports: ["QtQuick.Controls.Fusion.impl/Fusion 2.3"] + isCreatable: false + isSingleton: true + exportMetaObjectRevisions: [0] + Property { name: "lightShade"; type: "QColor"; isReadonly: true } + Property { name: "darkShade"; type: "QColor"; isReadonly: true } + Property { name: "topShadow"; type: "QColor"; isReadonly: true } + Property { name: "innerContrastLine"; type: "QColor"; isReadonly: true } + Method { + name: "highlight" + type: "QColor" + Parameter { name: "palette"; type: "QPalette" } + } + Method { + name: "highlightedText" + type: "QColor" + Parameter { name: "palette"; type: "QPalette" } + } + Method { + name: "outline" + type: "QColor" + Parameter { name: "palette"; type: "QPalette" } + } + Method { + name: "highlightedOutline" + type: "QColor" + Parameter { name: "palette"; type: "QPalette" } + } + Method { + name: "tabFrameColor" + type: "QColor" + Parameter { name: "palette"; type: "QPalette" } + } + Method { + name: "buttonColor" + type: "QColor" + Parameter { name: "palette"; type: "QPalette" } + Parameter { name: "highlighted"; type: "bool" } + Parameter { name: "down"; type: "bool" } + Parameter { name: "hovered"; type: "bool" } + } + Method { + name: "buttonColor" + type: "QColor" + Parameter { name: "palette"; type: "QPalette" } + Parameter { name: "highlighted"; type: "bool" } + Parameter { name: "down"; type: "bool" } + } + Method { + name: "buttonColor" + type: "QColor" + Parameter { name: "palette"; type: "QPalette" } + Parameter { name: "highlighted"; type: "bool" } + } + Method { + name: "buttonColor" + type: "QColor" + Parameter { name: "palette"; type: "QPalette" } + } + Method { + name: "buttonOutline" + type: "QColor" + Parameter { name: "palette"; type: "QPalette" } + Parameter { name: "highlighted"; type: "bool" } + Parameter { name: "enabled"; type: "bool" } + } + Method { + name: "buttonOutline" + type: "QColor" + Parameter { name: "palette"; type: "QPalette" } + Parameter { name: "highlighted"; type: "bool" } + } + Method { + name: "buttonOutline" + type: "QColor" + Parameter { name: "palette"; type: "QPalette" } + } + Method { + name: "gradientStart" + type: "QColor" + Parameter { name: "baseColor"; type: "QColor" } + } + Method { + name: "gradientStop" + type: "QColor" + Parameter { name: "baseColor"; type: "QColor" } + } + Method { + name: "mergedColors" + type: "QColor" + Parameter { name: "colorA"; type: "QColor" } + Parameter { name: "colorB"; type: "QColor" } + Parameter { name: "factor"; type: "int" } + } + Method { + name: "mergedColors" + type: "QColor" + Parameter { name: "colorA"; type: "QColor" } + Parameter { name: "colorB"; type: "QColor" } + } + Method { + name: "grooveColor" + type: "QColor" + Parameter { name: "palette"; type: "QPalette" } + } + } + Component { + name: "QQuickItem" + defaultProperty: "data" + prototype: "QObject" + Enum { + name: "Flags" + values: { + "ItemClipsChildrenToShape": 1, + "ItemAcceptsInputMethod": 2, + "ItemIsFocusScope": 4, + "ItemHasContents": 8, + "ItemAcceptsDrops": 16 + } + } + Enum { + name: "TransformOrigin" + values: { + "TopLeft": 0, + "Top": 1, + "TopRight": 2, + "Left": 3, + "Center": 4, + "Right": 5, + "BottomLeft": 6, + "Bottom": 7, + "BottomRight": 8 + } + } + Property { name: "parent"; type: "QQuickItem"; isPointer: true } + Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "resources"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "children"; type: "QQuickItem"; isList: true; isReadonly: true } + Property { name: "x"; type: "double" } + Property { name: "y"; type: "double" } + Property { name: "z"; type: "double" } + Property { name: "width"; type: "double" } + Property { name: "height"; type: "double" } + Property { name: "opacity"; type: "double" } + Property { name: "enabled"; type: "bool" } + Property { name: "visible"; type: "bool" } + Property { name: "visibleChildren"; type: "QQuickItem"; isList: true; isReadonly: true } + Property { name: "states"; type: "QQuickState"; isList: true; isReadonly: true } + Property { name: "transitions"; type: "QQuickTransition"; isList: true; isReadonly: true } + Property { name: "state"; type: "string" } + Property { name: "childrenRect"; type: "QRectF"; isReadonly: true } + Property { name: "anchors"; type: "QQuickAnchors"; isReadonly: true; isPointer: true } + Property { name: "left"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "right"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "horizontalCenter"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "top"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "bottom"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "verticalCenter"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "baseline"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "baselineOffset"; type: "double" } + Property { name: "clip"; type: "bool" } + Property { name: "focus"; type: "bool" } + Property { name: "activeFocus"; type: "bool"; isReadonly: true } + Property { name: "activeFocusOnTab"; revision: 1; type: "bool" } + Property { name: "rotation"; type: "double" } + Property { name: "scale"; type: "double" } + Property { name: "transformOrigin"; type: "TransformOrigin" } + Property { name: "transformOriginPoint"; type: "QPointF"; isReadonly: true } + Property { name: "transform"; type: "QQuickTransform"; isList: true; isReadonly: true } + Property { name: "smooth"; type: "bool" } + Property { name: "antialiasing"; type: "bool" } + Property { name: "implicitWidth"; type: "double" } + Property { name: "implicitHeight"; type: "double" } + Property { name: "containmentMask"; revision: 11; type: "QObject"; isPointer: true } + Property { name: "layer"; type: "QQuickItemLayer"; isReadonly: true; isPointer: true } + Signal { + name: "childrenRectChanged" + Parameter { type: "QRectF" } + } + Signal { + name: "baselineOffsetChanged" + Parameter { type: "double" } + } + Signal { + name: "stateChanged" + Parameter { type: "string" } + } + Signal { + name: "focusChanged" + Parameter { type: "bool" } + } + Signal { + name: "activeFocusChanged" + Parameter { type: "bool" } + } + Signal { + name: "activeFocusOnTabChanged" + revision: 1 + Parameter { type: "bool" } + } + Signal { + name: "parentChanged" + Parameter { type: "QQuickItem"; isPointer: true } + } + Signal { + name: "transformOriginChanged" + Parameter { type: "TransformOrigin" } + } + Signal { + name: "smoothChanged" + Parameter { type: "bool" } + } + Signal { + name: "antialiasingChanged" + Parameter { type: "bool" } + } + Signal { + name: "clipChanged" + Parameter { type: "bool" } + } + Signal { + name: "windowChanged" + revision: 1 + Parameter { name: "window"; type: "QQuickWindow"; isPointer: true } + } + Signal { name: "containmentMaskChanged"; revision: 11 } + Method { name: "update" } + Method { + name: "grabToImage" + revision: 4 + type: "bool" + Parameter { name: "callback"; type: "QJSValue" } + Parameter { name: "targetSize"; type: "QSize" } + } + Method { + name: "grabToImage" + revision: 4 + type: "bool" + Parameter { name: "callback"; type: "QJSValue" } + } + Method { + name: "contains" + type: "bool" + Parameter { name: "point"; type: "QPointF" } + } + Method { + name: "mapFromItem" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "mapToItem" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "mapFromGlobal" + revision: 7 + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "mapToGlobal" + revision: 7 + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { name: "forceActiveFocus" } + Method { + name: "forceActiveFocus" + Parameter { name: "reason"; type: "Qt::FocusReason" } + } + Method { + name: "nextItemInFocusChain" + revision: 1 + type: "QQuickItem*" + Parameter { name: "forward"; type: "bool" } + } + Method { name: "nextItemInFocusChain"; revision: 1; type: "QQuickItem*" } + Method { + name: "childAt" + type: "QQuickItem*" + Parameter { name: "x"; type: "double" } + Parameter { name: "y"; type: "double" } + } + } + Component { + name: "QQuickPaintedItem" + defaultProperty: "data" + prototype: "QQuickItem" + Enum { + name: "RenderTarget" + values: { + "Image": 0, + "FramebufferObject": 1, + "InvertedYFramebufferObject": 2 + } + } + Enum { + name: "PerformanceHints" + values: { + "FastFBOResizing": 1 + } + } + Property { name: "contentsSize"; type: "QSize" } + Property { name: "fillColor"; type: "QColor" } + Property { name: "contentsScale"; type: "double" } + Property { name: "renderTarget"; type: "RenderTarget" } + Property { name: "textureSize"; type: "QSize" } + } + Component { + prototype: "QQuickRectangle" + name: "QtQuick.Controls.Fusion.impl/ButtonPanel 2.3" + exports: ["QtQuick.Controls.Fusion.impl/ButtonPanel 2.3"] + exportMetaObjectRevisions: [3] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "QQuickItem"; isPointer: true } + Property { name: "highlighted"; type: "bool" } + } + Component { + prototype: "QQuickRectangle" + name: "QtQuick.Controls.Fusion.impl/CheckIndicator 2.3" + exports: ["QtQuick.Controls.Fusion.impl/CheckIndicator 2.3"] + exportMetaObjectRevisions: [3] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "QQuickItem"; isPointer: true } + Property { name: "pressedColor"; type: "QColor"; isReadonly: true } + Property { name: "checkMarkColor"; type: "QColor"; isReadonly: true } + } + Component { + prototype: "QQuickRectangle" + name: "QtQuick.Controls.Fusion.impl/RadioIndicator 2.3" + exports: ["QtQuick.Controls.Fusion.impl/RadioIndicator 2.3"] + exportMetaObjectRevisions: [3] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "QQuickItem"; isPointer: true } + Property { name: "pressedColor"; type: "QColor"; isReadonly: true } + Property { name: "checkMarkColor"; type: "QColor"; isReadonly: true } + } + Component { + prototype: "QQuickRectangle" + name: "QtQuick.Controls.Fusion.impl/SliderGroove 2.3" + exports: ["QtQuick.Controls.Fusion.impl/SliderGroove 2.3"] + exportMetaObjectRevisions: [3] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "QQuickItem"; isPointer: true } + Property { name: "offset"; type: "double" } + Property { name: "progress"; type: "double" } + Property { name: "visualProgress"; type: "double" } + } + Component { + prototype: "QQuickRectangle" + name: "QtQuick.Controls.Fusion.impl/SliderHandle 2.3" + exports: ["QtQuick.Controls.Fusion.impl/SliderHandle 2.3"] + exportMetaObjectRevisions: [3] + isComposite: true + defaultProperty: "data" + Property { name: "palette"; type: "QVariant" } + Property { name: "pressed"; type: "bool" } + Property { name: "hovered"; type: "bool" } + Property { name: "vertical"; type: "bool" } + Property { name: "visualFocus"; type: "bool" } + } + Component { + prototype: "QQuickRectangle" + name: "QtQuick.Controls.Fusion.impl/SwitchIndicator 2.3" + exports: ["QtQuick.Controls.Fusion.impl/SwitchIndicator 2.3"] + exportMetaObjectRevisions: [3] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "QQuickItem"; isPointer: true } + Property { name: "pressedColor"; type: "QColor"; isReadonly: true } + Property { name: "checkMarkColor"; type: "QColor"; isReadonly: true } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Fusion/qmldir b/deployment_test/QtQuick/Controls.2/Fusion/qmldir new file mode 100644 index 0000000000000000000000000000000000000000..b584adc8a4c84033b3fa53d172351e22ab0e6140 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Fusion/qmldir @@ -0,0 +1,4 @@ +module QtQuick.Controls.Fusion +plugin qtquickcontrols2fusionstyleplugin +classname QtQuickControls2FusionStylePlugin +depends QtQuick.Controls 2.5 diff --git a/deployment_test/QtQuick/Controls.2/Fusion/qtquickcontrols2fusionstyleplugin.dll b/deployment_test/QtQuick/Controls.2/Fusion/qtquickcontrols2fusionstyleplugin.dll new file mode 100644 index 0000000000000000000000000000000000000000..74a41d993e9e1794fb69cf1875f7500de78cb9bc Binary files /dev/null and b/deployment_test/QtQuick/Controls.2/Fusion/qtquickcontrols2fusionstyleplugin.dll differ diff --git a/deployment_test/QtQuick/Controls.2/GroupBox.qml b/deployment_test/QtQuick/Controls.2/GroupBox.qml new file mode 100644 index 0000000000000000000000000000000000000000..96f776f292ce8e747c8784365462d9171c7c3c4a --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/GroupBox.qml @@ -0,0 +1,74 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Templates 2.12 as T + +T.GroupBox { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding, + implicitLabelWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + spacing: 6 + padding: 12 + topPadding: padding + (implicitLabelWidth > 0 ? implicitLabelHeight + spacing : 0) + + label: Text { + x: control.leftPadding + width: control.availableWidth + + text: control.title + font: control.font + color: control.palette.windowText + elide: Text.ElideRight + verticalAlignment: Text.AlignVCenter + } + + background: Rectangle { + y: control.topPadding - control.bottomPadding + width: parent.width + height: parent.height - control.topPadding + control.bottomPadding + + color: "transparent" + border.color: control.palette.mid + } +} diff --git a/deployment_test/QtQuick/Controls.2/HorizontalHeaderView.qml b/deployment_test/QtQuick/Controls.2/HorizontalHeaderView.qml new file mode 100644 index 0000000000000000000000000000000000000000..ec91af258e2dede9998baed8b8825fb8b55441e3 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/HorizontalHeaderView.qml @@ -0,0 +1,68 @@ +/**************************************************************************** +** +** Copyright (C) 2020 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.15 +import QtQuick.Controls 2.15 +import QtQuick.Templates 2.15 as T + +T.HorizontalHeaderView { + id: control + + implicitWidth: syncView ? syncView.width : 0 + implicitHeight: contentHeight + + delegate: Rectangle { + // Qt6: add cellPadding (and font etc) as public API in headerview + readonly property real cellPadding: 8 + + implicitWidth: text.implicitWidth + (cellPadding * 2) + implicitHeight: Math.max(control.height, text.implicitHeight + (cellPadding * 2)) + color: "#f6f6f6" + border.color: "#e4e4e4" + + Text { + id: text + text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] + : model[control.textRole]) + : modelData + width: parent.width + height: parent.height + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + color: "#ff26282a" + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/ApplicationWindow.qml b/deployment_test/QtQuick/Controls.2/Imagine/ApplicationWindow.qml new file mode 100644 index 0000000000000000000000000000000000000000..7bfcc3f9fc7b66a66e82e4440c4e14d5e3ce2506 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/ApplicationWindow.qml @@ -0,0 +1,77 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Window 2.2 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Controls.Imagine.impl 2.12 + +T.ApplicationWindow { + id: window + + // ### remove? + overlay.modal: NinePatchImage { + source: Imagine.url + "applicationwindow-overlay" + NinePatchImageSelector on source { + states: [ + {"modal": true} + ] + } + } + + // ### remove? + overlay.modeless: NinePatchImage { + source: Imagine.url + "applicationwindow-overlay" + NinePatchImageSelector on source { + states: [ + {"modal": false} + ] + } + } + + background: NinePatchImage { + width: window.width + height: window.height + + source: Imagine.url + "applicationwindow-background" + NinePatchImageSelector on source { + states: [ + {"active": window.active} + ] + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/BusyIndicator.qml b/deployment_test/QtQuick/Controls.2/Imagine/BusyIndicator.qml new file mode 100644 index 0000000000000000000000000000000000000000..652365b16dc70a7677e421a57332d8ef1515bed5 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/BusyIndicator.qml @@ -0,0 +1,88 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Controls.Imagine.impl 2.12 + +T.BusyIndicator { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + topPadding: background ? background.topPadding : 0 + leftPadding: background ? background.leftPadding : 0 + rightPadding: background ? background.rightPadding : 0 + bottomPadding: background ? background.bottomPadding : 0 + + topInset: background ? -background.topInset || 0 : 0 + leftInset: background ? -background.leftInset || 0 : 0 + rightInset: background ? -background.rightInset || 0 : 0 + bottomInset: background ? -background.bottomInset || 0 : 0 + + contentItem: AnimatedImage { + opacity: control.running ? 1 : 0 + playing: control.running || opacity > 0 + visible: control.running || opacity > 0 + Behavior on opacity { OpacityAnimator { duration: 250 } } + + source: Imagine.url + "busyindicator-animation" + AnimatedImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"running": control.running}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + } + + background: NinePatchImage { + source: Imagine.url + "busyindicator-background" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"running": control.running}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/Button.qml b/deployment_test/QtQuick/Controls.2/Imagine/Button.qml new file mode 100644 index 0000000000000000000000000000000000000000..e7171eb14bb3e65e867f6800bdecc820b9ee4dc4 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/Button.qml @@ -0,0 +1,99 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Controls.Imagine.impl 2.12 + +T.Button { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + spacing: 6 // ### + + topPadding: background ? background.topPadding : 0 + leftPadding: background ? background.leftPadding : 0 + rightPadding: background ? background.rightPadding : 0 + bottomPadding: background ? background.bottomPadding : 0 + + topInset: background ? -background.topInset || 0 : 0 + leftInset: background ? -background.leftInset || 0 : 0 + rightInset: background ? -background.rightInset || 0 : 0 + bottomInset: background ? -background.bottomInset || 0 : 0 + + icon.width: 24 + icon.height: 24 + icon.color: control.enabled && control.flat && control.highlighted ? control.palette.highlight + : control.enabled && (control.down || control.checked || control.highlighted) && !control.flat + ? control.palette.brightText : control.flat ? control.palette.windowText : control.palette.buttonText + + contentItem: IconLabel { + spacing: control.spacing + mirrored: control.mirrored + display: control.display + + icon: control.icon + text: control.text + font: control.font + color: control.enabled && control.flat && control.highlighted ? control.palette.highlight + : control.enabled && (control.down || control.checked || control.highlighted) && !control.flat + ? control.palette.brightText : control.flat ? control.palette.windowText : control.palette.buttonText + } + + background: NinePatchImage { + source: Imagine.url + "button-background" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"pressed": control.down}, + {"checked": control.checked}, + {"checkable": control.checkable}, + {"focused": control.visualFocus}, + {"highlighted": control.highlighted}, + {"mirrored": control.mirrored}, + {"flat": control.flat}, + {"hovered": control.hovered} + ] + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/CheckBox.qml b/deployment_test/QtQuick/Controls.2/Imagine/CheckBox.qml new file mode 100644 index 0000000000000000000000000000000000000000..b91ceb40f2d73e9e8e17849b41029abd4f23bcd4 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/CheckBox.qml @@ -0,0 +1,106 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Controls.Imagine.impl 2.12 + +T.CheckBox { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + spacing: 6 // ### + + topPadding: background ? background.topPadding : 0 + leftPadding: background ? background.leftPadding : 0 + rightPadding: background ? background.rightPadding : 0 + bottomPadding: background ? background.bottomPadding : 0 + + topInset: background ? -background.topInset || 0 : 0 + leftInset: background ? -background.leftInset || 0 : 0 + rightInset: background ? -background.rightInset || 0 : 0 + bottomInset: background ? -background.bottomInset || 0 : 0 + + indicator: Image { + x: text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + + source: Imagine.url + "checkbox-indicator" + ImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"pressed": control.down}, + {"checked": control.checkState === Qt.Checked}, + {"partially-checked": control.checkState === Qt.PartiallyChecked}, + {"focused": control.visualFocus}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + } + + contentItem: Text { + leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 + + text: control.text + font: control.font + color: control.palette.windowText + elide: Text.ElideRight + verticalAlignment: Text.AlignVCenter + } + + background: NinePatchImage { + source: Imagine.url + "checkbox-background" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"pressed": control.down}, + {"checked": control.checkState === Qt.Checked}, + {"partially-checked": control.checkState === Qt.PartiallyChecked}, + {"focused": control.visualFocus}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/CheckDelegate.qml b/deployment_test/QtQuick/Controls.2/Imagine/CheckDelegate.qml new file mode 100644 index 0000000000000000000000000000000000000000..1997515282bcb42c7e4db6b309c8c3d0ac7b36d4 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/CheckDelegate.qml @@ -0,0 +1,118 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Controls.Imagine.impl 2.12 + +T.CheckDelegate { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + spacing: 12 // ### + + topPadding: background ? background.topPadding : 0 + leftPadding: background ? background.leftPadding : 0 + rightPadding: background ? background.rightPadding : 0 + bottomPadding: background ? background.bottomPadding : 0 + + topInset: background ? -background.topInset || 0 : 0 + leftInset: background ? -background.leftInset || 0 : 0 + rightInset: background ? -background.rightInset || 0 : 0 + bottomInset: background ? -background.bottomInset || 0 : 0 + + icon.width: 24 + icon.height: 24 + icon.color: control.palette.text + + indicator: Image { + x: control.mirrored ? control.leftPadding : control.width - width - control.rightPadding + y: control.topPadding + (control.availableHeight - height) / 2 + + source: Imagine.url + "checkdelegate-indicator" + ImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"pressed": control.down}, + {"checked": control.checkState === Qt.Checked}, + {"partially-checked": control.checkState === Qt.PartiallyChecked}, + {"focused": control.visualFocus}, + {"highlighted": control.highlighted}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + } + + contentItem: IconLabel { + leftPadding: control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: !control.mirrored ? control.indicator.width + control.spacing : 0 + + spacing: control.spacing + mirrored: control.mirrored + display: control.display + alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft + + icon: control.icon + text: control.text + font: control.font + color: control.palette.text + } + + background: NinePatchImage { + source: Imagine.url + "checkdelegate-background" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"pressed": control.down}, + {"checked": control.checkState === Qt.Checked}, + {"partially-checked": control.checkState === Qt.PartiallyChecked}, + {"focused": control.visualFocus}, + {"highlighted": control.highlighted}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/ComboBox.qml b/deployment_test/QtQuick/Controls.2/Imagine/ComboBox.qml new file mode 100644 index 0000000000000000000000000000000000000000..d657e734ad544b045740f5a8e148e058a4701c01 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/ComboBox.qml @@ -0,0 +1,174 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.15 +import QtQuick.Window 2.15 +import QtQuick.Templates 2.15 as T +import QtQuick.Controls 2.15 +import QtQuick.Controls.Imagine 2.15 +import QtQuick.Controls.Imagine.impl 2.15 + +T.ComboBox { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentItem.implicitWidth + background ? (background.leftPadding + background.rightPadding) : 0) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + Math.max(implicitContentHeight, + implicitIndicatorHeight) + background ? (background.topPadding + background.bottomPadding) : 0) + + leftPadding: padding + (!control.mirrored || !indicator || !indicator.visible ? 0 : indicator.width + spacing) + rightPadding: padding + (control.mirrored || !indicator || !indicator.visible ? 0 : indicator.width + spacing) + + topInset: background ? -background.topInset || 0 : 0 + leftInset: background ? -background.leftInset || 0 : 0 + rightInset: background ? -background.rightInset || 0 : 0 + bottomInset: background ? -background.bottomInset || 0 : 0 + + delegate: ItemDelegate { + width: ListView.view.width + text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] : model[control.textRole]) : modelData + font.weight: control.currentIndex === index ? Font.DemiBold : Font.Normal + highlighted: control.highlightedIndex === index + hoverEnabled: control.hoverEnabled + } + + indicator: Image { + x: control.mirrored ? control.padding : control.width - width - control.padding + y: control.topPadding + (control.availableHeight - height) / 2 + + source: Imagine.url + "combobox-indicator" + ImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"pressed": control.pressed}, + {"editable": control.editable}, + {"open": control.down}, + {"focused": control.visualFocus}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered}, + {"flat": control.flat} + ] + } + } + + contentItem: T.TextField { + topPadding: control.background ? control.background.topPadding : 0 + leftPadding: control.background ? control.background.leftPadding : 0 + rightPadding: control.background ? control.background.rightPadding : 0 + bottomPadding: control.background ? control.background.bottomPadding : 0 + + text: control.editable ? control.editText : control.displayText + + enabled: control.editable + autoScroll: control.editable + readOnly: control.down + inputMethodHints: control.inputMethodHints + validator: control.validator + selectByMouse: control.selectTextByMouse + + font: control.font + color: control.flat ? control.palette.windowText : control.editable ? control.palette.text : control.palette.buttonText + selectionColor: control.palette.highlight + selectedTextColor: control.palette.highlightedText + verticalAlignment: Text.AlignVCenter + } + + background: NinePatchImage { + source: Imagine.url + "combobox-background" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"pressed": control.pressed}, + {"editable": control.editable}, + {"open": control.down}, + {"focused": control.visualFocus || (control.editable && control.activeFocus)}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered}, + {"flat": control.flat} + ] + } + } + + popup: T.Popup { + width: control.width + height: Math.min(contentItem.implicitHeight + topPadding + bottomPadding, control.Window.height - topMargin - bottomMargin) + + topMargin: background.topInset + bottomMargin: background.bottomInset + + topPadding: background.topPadding + leftPadding: background.leftPadding + rightPadding: background.rightPadding + bottomPadding: background.bottomPadding + + topInset: background ? -background.topInset || 0 : 0 + leftInset: background ? -background.leftInset || 0 : 0 + rightInset: background ? -background.rightInset || 0 : 0 + bottomInset: background ? -background.bottomInset || 0 : 0 + + palette.text: control.palette.text + palette.highlight: control.palette.highlight + palette.highlightedText: control.palette.highlightedText + palette.windowText: control.palette.windowText + palette.buttonText: control.palette.buttonText + + contentItem: ListView { + clip: true + implicitHeight: contentHeight + model: control.delegateModel + currentIndex: control.highlightedIndex + highlightMoveDuration: 0 + + T.ScrollIndicator.vertical: ScrollIndicator { } + } + + background: NinePatchImage { + source: Imagine.url + "combobox-popup" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"pressed": control.pressed}, + {"editable": control.editable}, + {"focused": control.visualFocus || (control.editable && control.activeFocus)}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered}, + {"flat": control.flat} + ] + } + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/DelayButton.qml b/deployment_test/QtQuick/Controls.2/Imagine/DelayButton.qml new file mode 100644 index 0000000000000000000000000000000000000000..f60b5eaeee29a9ea2662ab6e7da18ab5712ef209 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/DelayButton.qml @@ -0,0 +1,138 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Controls.Imagine.impl 2.12 +import QtGraphicalEffects 1.12 + +T.DelayButton { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + topPadding: background ? background.topPadding : 0 + leftPadding: background ? background.leftPadding : 0 + rightPadding: background ? background.rightPadding : 0 + bottomPadding: background ? background.bottomPadding : 0 + + topInset: background ? -background.topInset || 0 : 0 + leftInset: background ? -background.leftInset || 0 : 0 + rightInset: background ? -background.rightInset || 0 : 0 + bottomInset: background ? -background.bottomInset || 0 : 0 + + transition: Transition { + NumberAnimation { + duration: control.delay * (control.pressed ? 1.0 - control.progress : 0.3 * control.progress) + } + } + + contentItem: Text { + text: control.text + font: control.font + color: control.palette.buttonText + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + elide: Text.ElideRight + } + + background: NinePatchImage { + source: Imagine.url + "delaybutton-background" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"pressed": control.down}, + {"checked": control.checked}, + {"focused": control.visualFocus}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + + readonly property NinePatchImage progress: NinePatchImage { + parent: control.background + width: control.progress * parent.width + height: parent.height + visible: false + + source: Imagine.url + "delaybutton-progress" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"pressed": control.down}, + {"checked": control.checked}, + {"focused": control.visualFocus}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + } + + readonly property NinePatchImage mask: NinePatchImage { + width: control.background.width + height: control.background.height + visible: false + + source: Imagine.url + "delaybutton-mask" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"pressed": control.down}, + {"checked": control.checked}, + {"focused": control.visualFocus}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + } + + readonly property OpacityMask effect: OpacityMask { + parent: control.background + width: source.width + height: source.height + source: control.background.progress + + maskSource: ShaderEffectSource { + sourceItem: control.background.mask + sourceRect: Qt.rect(0, 0, control.background.effect.width, control.background.effect.height) + } + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/Dial.qml b/deployment_test/QtQuick/Controls.2/Imagine/Dial.qml new file mode 100644 index 0000000000000000000000000000000000000000..f8c394f3d3c44d67fa96e084a383d508921abefe --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/Dial.qml @@ -0,0 +1,105 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Controls.Imagine.impl 2.12 + +T.Dial { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + (handle ? handle.implicitWidth : 0) + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + (handle ? handle.implicitHeight : 0) + topPadding + bottomPadding) + + topPadding: background ? background.topPadding : 0 + leftPadding: background ? background.leftPadding : 0 + rightPadding: background ? background.rightPadding : 0 + bottomPadding: background ? background.bottomPadding : 0 + + topInset: background ? -background.topInset || 0 : 0 + leftInset: background ? -background.leftInset || 0 : 0 + rightInset: background ? -background.rightInset || 0 : 0 + bottomInset: background ? -background.bottomInset || 0 : 0 + + handle: Image { + x: background.x + background.width / 2 - handle.width / 2 + y: background.y + background.height / 2 - handle.height / 2 + + source: Imagine.url + "dial-handle" + ImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"pressed": control.pressed}, + {"focused": control.visualFocus}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + + transform: [ + Translate { + y: -Math.min(control.background.width, control.background.height) * 0.4 + control.handle.height / 2 + }, + Rotation { + angle: control.angle + origin.x: handle.width / 2 + origin.y: handle.height / 2 + } + ] + } + + background: NinePatchImage { + x: control.width / 2 - width / 2 + y: control.height / 2 - height / 2 + width: Math.max(64, Math.min(control.width, control.height)) + height: width + fillMode: Image.PreserveAspectFit + + source: Imagine.url + "dial-background" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"pressed": control.pressed}, + {"focused": control.visualFocus}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/Dialog.qml b/deployment_test/QtQuick/Controls.2/Imagine/Dialog.qml new file mode 100644 index 0000000000000000000000000000000000000000..730b7f573bb94a56818f0caf6f1e55c01b8d1370 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/Dialog.qml @@ -0,0 +1,117 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Controls.Imagine.impl 2.12 + +T.Dialog { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding, + implicitHeaderWidth, + implicitFooterWidth) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding + + (implicitHeaderHeight > 0 ? implicitHeaderHeight + spacing : 0) + + (implicitFooterHeight > 0 ? implicitFooterHeight + spacing : 0)) + + topPadding: background ? background.topPadding : 0 + leftPadding: background ? background.leftPadding : 0 + rightPadding: background ? background.rightPadding : 0 + bottomPadding: background ? background.bottomPadding : 0 + + topInset: background ? -background.topInset || 0 : 0 + leftInset: background ? -background.leftInset || 0 : 0 + rightInset: background ? -background.rightInset || 0 : 0 + bottomInset: background ? -background.bottomInset || 0 : 0 + + background: NinePatchImage { + source: Imagine.url + "dialog-background" + NinePatchImageSelector on source { + states: [ + {"modal": control.modal}, + {"dim": control.dim} + ] + } + } + + header: Label { + text: control.title + visible: control.title + elide: Label.ElideRight + font.bold: true + padding: 12 + + background: NinePatchImage { + width: parent.width + height: parent.height + + source: Imagine.url + "dialog-title" + NinePatchImageSelector on source { + states: [ + {"modal": control.modal}, + {"dim": control.dim} + ] + } + } + } + + footer: DialogButtonBox { + visible: count > 0 + } + + T.Overlay.modal: NinePatchImage { + source: Imagine.url + "dialog-overlay" + NinePatchImageSelector on source { + states: [ + {"modal": true} + ] + } + } + + T.Overlay.modeless: NinePatchImage { + source: Imagine.url + "dialog-overlay" + NinePatchImageSelector on source { + states: [ + {"modal": false} + ] + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/DialogButtonBox.qml b/deployment_test/QtQuick/Controls.2/Imagine/DialogButtonBox.qml new file mode 100644 index 0000000000000000000000000000000000000000..c24b29fc48e75261facd189f1d16d27d055b7d37 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/DialogButtonBox.qml @@ -0,0 +1,85 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Controls.Imagine.impl 2.12 + +T.DialogButtonBox { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + (control.count === 1 ? contentWidth * 2 : contentWidth) + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + topPadding: background ? background.topPadding : 0 + leftPadding: background ? background.leftPadding : 0 + rightPadding: background ? background.rightPadding : 0 + bottomPadding: background ? background.bottomPadding : 0 + + topInset: background ? -background.topInset || 0 : 0 + leftInset: background ? -background.leftInset || 0 : 0 + rightInset: background ? -background.rightInset || 0 : 0 + bottomInset: background ? -background.bottomInset || 0 : 0 + + spacing: 6 + + delegate: Button { + width: control.count === 1 ? control.availableWidth / 2 : undefined + flat: true + } + + contentItem: ListView { + model: control.contentModel + spacing: control.spacing + orientation: ListView.Horizontal + boundsBehavior: Flickable.StopAtBounds + snapMode: ListView.SnapToItem + } + + background: NinePatchImage { + source: Imagine.url + "dialogbuttonbox-background" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"mirrored": control.mirrored} + ] + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/Drawer.qml b/deployment_test/QtQuick/Controls.2/Imagine/Drawer.qml new file mode 100644 index 0000000000000000000000000000000000000000..2c93ba751fbfb9cab2c3276a77fe05f14e8117a9 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/Drawer.qml @@ -0,0 +1,96 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Controls.Imagine.impl 2.12 + +T.Drawer { + id: control + + parent: T.ApplicationWindow.overlay + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + topPadding: background ? background.topPadding : 0 + leftPadding: background ? background.leftPadding : 0 + rightPadding: background ? background.rightPadding : 0 + bottomPadding: background ? background.bottomPadding : 0 + + topInset: background ? -background.topInset || 0 : 0 + leftInset: background ? -background.leftInset || 0 : 0 + rightInset: background ? -background.rightInset || 0 : 0 + bottomInset: background ? -background.bottomInset || 0 : 0 + + enter: Transition { SmoothedAnimation { velocity: 5 } } + exit: Transition { SmoothedAnimation { velocity: 5 } } + + background: NinePatchImage { + source: Imagine.url + "drawer-background" + NinePatchImageSelector on source { + states: [ + {"modal": control.modal}, + {"dim": control.dim}, + {"top": control.edge === Qt.TopEdge}, + {"left": control.edge === Qt.LeftEdge}, + {"right": control.edge === Qt.RightEdge}, + {"bottom": control.edge === Qt.BottomEdge} + ] + } + } + + T.Overlay.modal: NinePatchImage { + source: Imagine.url + "drawer-overlay" + NinePatchImageSelector on source { + states: [ + {"modal": true} + ] + } + } + + T.Overlay.modeless: NinePatchImage { + source: Imagine.url + "drawer-overlay" + NinePatchImageSelector on source { + states: [ + {"modal": false} + ] + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/Frame.qml b/deployment_test/QtQuick/Controls.2/Imagine/Frame.qml new file mode 100644 index 0000000000000000000000000000000000000000..2bef3c88a9dd47d82287aebcc5e211df1e1a6a59 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/Frame.qml @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Controls.Imagine.impl 2.12 + +T.Frame { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + topPadding: background ? background.topPadding : 0 + leftPadding: background ? background.leftPadding : 0 + rightPadding: background ? background.rightPadding : 0 + bottomPadding: background ? background.bottomPadding : 0 + + topInset: background ? -background.topInset || 0 : 0 + leftInset: background ? -background.leftInset || 0 : 0 + rightInset: background ? -background.rightInset || 0 : 0 + bottomInset: background ? -background.bottomInset || 0 : 0 + + background: NinePatchImage { + source: Imagine.url + "frame-background" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"mirrored": control.mirrored} + ] + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/GroupBox.qml b/deployment_test/QtQuick/Controls.2/Imagine/GroupBox.qml new file mode 100644 index 0000000000000000000000000000000000000000..7abdb6f05c068c8e30330b141e03f1ce6b67dfb7 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/GroupBox.qml @@ -0,0 +1,101 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Controls.Imagine.impl 2.12 + +T.GroupBox { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding, + implicitLabelWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + topPadding: (background ? background.topPadding : 0) + (implicitLabelWidth > 0 ? implicitLabelHeight + spacing : 0) + leftPadding: background ? background.leftPadding : 0 + rightPadding: background ? background.rightPadding : 0 + bottomPadding: background ? background.bottomPadding : 0 + padding: 12 + + label: Label { + width: control.width + + topPadding: background.topPadding + leftPadding: background.leftPadding + rightPadding: background.rightPadding + bottomPadding: background.bottomPadding + + text: control.title + font: control.font + elide: Text.ElideRight + verticalAlignment: Text.AlignVCenter + + color: control.palette.windowText + + background: NinePatchImage { + width: parent.width + height: parent.height + + source: Imagine.url + "groupbox-title" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"mirrored": control.mirrored} + ] + } + } + } + + background: NinePatchImage { + x: -leftInset + y: control.topPadding - control.bottomPadding - topInset + width: control.width + leftInset + rightInset + height: control.height + topInset + bottomInset - control.topPadding + control.padding + + source: Imagine.url + "groupbox-background" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"mirrored": control.mirrored} + ] + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/HorizontalHeaderView.qml b/deployment_test/QtQuick/Controls.2/Imagine/HorizontalHeaderView.qml new file mode 100644 index 0000000000000000000000000000000000000000..ec91af258e2dede9998baed8b8825fb8b55441e3 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/HorizontalHeaderView.qml @@ -0,0 +1,68 @@ +/**************************************************************************** +** +** Copyright (C) 2020 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.15 +import QtQuick.Controls 2.15 +import QtQuick.Templates 2.15 as T + +T.HorizontalHeaderView { + id: control + + implicitWidth: syncView ? syncView.width : 0 + implicitHeight: contentHeight + + delegate: Rectangle { + // Qt6: add cellPadding (and font etc) as public API in headerview + readonly property real cellPadding: 8 + + implicitWidth: text.implicitWidth + (cellPadding * 2) + implicitHeight: Math.max(control.height, text.implicitHeight + (cellPadding * 2)) + color: "#f6f6f6" + border.color: "#e4e4e4" + + Text { + id: text + text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] + : model[control.textRole]) + : modelData + width: parent.width + height: parent.height + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + color: "#ff26282a" + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/ItemDelegate.qml b/deployment_test/QtQuick/Controls.2/Imagine/ItemDelegate.qml new file mode 100644 index 0000000000000000000000000000000000000000..0b3edeaff96c0f88d0bdb509648e8e78d10048ce --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/ItemDelegate.qml @@ -0,0 +1,94 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Controls.Imagine.impl 2.12 + +T.ItemDelegate { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + spacing: 12 // ### + + topPadding: background ? background.topPadding : 0 + leftPadding: background ? background.leftPadding : 0 + rightPadding: background ? background.rightPadding : 0 + bottomPadding: background ? background.bottomPadding : 0 + + topInset: background ? -background.topInset || 0 : 0 + leftInset: background ? -background.leftInset || 0 : 0 + rightInset: background ? -background.rightInset || 0 : 0 + bottomInset: background ? -background.bottomInset || 0 : 0 + + icon.width: 24 + icon.height: 24 + icon.color: control.palette.text + + contentItem: IconLabel { + spacing: control.spacing + mirrored: control.mirrored + display: control.display + alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft + + icon: control.icon + text: control.text + font: control.font + color: control.palette.text + } + + background: NinePatchImage { + source: Imagine.url + "itemdelegate-background" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"pressed": control.down}, + {"focused": control.visualFocus}, + {"highlighted": control.highlighted}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/Label.qml b/deployment_test/QtQuick/Controls.2/Imagine/Label.qml new file mode 100644 index 0000000000000000000000000000000000000000..82c0ef475faa102ee45a3c6fd869dd6bc3f6163b --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/Label.qml @@ -0,0 +1,63 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Controls.Imagine.impl 2.12 + +T.Label { + id: control + + topInset: background ? -background.topInset || 0 : 0 + leftInset: background ? -background.leftInset || 0 : 0 + rightInset: background ? -background.rightInset || 0 : 0 + bottomInset: background ? -background.bottomInset || 0 : 0 + + color: control.palette.windowText + linkColor: control.palette.link + + background: NinePatchImage { + source: Imagine.url + "label-background" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/Menu.qml b/deployment_test/QtQuick/Controls.2/Imagine/Menu.qml new file mode 100644 index 0000000000000000000000000000000000000000..832565e6b110041cc24bcb48c572a478ed435a2c --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/Menu.qml @@ -0,0 +1,108 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Controls.Imagine.impl 2.12 +import QtQuick.Window 2.12 + +T.Menu { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + topMargin: background ? background.topInset : 0 + leftMargin: background ? background.leftInset : 0 + rightMargin: background ? background.rightInset : 0 + bottomMargin: background ? background.bottomInset : 0 + + topPadding: background ? background.topPadding : 0 + leftPadding: background ? background.leftPadding : 0 + rightPadding: background ? background.rightPadding : 0 + bottomPadding: background ? background.bottomPadding : 0 + + topInset: background ? -background.topInset || 0 : 0 + leftInset: background ? -background.leftInset || 0 : 0 + rightInset: background ? -background.rightInset || 0 : 0 + bottomInset: background ? -background.bottomInset || 0 : 0 + + delegate: MenuItem { } + + contentItem: ListView { + implicitHeight: contentHeight + model: control.contentModel + interactive: Window.window + ? contentHeight + control.topPadding + control.bottomPadding > Window.window.height + : false + clip: true + currentIndex: control.currentIndex + + T.ScrollIndicator.vertical: ScrollIndicator { } + } + + background: NinePatchImage { + source: Imagine.url + "menu-background" + NinePatchImageSelector on source { + states: [ + {"modal": control.modal}, + {"dim": control.dim} + ] + } + } + + T.Overlay.modal: NinePatchImage { + source: Imagine.url + "menu-overlay" + NinePatchImageSelector on source { + states: [ + {"modal": true} + ] + } + } + + T.Overlay.modeless: NinePatchImage { + source: Imagine.url + "menu-overlay" + NinePatchImageSelector on source { + states: [ + {"modal": false} + ] + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/MenuItem.qml b/deployment_test/QtQuick/Controls.2/Imagine/MenuItem.qml new file mode 100644 index 0000000000000000000000000000000000000000..f85fc657f246910ce415604522b26966214abb6e --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/MenuItem.qml @@ -0,0 +1,138 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Controls.Imagine.impl 2.12 + +T.MenuItem { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + spacing: 6 // ### + + topPadding: background ? background.topPadding : 0 + leftPadding: background ? background.leftPadding : 0 + rightPadding: background ? background.rightPadding : 0 + bottomPadding: background ? background.bottomPadding : 0 + + topInset: background ? -background.topInset || 0 : 0 + leftInset: background ? -background.leftInset || 0 : 0 + rightInset: background ? -background.rightInset || 0 : 0 + bottomInset: background ? -background.bottomInset || 0 : 0 + + icon.width: 24 + icon.height: 24 + icon.color: control.palette.windowText + + contentItem: IconLabel { + readonly property real arrowPadding: control.subMenu && control.arrow ? control.arrow.width + control.spacing : 0 + readonly property real indicatorPadding: control.checkable && control.indicator ? control.indicator.width + control.spacing : 0 + leftPadding: !control.mirrored ? indicatorPadding : arrowPadding + rightPadding: control.mirrored ? indicatorPadding : arrowPadding + + spacing: control.spacing + mirrored: control.mirrored + display: control.display + alignment: Qt.AlignLeft + + icon: control.icon + text: control.text + font: control.font + color: control.palette.windowText + } + + arrow: Image { + x: control.mirrored ? control.leftPadding : control.width - width - control.rightPadding + y: control.topPadding + (control.availableHeight - height) / 2 + + visible: control.subMenu + source: Imagine.url + "menuitem-arrow" + ImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"pressed": control.down}, + {"checked": control.checked}, + {"focused": control.visualFocus}, + {"highlighted": control.highlighted}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + } + + indicator: Image { + x: control.text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + + visible: control.checkable + source: Imagine.url + "menuitem-indicator" + ImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"pressed": control.down}, + {"checked": control.checked}, + {"focused": control.visualFocus}, + {"highlighted": control.highlighted}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + } + + background: NinePatchImage { + source: Imagine.url + "menuitem-background" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"pressed": control.down}, + {"checked": control.checked}, + {"focused": control.visualFocus}, + {"highlighted": control.highlighted}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/MenuSeparator.qml b/deployment_test/QtQuick/Controls.2/Imagine/MenuSeparator.qml new file mode 100644 index 0000000000000000000000000000000000000000..9ed39087369ef45ace179a87b084d7ce9d1869f8 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/MenuSeparator.qml @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Controls.Imagine.impl 2.12 + +T.MenuSeparator { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + topPadding: background ? background.topPadding : 0 + leftPadding: background ? background.leftPadding : 0 + rightPadding: background ? background.rightPadding : 0 + bottomPadding: background ? background.bottomPadding : 0 + + topInset: background ? -background.topInset || 0 : 0 + leftInset: background ? -background.leftInset || 0 : 0 + rightInset: background ? -background.rightInset || 0 : 0 + bottomInset: background ? -background.bottomInset || 0 : 0 + + contentItem: NinePatchImage { + source: Imagine.url + "menuseparator-separator" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"mirrored": control.mirrored} + ] + } + } + + background: NinePatchImage { + source: Imagine.url + "menuseparator-background" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"mirrored": control.mirrored} + ] + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/Page.qml b/deployment_test/QtQuick/Controls.2/Imagine/Page.qml new file mode 100644 index 0000000000000000000000000000000000000000..07ec0a758f5f3b80d39d9fd6b3e7a118c07d8d7b --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/Page.qml @@ -0,0 +1,73 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Controls.Imagine.impl 2.12 + +T.Page { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding, + implicitHeaderWidth, + implicitFooterWidth) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding + + (implicitHeaderHeight > 0 ? implicitHeaderHeight + spacing : 0) + + (implicitFooterHeight > 0 ? implicitFooterHeight + spacing : 0)) + + topPadding: background ? background.topPadding : 0 + leftPadding: background ? background.leftPadding : 0 + rightPadding: background ? background.rightPadding : 0 + bottomPadding: background ? background.bottomPadding : 0 + + topInset: background ? -background.topInset || 0 : 0 + leftInset: background ? -background.leftInset || 0 : 0 + rightInset: background ? -background.rightInset || 0 : 0 + bottomInset: background ? -background.bottomInset || 0 : 0 + + background: NinePatchImage { + source: Imagine.url + "page-background" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"mirrored": control.mirrored} + ] + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/PageIndicator.qml b/deployment_test/QtQuick/Controls.2/Imagine/PageIndicator.qml new file mode 100644 index 0000000000000000000000000000000000000000..8da89f5a164a91cdc8566eceac44bb398a76d3d0 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/PageIndicator.qml @@ -0,0 +1,92 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Controls.Imagine.impl 2.12 + +T.PageIndicator { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + topPadding: background ? background.topPadding : 0 + leftPadding: background ? background.leftPadding : 0 + rightPadding: background ? background.rightPadding : 0 + bottomPadding: background ? background.bottomPadding : 0 + + topInset: background ? -background.topInset || 0 : 0 + leftInset: background ? -background.leftInset || 0 : 0 + rightInset: background ? -background.rightInset || 0 : 0 + bottomInset: background ? -background.bottomInset || 0 : 0 + + delegate: Image { + source: Imagine.url + "pageindicator-delegate" + ImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"pressed": pressed}, + {"current": index === control.currentIndex}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} // ### TODO: context property + ] + } + } + + contentItem: Row { + spacing: control.spacing + + Repeater { + model: control.count + delegate: control.delegate + } + } + + background: NinePatchImage { + source: Imagine.url + "pageindicator-background" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/Pane.qml b/deployment_test/QtQuick/Controls.2/Imagine/Pane.qml new file mode 100644 index 0000000000000000000000000000000000000000..970b22b94dd90ab56faccfb1485723dfab1259f9 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/Pane.qml @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Controls.Imagine.impl 2.12 + +T.Pane { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + topPadding: background ? background.topPadding : 0 + leftPadding: background ? background.leftPadding : 0 + rightPadding: background ? background.rightPadding : 0 + bottomPadding: background ? background.bottomPadding : 0 + + topInset: background ? -background.topInset || 0 : 0 + leftInset: background ? -background.leftInset || 0 : 0 + rightInset: background ? -background.rightInset || 0 : 0 + bottomInset: background ? -background.bottomInset || 0 : 0 + + background: NinePatchImage { + source: Imagine.url + "pane-background" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"mirrored": control.mirrored} + ] + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/Popup.qml b/deployment_test/QtQuick/Controls.2/Imagine/Popup.qml new file mode 100644 index 0000000000000000000000000000000000000000..8f69bef4634c0080a52aeb13890af81ff59f44ff --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/Popup.qml @@ -0,0 +1,87 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Controls.Imagine.impl 2.12 + +T.Popup { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + topPadding: background ? background.topPadding : undefined + leftPadding: background ? background.leftPadding : undefined + rightPadding: background ? background.rightPadding : undefined + bottomPadding: background ? background.bottomPadding : undefined + + topInset: background ? -background.topInset || 0 : 0 + leftInset: background ? -background.leftInset || 0 : 0 + rightInset: background ? -background.rightInset || 0 : 0 + bottomInset: background ? -background.bottomInset || 0 : 0 + + background: NinePatchImage { + source: Imagine.url + "popup-background" + NinePatchImageSelector on source { + states: [ + {"modal": control.modal}, + {"dim": control.dim} + ] + } + } + + T.Overlay.modal: NinePatchImage { + source: Imagine.url + "popup-overlay" + NinePatchImageSelector on source { + states: [ + {"modal": true} + ] + } + } + + T.Overlay.modeless: NinePatchImage { + source: Imagine.url + "popup-overlay" + NinePatchImageSelector on source { + states: [ + {"modal": false} + ] + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/ProgressBar.qml b/deployment_test/QtQuick/Controls.2/Imagine/ProgressBar.qml new file mode 100644 index 0000000000000000000000000000000000000000..2f78004ed048b4a5a9a037cb3757ad3762be0545 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/ProgressBar.qml @@ -0,0 +1,142 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Controls.Imagine.impl 2.12 +import QtGraphicalEffects 1.12 + +T.ProgressBar { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + topPadding: background ? background.topPadding : 0 + leftPadding: background ? background.leftPadding : 0 + rightPadding: background ? background.rightPadding : 0 + bottomPadding: background ? background.bottomPadding : 0 + + topInset: background ? -background.topInset || 0 : 0 + leftInset: background ? -background.leftInset || 0 : 0 + rightInset: background ? -background.rightInset || 0 : 0 + bottomInset: background ? -background.bottomInset || 0 : 0 + + contentItem: Item { + implicitWidth: control.indeterminate ? animation.implicitWidth || progress.implicitWidth : progress.implicitWidth + implicitHeight: control.indeterminate ? animation.implicitHeight || progress.implicitHeight : progress.implicitHeight + scale: control.mirrored ? -1 : 1 + + readonly property bool hasMask: mask.status !== Image.Null + + readonly property NinePatchImage progress: NinePatchImage { + parent: control.contentItem + width: control.position * parent.width + height: parent.height + visible: !control.indeterminate && !control.contentItem.hasMask + + source: Imagine.url + "progressbar-progress" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"indeterminate": control.indeterminate}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + } + + readonly property AnimatedImage animation: AnimatedImage { + parent: control.contentItem + width: parent.width + height: parent.height + playing: control.indeterminate + visible: control.indeterminate && !control.contentItem.hasMask + + source: Imagine.url + "progressbar-animation" + AnimatedImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + } + + readonly property NinePatchImage mask: NinePatchImage { + width: control.availableWidth + height: control.availableHeight + visible: false + + source: Imagine.url + "progressbar-mask" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"indeterminate": control.indeterminate}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + } + + readonly property OpacityMask effect: OpacityMask { + parent: control.contentItem + width: source.width + height: source.height + source: control.indeterminate ? control.contentItem.animation : control.contentItem.progress + + maskSource: ShaderEffectSource { + sourceItem: control.contentItem.mask + sourceRect: Qt.rect(0, 0, control.contentItem.effect.width, control.contentItem.effect.height) + } + } + } + + background: NinePatchImage { + source: Imagine.url + "progressbar-background" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"indeterminate": control.indeterminate}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/RadioButton.qml b/deployment_test/QtQuick/Controls.2/Imagine/RadioButton.qml new file mode 100644 index 0000000000000000000000000000000000000000..a50bc127654ddf25251f0ca505951bc01f51622a --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/RadioButton.qml @@ -0,0 +1,104 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Controls.Imagine.impl 2.12 + +T.RadioButton { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + spacing: 6 // ### + + topPadding: background ? background.topPadding : 0 + leftPadding: background ? background.leftPadding : 0 + rightPadding: background ? background.rightPadding : 0 + bottomPadding: background ? background.bottomPadding : 0 + + topInset: background ? -background.topInset || 0 : 0 + leftInset: background ? -background.leftInset || 0 : 0 + rightInset: background ? -background.rightInset || 0 : 0 + bottomInset: background ? -background.bottomInset || 0 : 0 + + indicator: Image { + x: control.text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + + source: Imagine.url + "radiobutton-indicator" + ImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"pressed": control.down}, + {"checked": control.checked}, + {"focused": control.visualFocus}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + } + + contentItem: Text { + leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 + + text: control.text + font: control.font + color: control.palette.windowText + elide: Text.ElideRight + verticalAlignment: Text.AlignVCenter + } + + background: NinePatchImage { + source: Imagine.url + "radiobutton-background" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"pressed": control.down}, + {"checked": control.checked}, + {"focused": control.visualFocus}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/RadioDelegate.qml b/deployment_test/QtQuick/Controls.2/Imagine/RadioDelegate.qml new file mode 100644 index 0000000000000000000000000000000000000000..5a8356f8783b3c029c7c98c295ce296caa89d29a --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/RadioDelegate.qml @@ -0,0 +1,116 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Controls.Imagine.impl 2.12 + +T.RadioDelegate { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + spacing: 12 // ### + + topPadding: background ? background.topPadding : 0 + leftPadding: background ? background.leftPadding : 0 + rightPadding: background ? background.rightPadding : 0 + bottomPadding: background ? background.bottomPadding : 0 + + topInset: background ? -background.topInset || 0 : 0 + leftInset: background ? -background.leftInset || 0 : 0 + rightInset: background ? -background.rightInset || 0 : 0 + bottomInset: background ? -background.bottomInset || 0 : 0 + + icon.width: 24 + icon.height: 24 + icon.color: control.palette.text + + indicator: Image { + x: control.mirrored ? control.leftPadding : control.width - width - control.rightPadding + y: control.topPadding + (control.availableHeight - height) / 2 + + source: Imagine.url + "radiodelegate-indicator" + ImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"pressed": control.down}, + {"checked": control.checked}, + {"focused": control.visualFocus}, + {"highlighted": control.highlighted}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + } + + contentItem: IconLabel { + leftPadding: control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: !control.mirrored ? control.indicator.width + control.spacing : 0 + + spacing: control.spacing + mirrored: control.mirrored + display: control.display + alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft + + icon: control.icon + text: control.text + font: control.font + color: control.palette.text + } + + background: NinePatchImage { + source: Imagine.url + "radiodelegate-background" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"pressed": control.down}, + {"checked": control.checked}, + {"focused": control.visualFocus}, + {"highlighted": control.highlighted}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/RangeSlider.qml b/deployment_test/QtQuick/Controls.2/Imagine/RangeSlider.qml new file mode 100644 index 0000000000000000000000000000000000000000..47d90cf3e1559b47adf7976b58394c2540cbbba2 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/RangeSlider.qml @@ -0,0 +1,134 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Controls.Imagine.impl 2.12 + +T.RangeSlider { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + first.implicitHandleWidth + leftPadding + rightPadding, + second.implicitHandleWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + first.implicitHandleHeight + topPadding + bottomPadding, + second.implicitHandleHeight + topPadding + bottomPadding) + + topPadding: background ? background.topPadding : 0 + leftPadding: background ? background.leftPadding : 0 + rightPadding: background ? background.rightPadding : 0 + bottomPadding: background ? background.bottomPadding : 0 + + topInset: background ? -background.topInset || 0 : 0 + leftInset: background ? -background.leftInset || 0 : 0 + rightInset: background ? -background.rightInset || 0 : 0 + bottomInset: background ? -background.bottomInset || 0 : 0 + + first.handle: Image { + x: control.leftPadding + (control.horizontal ? control.first.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) + y: control.topPadding + (control.horizontal ? (control.availableHeight - height) / 2 : control.first.visualPosition * (control.availableHeight - height)) + + source: Imagine.url + "rangeslider-handle" + ImageSelector on source { + states: [ + {"first": true}, + {"vertical": control.vertical}, + {"horizontal": control.horizontal}, + {"disabled": !control.enabled}, + {"pressed": control.first.pressed}, + {"focused": control.first.handle.activeFocus}, + {"mirrored": control.mirrored}, + {"hovered": control.first.hovered} + ] + } + } + + second.handle: Image { + x: control.leftPadding + (control.horizontal ? control.second.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) + y: control.topPadding + (control.horizontal ? (control.availableHeight - height) / 2 : control.second.visualPosition * (control.availableHeight - height)) + + source: Imagine.url + "rangeslider-handle" + ImageSelector on source { + states: [ + {"second": true}, + {"vertical": control.vertical}, + {"horizontal": control.horizontal}, + {"disabled": !control.enabled}, + {"pressed": control.second.pressed}, + {"focused": control.second.handle.activeFocus}, + {"mirrored": control.mirrored}, + {"hovered": control.second.hovered} + ] + } + } + + background: NinePatchImage { + scale: control.horizontal && control.mirrored ? -1 : 1 + + source: Imagine.url + "rangeslider-background" + NinePatchImageSelector on source { + states: [ + {"vertical": control.vertical}, + {"horizontal": control.horizontal}, + {"disabled": !control.enabled}, + {"focused": control.visualFocus}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + + NinePatchImage { + x: control.horizontal ? control.first.handle.width / 2 + control.first.position * (parent.width - control.first.handle.width) : (parent.width - width) / 2 + y: control.horizontal ? (parent.height - height) / 2 : control.first.handle.height / 2 + control.second.visualPosition * (parent.height - control.first.handle.height) + width: control.horizontal ? control.second.position * (parent.width - control.first.handle.width) - control.first.position * (parent.width - control.first.handle.width) : parent.width + height: control.vertical ? control.second.position * (parent.height - control.first.handle.height) - control.first.position * (parent.height - control.first.handle.height): parent.height + + source: Imagine.url + "rangeslider-progress" + NinePatchImageSelector on source { + states: [ + {"vertical": control.vertical}, + {"horizontal": control.horizontal}, + {"disabled": !control.enabled}, + {"focused": control.visualFocus}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/RoundButton.qml b/deployment_test/QtQuick/Controls.2/Imagine/RoundButton.qml new file mode 100644 index 0000000000000000000000000000000000000000..fe4cbb3663347fb819f1bdd7c34ef01839b5eac7 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/RoundButton.qml @@ -0,0 +1,98 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Controls.Imagine.impl 2.12 + +T.RoundButton { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + topPadding: background ? background.topPadding : 0 + leftPadding: background ? background.leftPadding : 0 + rightPadding: background ? background.rightPadding : 0 + bottomPadding: background ? background.bottomPadding : 0 + + topInset: background ? -background.topInset || 0 : 0 + leftInset: background ? -background.leftInset || 0 : 0 + rightInset: background ? -background.rightInset || 0 : 0 + bottomInset: background ? -background.bottomInset || 0 : 0 + + icon.width: 24 + icon.height: 24 + icon.color: control.enabled && control.flat && control.highlighted ? control.palette.highlight + : control.enabled && (control.down || control.checked || control.highlighted) && !control.flat + ? control.palette.brightText : control.flat ? control.palette.windowText : control.palette.buttonText + + contentItem: IconLabel { + spacing: control.spacing + mirrored: control.mirrored + display: control.display + + icon: control.icon + text: control.text + font: control.font + color: control.enabled && control.flat && control.highlighted ? control.palette.highlight + : control.enabled && (control.down || control.checked || control.highlighted) && !control.flat + ? control.palette.brightText : control.flat ? control.palette.windowText : control.palette.buttonText + } + + background: NinePatchImage { + // ### TODO: radius? + source: Imagine.url + "roundbutton-background" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"pressed": control.down}, + {"checked": control.checked}, + {"checkable": control.checkable}, + {"focused": control.visualFocus}, + {"highlighted": control.highlighted}, + {"flat": control.flat}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/ScrollBar.qml b/deployment_test/QtQuick/Controls.2/Imagine/ScrollBar.qml new file mode 100644 index 0000000000000000000000000000000000000000..68772e12d607a053f6b35b4813a842309c9a284b --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/ScrollBar.qml @@ -0,0 +1,119 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Controls.Imagine.impl 2.12 + +T.ScrollBar { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + visible: control.policy !== T.ScrollBar.AlwaysOff + minimumSize: orientation == Qt.Horizontal ? height / width : width / height + + topPadding: background ? background.topPadding : 0 + leftPadding: background ? background.leftPadding : 0 + rightPadding: background ? background.rightPadding : 0 + bottomPadding: background ? background.bottomPadding : 0 + + topInset: background ? -background.topInset || 0 : 0 + leftInset: background ? -background.leftInset || 0 : 0 + rightInset: background ? -background.rightInset || 0 : 0 + bottomInset: background ? -background.bottomInset || 0 : 0 + + contentItem: NinePatchImage { + width: control.availableWidth + height: control.availableHeight + + source: Imagine.url + "scrollbar-handle" + NinePatchImageSelector on source { + states: [ + {"vertical": control.vertical}, + {"horizontal": control.horizontal}, + {"disabled": !control.enabled}, + {"interactive": control.interactive}, + {"pressed": control.pressed}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + opacity: 0.0 + } + + background: NinePatchImage { + source: Imagine.url + "scrollbar-background" + NinePatchImageSelector on source { + states: [ + {"vertical": control.vertical}, + {"horizontal": control.horizontal}, + {"disabled": !control.enabled}, + {"interactive": control.interactive}, + {"pressed": control.pressed}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + opacity: 0.0 + } + + states: [ + State { + name: "active" + when: control.policy === T.ScrollBar.AlwaysOn || (control.active && control.size < 1.0) + } + ] + + transitions: [ + Transition { + to: "active" + NumberAnimation { targets: [control.contentItem, control.background]; property: "opacity"; to: 1.0 } + }, + Transition { + from: "active" + SequentialAnimation { + PropertyAction{ targets: [control.contentItem, control.background]; property: "opacity"; value: 1.0 } + PauseAnimation { duration: 3000 } + NumberAnimation { targets: [control.contentItem, control.background]; property: "opacity"; to: 0.0 } + } + } + ] +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/ScrollIndicator.qml b/deployment_test/QtQuick/Controls.2/Imagine/ScrollIndicator.qml new file mode 100644 index 0000000000000000000000000000000000000000..896cd87685b338a4b53cc668917a89caf96985d3 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/ScrollIndicator.qml @@ -0,0 +1,111 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Controls.Imagine.impl 2.12 + +T.ScrollIndicator { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + topPadding: background ? background.topPadding : 0 + leftPadding: background ? background.leftPadding : 0 + rightPadding: background ? background.rightPadding : 0 + bottomPadding: background ? background.bottomPadding : 0 + + topInset: background ? -background.topInset || 0 : 0 + leftInset: background ? -background.leftInset || 0 : 0 + rightInset: background ? -background.rightInset || 0 : 0 + bottomInset: background ? -background.bottomInset || 0 : 0 + + contentItem: NinePatchImage { + width: control.availableWidth + height: control.availableHeight + + source: Imagine.url + "scrollindicator-handle" + NinePatchImageSelector on source { + states: [ + {"vertical": control.vertical}, + {"horizontal": control.horizontal}, + {"disabled": !control.enabled}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + opacity: 0.0 + } + + background: NinePatchImage { + source: Imagine.url + "scrollindicator-background" + NinePatchImageSelector on source { + states: [ + {"vertical": control.vertical}, + {"horizontal": control.horizontal}, + {"disabled": !control.enabled}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + opacity: 0.0 + } + + states: [ + State { + name: "active" + when: (control.active && control.size < 1.0) + } + ] + + transitions: [ + Transition { + to: "active" + NumberAnimation { targets: [contentItem, control.background]; property: "opacity"; to: 1.0 } + }, + Transition { + from: "active" + SequentialAnimation { + PauseAnimation { duration: 5000 } + NumberAnimation { targets: [contentItem, control.background]; property: "opacity"; to: 0.0 } + } + } + ] +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/Slider.qml b/deployment_test/QtQuick/Controls.2/Imagine/Slider.qml new file mode 100644 index 0000000000000000000000000000000000000000..fe9c338880dabf36d33861ecf1193df3ae7df49a --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/Slider.qml @@ -0,0 +1,120 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Controls.Imagine.impl 2.12 + +T.Slider { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitHandleWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitHandleHeight + topPadding + bottomPadding) + + topPadding: background ? background.topPadding : 0 + leftPadding: background ? background.leftPadding : 0 + rightPadding: background ? background.rightPadding : 0 + bottomPadding: background ? background.bottomPadding : 0 + + topInset: background ? -background.topInset || 0 : 0 + leftInset: background ? -background.leftInset || 0 : 0 + rightInset: background ? -background.rightInset || 0 : 0 + bottomInset: background ? -background.bottomInset || 0 : 0 + + handle: Image { + x: Math.round(control.leftPadding + (control.horizontal ? control.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2)) + y: Math.round(control.topPadding + (control.horizontal ? (control.availableHeight - height) / 2 : control.visualPosition * (control.availableHeight - height))) + + source: Imagine.url + "slider-handle" + ImageSelector on source { + states: [ + {"vertical": control.vertical}, + {"horizontal": control.horizontal}, + {"disabled": !control.enabled}, + {"pressed": control.pressed}, + {"focused": control.visualFocus}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + } + + background: NinePatchImage { + scale: control.horizontal && control.mirrored ? -1 : 1 + + source: Imagine.url + "slider-background" + NinePatchImageSelector on source { + states: [ + {"vertical": control.vertical}, + {"horizontal": control.horizontal}, + {"disabled": !control.enabled}, + {"pressed": control.down}, + {"focused": control.visualFocus}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + + NinePatchImage { + x: control.horizontal ? 0 : (parent.width - width) / 2 + y: control.horizontal + ? (parent.height - height) / 2 + : control.handle.height / 2 + control.visualPosition * (parent.height - control.handle.height) + width: control.horizontal + ? control.handle.width / 2 + control.position * (parent.width - control.handle.width) + : parent.width + height: control.vertical + ? control.handle.height / 2 + control.position * (parent.height - control.handle.height) + : parent.height + + source: Imagine.url + "slider-progress" + NinePatchImageSelector on source { + states: [ + {"vertical": control.vertical}, + {"horizontal": control.horizontal}, + {"disabled": !control.enabled}, + {"pressed": control.down}, + {"focused": control.visualFocus}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/SpinBox.qml b/deployment_test/QtQuick/Controls.2/Imagine/SpinBox.qml new file mode 100644 index 0000000000000000000000000000000000000000..61135806769cf96a8cd3d2beb8364c49e3276c14 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/SpinBox.qml @@ -0,0 +1,152 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Controls.Imagine.impl 2.12 + +T.SpinBox { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentItem.implicitWidth + 2 * padding + + up.implicitIndicatorWidth + + down.implicitIndicatorWidth) + implicitHeight: Math.max(implicitContentHeight + topPadding + bottomPadding, + implicitBackgroundHeight, + up.implicitIndicatorHeight, + down.implicitIndicatorHeight) + + topPadding: background ? background.topPadding : 0 + leftPadding: (background ? background.leftPadding : 0) + (control.mirrored ? (up.indicator ? up.indicator.width : 0) : (down.indicator ? down.indicator.width : 0)) + rightPadding: (background ? background.rightPadding : 0) + (control.mirrored ? (down.indicator ? down.indicator.width : 0) : (up.indicator ? up.indicator.width : 0)) + bottomPadding: background ? background.bottomPadding : 0 + + topInset: background ? -background.topInset || 0 : 0 + leftInset: background ? -background.leftInset || 0 : 0 + rightInset: background ? -background.rightInset || 0 : 0 + bottomInset: background ? -background.bottomInset || 0 : 0 + + validator: IntValidator { + locale: control.locale.name + bottom: Math.min(control.from, control.to) + top: Math.max(control.from, control.to) + } + + contentItem: TextInput { + z: 2 + text: control.displayText + opacity: control.enabled ? 1 : 0.3 + + font: control.font + color: control.palette.text + selectionColor: control.palette.highlight + selectedTextColor: control.palette.highlightedText + horizontalAlignment: Qt.AlignHCenter + verticalAlignment: Qt.AlignVCenter + + readOnly: !control.editable + validator: control.validator + inputMethodHints: control.inputMethodHints + + NinePatchImage { + z: -1 + width: control.width + height: control.height + visible: control.editable + + source: Imagine.url + "spinbox-editor" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"focused": control.activeFocus}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + } + } + + up.indicator: NinePatchImage { + x: control.mirrored ? 0 : parent.width - width + height: parent.height + + source: Imagine.url + "spinbox-indicator" + NinePatchImageSelector on source { + states: [ + {"up": true}, + {"disabled": !control.up.indicator.enabled}, + {"editable": control.editable}, + {"pressed": control.up.pressed}, + {"focused": control.activeFocus}, + {"mirrored": control.mirrored}, + {"hovered": control.up.hovered} + ] + } + } + + down.indicator: NinePatchImage { + x: control.mirrored ? parent.width - width : 0 + height: parent.height + + source: Imagine.url + "spinbox-indicator" + NinePatchImageSelector on source { + states: [ + {"down": true}, + {"disabled": !control.down.indicator.enabled}, + {"editable": control.editable}, + {"pressed": control.down.pressed}, + {"focused": control.activeFocus}, + {"mirrored": control.mirrored}, + {"hovered": control.down.hovered} + ] + } + } + + background: NinePatchImage { + source: Imagine.url + "spinbox-background" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"editable": control.editable}, + {"focused": control.activeFocus}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/SplitView.qml b/deployment_test/QtQuick/Controls.2/Imagine/SplitView.qml new file mode 100644 index 0000000000000000000000000000000000000000..a4a858f430d3fc68df7244283bb85e9421bff03b --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/SplitView.qml @@ -0,0 +1,63 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.13 +import QtQuick.Templates 2.13 as T +import QtQuick.Controls.Imagine 2.13 +import QtQuick.Controls.Imagine.impl 2.13 + +T.SplitView { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + handle: NinePatchImage { + source: Imagine.url + "splitview-handle" + NinePatchImageSelector on source { + states: [ + {"vertical": control.orientation === Qt.Vertical}, + {"horizontal":control.orientation === Qt.Horizontal}, + {"disabled": !control.enabled}, + {"pressed": T.SplitHandle.pressed}, + {"mirrored": control.mirrored}, + {"hovered": T.SplitHandle.hovered} + ] + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/StackView.qml b/deployment_test/QtQuick/Controls.2/Imagine/StackView.qml new file mode 100644 index 0000000000000000000000000000000000000000..407b1d15dd784cfb87133577a6dc1d464e148841 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/StackView.qml @@ -0,0 +1,91 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Controls.Imagine.impl 2.12 + +T.StackView { + id: control + + implicitWidth: implicitBackgroundWidth + implicitHeight: implicitBackgroundHeight + + topPadding: background ? background.topPadding : 0 + leftPadding: background ? background.leftPadding : 0 + rightPadding: background ? background.rightPadding : 0 + bottomPadding: background ? background.bottomPadding : 0 + + topInset: background ? -background.topInset || 0 : 0 + leftInset: background ? -background.leftInset || 0 : 0 + rightInset: background ? -background.rightInset || 0 : 0 + bottomInset: background ? -background.bottomInset || 0 : 0 + + popEnter: Transition { + XAnimator { from: (control.mirrored ? -1 : 1) * -control.width; to: 0; duration: 400; easing.type: Easing.OutCubic } + } + + popExit: Transition { + XAnimator { from: 0; to: (control.mirrored ? -1 : 1) * control.width; duration: 400; easing.type: Easing.OutCubic } + } + + pushEnter: Transition { + XAnimator { from: (control.mirrored ? -1 : 1) * control.width; to: 0; duration: 400; easing.type: Easing.OutCubic } + } + + pushExit: Transition { + XAnimator { from: 0; to: (control.mirrored ? -1 : 1) * -control.width; duration: 400; easing.type: Easing.OutCubic } + } + + replaceEnter: Transition { + XAnimator { from: (control.mirrored ? -1 : 1) * control.width; to: 0; duration: 400; easing.type: Easing.OutCubic } + } + + replaceExit: Transition { + XAnimator { from: 0; to: (control.mirrored ? -1 : 1) * -control.width; duration: 400; easing.type: Easing.OutCubic } + } + + background: NinePatchImage { + source: Imagine.url + "stackview-background" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"mirrored": control.mirrored} + ] + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/SwipeDelegate.qml b/deployment_test/QtQuick/Controls.2/Imagine/SwipeDelegate.qml new file mode 100644 index 0000000000000000000000000000000000000000..3850253f63314c609a741fb42c65933220103bb1 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/SwipeDelegate.qml @@ -0,0 +1,96 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Controls.Imagine.impl 2.12 + +T.SwipeDelegate { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + spacing: 12 // ### + + topPadding: background ? background.topPadding : 0 + leftPadding: background ? background.leftPadding : 0 + rightPadding: background ? background.rightPadding : 0 + bottomPadding: background ? background.bottomPadding : 0 + + topInset: background ? -background.topInset || 0 : 0 + leftInset: background ? -background.leftInset || 0 : 0 + rightInset: background ? -background.rightInset || 0 : 0 + bottomInset: background ? -background.bottomInset || 0 : 0 + + icon.width: 24 + icon.height: 24 + icon.color: control.palette.text + + swipe.transition: Transition { SmoothedAnimation { velocity: 3; easing.type: Easing.InOutCubic } } + + contentItem: IconLabel { + spacing: control.spacing + mirrored: control.mirrored + display: control.display + alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft + + icon: control.icon + text: control.text + font: control.font + color: control.palette.text + } + + background: NinePatchImage { + source: Imagine.url + "swipedelegate-background" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"pressed": control.down}, + {"focused": control.visualFocus}, + {"highlighted": control.highlighted}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/SwipeView.qml b/deployment_test/QtQuick/Controls.2/Imagine/SwipeView.qml new file mode 100644 index 0000000000000000000000000000000000000000..70d65fef56d6d17f0f1d40ec3730351d5ac93286 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/SwipeView.qml @@ -0,0 +1,90 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Controls.Imagine.impl 2.12 + +T.SwipeView { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + topPadding: background ? background.topPadding : 0 + leftPadding: background ? background.leftPadding : 0 + rightPadding: background ? background.rightPadding : 0 + bottomPadding: background ? background.bottomPadding : 0 + + topInset: background ? -background.topInset || 0 : 0 + leftInset: background ? -background.leftInset || 0 : 0 + rightInset: background ? -background.rightInset || 0 : 0 + bottomInset: background ? -background.bottomInset || 0 : 0 + + contentItem: ListView { + model: control.contentModel + interactive: control.interactive + currentIndex: control.currentIndex + focus: control.focus + + spacing: control.spacing + orientation: control.orientation + snapMode: ListView.SnapOneItem + boundsBehavior: Flickable.StopAtBounds + + highlightRangeMode: ListView.StrictlyEnforceRange + preferredHighlightBegin: 0 + preferredHighlightEnd: 0 + highlightMoveDuration: 250 + } + + background: NinePatchImage { + source: Imagine.url + "swipeview-background" + NinePatchImageSelector on source { + states: [ + {"vertical": control.vertical}, + {"horizontal": control.horizontal}, + {"disabled": !control.enabled}, + {"interactive": control.interactive}, + {"focused": control.contentItem.activeFocus}, + {"mirrored": control.mirrored} + ] + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/Switch.qml b/deployment_test/QtQuick/Controls.2/Imagine/Switch.qml new file mode 100644 index 0000000000000000000000000000000000000000..50b407acb49d75f6152973c196d3eeb7c0952570 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/Switch.qml @@ -0,0 +1,134 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Controls.Imagine.impl 2.12 + +T.Switch { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + spacing: 6 // ### + + topPadding: background ? background.topPadding : 0 + leftPadding: background ? background.leftPadding : 0 + rightPadding: background ? background.rightPadding : 0 + bottomPadding: background ? background.bottomPadding : 0 + + topInset: background ? -background.topInset || 0 : 0 + leftInset: background ? -background.leftInset || 0 : 0 + rightInset: background ? -background.rightInset || 0 : 0 + bottomInset: background ? -background.bottomInset || 0 : 0 + + indicator: NinePatchImage { + x: control.text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + width: Math.max(implicitWidth, handle.leftPadding && handle.rightPadding ? handle.implicitWidth : 2 * handle.implicitWidth) + height: Math.max(implicitHeight, handle.implicitHeight) + + source: Imagine.url + "switch-indicator" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"pressed": control.down}, + {"checked": control.checked}, + {"focused": control.visualFocus}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + + property NinePatchImage handle: NinePatchImage { + readonly property real minPos: parent.leftPadding - leftPadding + readonly property real maxPos: parent.width - width + rightPadding - parent.rightPadding + readonly property real dragPos: control.visualPosition * parent.width - (width / 2) + + parent: control.indicator + + x: Math.max(minPos, Math.min(maxPos, control.visualPosition * parent.width - (width / 2))) + y: (parent.height - height) / 2 + + source: Imagine.url + "switch-handle" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"pressed": control.down}, + {"checked": control.checked}, + {"focused": control.visualFocus}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + + Behavior on x { + enabled: !control.down + SmoothedAnimation { velocity: 200 } + } + } + } + + contentItem: Text { + leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 + + text: control.text + font: control.font + color: control.palette.windowText + elide: Text.ElideRight + verticalAlignment: Text.AlignVCenter + } + + background: NinePatchImage { + source: Imagine.url + "switch-background" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"pressed": control.down}, + {"checked": control.checked}, + {"focused": control.visualFocus}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/SwitchDelegate.qml b/deployment_test/QtQuick/Controls.2/Imagine/SwitchDelegate.qml new file mode 100644 index 0000000000000000000000000000000000000000..73e5aac01421a2cc010dddd0a7c0bcaee53a6882 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/SwitchDelegate.qml @@ -0,0 +1,147 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Controls.Imagine.impl 2.12 + +T.SwitchDelegate { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + spacing: 12 // ### + + topPadding: background ? background.topPadding : 0 + leftPadding: background ? background.leftPadding : 0 + rightPadding: background ? background.rightPadding : 0 + bottomPadding: background ? background.bottomPadding : 0 + + topInset: background ? -background.topInset || 0 : 0 + leftInset: background ? -background.leftInset || 0 : 0 + rightInset: background ? -background.rightInset || 0 : 0 + bottomInset: background ? -background.bottomInset || 0 : 0 + + icon.width: 24 + icon.height: 24 + icon.color: control.palette.text + + indicator: NinePatchImage { + x: control.text ? (control.mirrored ? control.leftPadding : control.width - width - control.rightPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + width: Math.max(implicitWidth, handle.leftPadding && handle.rightPadding ? handle.implicitWidth : 2 * handle.implicitWidth) + height: Math.max(implicitHeight, handle.implicitHeight) + + source: Imagine.url + "switchdelegate-indicator" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"pressed": control.down}, + {"checked": control.checked}, + {"focused": control.visualFocus}, + {"highlighted": control.highlighted}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + + property NinePatchImage handle: NinePatchImage { + readonly property real minPos: parent.leftPadding - leftPadding + readonly property real maxPos: parent.width - width + rightPadding - parent.rightPadding + readonly property real dragPos: control.visualPosition * parent.width - (width / 2) + + parent: control.indicator + + x: Math.max(minPos, Math.min(maxPos, control.visualPosition * parent.width - (width / 2))) + y: (parent.height - height) / 2 + + source: Imagine.url + "switchdelegate-handle" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"pressed": control.down}, + {"checked": control.checked}, + {"focused": control.visualFocus}, + {"highlighted": control.highlighted}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + + Behavior on x { + enabled: !control.down + SmoothedAnimation { velocity: 200 } + } + } + } + + contentItem: IconLabel { + leftPadding: control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: !control.mirrored ? control.indicator.width + control.spacing : 0 + + spacing: control.spacing + mirrored: control.mirrored + display: control.display + alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft + + icon: control.icon + text: control.text + font: control.font + color: control.palette.text + } + + background: NinePatchImage { + source: Imagine.url + "switchdelegate-background" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"pressed": control.down}, + {"checked": control.checked}, + {"focused": control.visualFocus}, + {"highlighted": control.highlighted}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/TabBar.qml b/deployment_test/QtQuick/Controls.2/Imagine/TabBar.qml new file mode 100644 index 0000000000000000000000000000000000000000..69516e03e47cbb1458363b47d6f7e3946f7671ef --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/TabBar.qml @@ -0,0 +1,87 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Controls.Imagine.impl 2.12 + +T.TabBar { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + topPadding: background ? background.topPadding : 0 + leftPadding: background ? background.leftPadding : 0 + rightPadding: background ? background.rightPadding : 0 + bottomPadding: background ? background.bottomPadding : 0 + + topInset: background ? -background.topInset || 0 : 0 + leftInset: background ? -background.leftInset || 0 : 0 + rightInset: background ? -background.rightInset || 0 : 0 + bottomInset: background ? -background.bottomInset || 0 : 0 + + contentItem: ListView { + model: control.contentModel + currentIndex: control.currentIndex + + spacing: control.spacing + orientation: ListView.Horizontal + boundsBehavior: Flickable.StopAtBounds + flickableDirection: Flickable.AutoFlickIfNeeded + snapMode: ListView.SnapToItem + + highlightMoveDuration: 0 + highlightRangeMode: ListView.ApplyRange + preferredHighlightBegin: 48 + preferredHighlightEnd: width - 48 + } + + background: NinePatchImage { + source: Imagine.url + "tabbar-background" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"header": control.position === T.TabBar.Header }, + {"footer": control.position === T.TabBar.Footer }, + {"mirrored": control.mirrored} + ] + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/TabButton.qml b/deployment_test/QtQuick/Controls.2/Imagine/TabButton.qml new file mode 100644 index 0000000000000000000000000000000000000000..1cdcfc4bd4e5e54b4d2825ebcca97c2b9e2f447a --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/TabButton.qml @@ -0,0 +1,92 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Controls.Imagine.impl 2.12 + +T.TabButton { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + spacing: 6 // ### + + topPadding: background ? background.topPadding : 0 + leftPadding: background ? background.leftPadding : 0 + rightPadding: background ? background.rightPadding : 0 + bottomPadding: background ? background.bottomPadding : 0 + + topInset: background ? -background.topInset || 0 : 0 + leftInset: background ? -background.leftInset || 0 : 0 + rightInset: background ? -background.rightInset || 0 : 0 + bottomInset: background ? -background.bottomInset || 0 : 0 + + icon.width: 24 + icon.height: 24 + icon.color: control.palette.buttonText + + contentItem: IconLabel { + spacing: control.spacing + mirrored: control.mirrored + display: control.display + + icon: control.icon + text: control.text + font: control.font + color: control.palette.buttonText + } + + background: NinePatchImage { + source: Imagine.url + "tabbutton-background" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"pressed": control.down}, + {"checked": control.checked}, + {"focused": control.visualFocus}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/TextArea.qml b/deployment_test/QtQuick/Controls.2/Imagine/TextArea.qml new file mode 100644 index 0000000000000000000000000000000000000000..c7505b5209a20cc5c5a78bfee9e9f77322466bfe --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/TextArea.qml @@ -0,0 +1,97 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Controls.Imagine.impl 2.12 + +T.TextArea { + id: control + + implicitWidth: Math.max(contentWidth + leftPadding + rightPadding, + implicitBackgroundWidth + leftInset + rightInset, + placeholder.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(contentHeight + topPadding + bottomPadding, + implicitBackgroundHeight + topInset + bottomInset, + placeholder.implicitHeight + topPadding + bottomPadding) + + topPadding: background ? background.topPadding : 0 + leftPadding: background ? background.leftPadding : 0 + rightPadding: background ? background.rightPadding : 0 + bottomPadding: background ? background.bottomPadding : 0 + + topInset: background ? -background.topInset || 0 : 0 + leftInset: background ? -background.leftInset || 0 : 0 + rightInset: background ? -background.rightInset || 0 : 0 + bottomInset: background ? -background.bottomInset || 0 : 0 + + color: control.palette.text + selectionColor: control.palette.highlight + selectedTextColor: control.palette.highlightedText + verticalAlignment: Qt.AlignVCenter + placeholderTextColor: Color.transparent(control.color, 0.5) + + PlaceholderText { + id: placeholder + x: control.leftPadding + y: control.topPadding + width: control.width - (control.leftPadding + control.rightPadding) + height: control.height - (control.topPadding + control.bottomPadding) + + text: control.placeholderText + font: control.font + color: control.placeholderTextColor + verticalAlignment: control.verticalAlignment + visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter) + elide: Text.ElideRight + renderType: control.renderType + } + + background: NinePatchImage { + source: Imagine.url + "textarea-background" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"focused": control.activeFocus}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/TextField.qml b/deployment_test/QtQuick/Controls.2/Imagine/TextField.qml new file mode 100644 index 0000000000000000000000000000000000000000..3ff0ad4431a7bdad4a406a4544b17767ef3cdc6b --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/TextField.qml @@ -0,0 +1,96 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Controls.Imagine.impl 2.12 + +T.TextField { + id: control + + implicitWidth: implicitBackgroundWidth + leftInset + rightInset + || Math.max(contentWidth, placeholder.implicitWidth) + leftPadding + rightPadding + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding, + placeholder.implicitHeight + topPadding + bottomPadding) + + topPadding: background ? background.topPadding : 0 + leftPadding: background ? background.leftPadding : 0 + rightPadding: background ? background.rightPadding : 0 + bottomPadding: background ? background.bottomPadding : 0 + + topInset: background ? -background.topInset || 0 : 0 + leftInset: background ? -background.leftInset || 0 : 0 + rightInset: background ? -background.rightInset || 0 : 0 + bottomInset: background ? -background.bottomInset || 0 : 0 + + color: control.palette.text + selectionColor: control.palette.highlight + selectedTextColor: control.palette.highlightedText + placeholderTextColor: Color.transparent(control.color, 0.5) + verticalAlignment: Qt.AlignVCenter + + PlaceholderText { + id: placeholder + x: control.leftPadding + y: control.topPadding + width: control.width - (control.leftPadding + control.rightPadding) + height: control.height - (control.topPadding + control.bottomPadding) + + text: control.placeholderText + font: control.font + color: control.placeholderTextColor + verticalAlignment: control.verticalAlignment + visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter) + elide: Text.ElideRight + renderType: control.renderType + } + + background: NinePatchImage { + source: Imagine.url + "textfield-background" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"focused": control.activeFocus}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/ToolBar.qml b/deployment_test/QtQuick/Controls.2/Imagine/ToolBar.qml new file mode 100644 index 0000000000000000000000000000000000000000..99bcd3ba975fb65f6c2a379c64283183778fbeb5 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/ToolBar.qml @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Controls.Imagine.impl 2.12 + +T.ToolBar { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + topPadding: background ? background.topPadding : 0 + leftPadding: background ? background.leftPadding : 0 + rightPadding: background ? background.rightPadding : 0 + bottomPadding: background ? background.bottomPadding : 0 + + topInset: background ? -background.topInset || 0 : 0 + leftInset: background ? -background.leftInset || 0 : 0 + rightInset: background ? -background.rightInset || 0 : 0 + bottomInset: background ? -background.bottomInset || 0 : 0 + + background: NinePatchImage { + source: Imagine.url + "toolbar-background" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"header": control.position === T.ToolBar.Header }, + {"footer": control.position === T.ToolBar.Footer }, + {"mirrored": control.mirrored} + ] + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/ToolButton.qml b/deployment_test/QtQuick/Controls.2/Imagine/ToolButton.qml new file mode 100644 index 0000000000000000000000000000000000000000..cc22f88d2942a4616363d86e027e9690a7c501e4 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/ToolButton.qml @@ -0,0 +1,95 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Controls.Imagine.impl 2.12 + +T.ToolButton { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + spacing: 6 // ### + + topPadding: background ? background.topPadding : 0 + leftPadding: background ? background.leftPadding : 0 + rightPadding: background ? background.rightPadding : 0 + bottomPadding: background ? background.bottomPadding : 0 + + topInset: background ? -background.topInset || 0 : 0 + leftInset: background ? -background.leftInset || 0 : 0 + rightInset: background ? -background.rightInset || 0 : 0 + bottomInset: background ? -background.bottomInset || 0 : 0 + + icon.width: 24 + icon.height: 24 + icon.color: control.palette.buttonText + + contentItem: IconLabel { + spacing: control.spacing + mirrored: control.mirrored + display: control.display + + icon: control.icon + text: control.text + font: control.font + color: control.palette.buttonText + } + + background: NinePatchImage { + source: Imagine.url + "toolbutton-background" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"pressed": control.down}, + {"checked": control.checked}, + {"checkable": control.checkable}, + {"focused": control.visualFocus}, + {"highlighted": control.highlighted}, + {"flat": control.flat}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/ToolSeparator.qml b/deployment_test/QtQuick/Controls.2/Imagine/ToolSeparator.qml new file mode 100644 index 0000000000000000000000000000000000000000..c0887e4d62d9e1839c0210ed0e3f00d5614e616f --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/ToolSeparator.qml @@ -0,0 +1,83 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Controls.Imagine.impl 2.12 + +T.ToolSeparator { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + topPadding: background ? background.topPadding : 0 + leftPadding: background ? background.leftPadding : 0 + rightPadding: background ? background.rightPadding : 0 + bottomPadding: background ? background.bottomPadding : 0 + + topInset: background ? -background.topInset || 0 : 0 + leftInset: background ? -background.leftInset || 0 : 0 + rightInset: background ? -background.rightInset || 0 : 0 + bottomInset: background ? -background.bottomInset || 0 : 0 + + contentItem: NinePatchImage { + source: Imagine.url + "toolseparator-separator" + NinePatchImageSelector on source { + states: [ + {"vertical": control.vertical}, + {"horizontal": control.horizontal}, + {"disabled": !control.enabled}, + {"mirrored": control.mirrored} + ] + } + } + + background: NinePatchImage { + source: Imagine.url + "toolseparator-background" + NinePatchImageSelector on source { + states: [ + {"vertical": control.vertical}, + {"horizontal": control.horizontal}, + {"disabled": !control.enabled}, + {"mirrored": control.mirrored} + ] + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/ToolTip.qml b/deployment_test/QtQuick/Controls.2/Imagine/ToolTip.qml new file mode 100644 index 0000000000000000000000000000000000000000..21d75ebcb5a6cb8e18c51ed3a18f6b447b125a7d --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/ToolTip.qml @@ -0,0 +1,85 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Controls.Imagine.impl 2.12 + +T.ToolTip { + id: control + + x: parent ? (parent.width - implicitWidth) / 2 : 0 - (background ? background.leftInset : 0) + y: -implicitHeight - (background ? background.topInset : 0) + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + topMargin: background ? background.topInset : 0 + leftMargin: background ? background.leftInset : 0 + rightMargin: background ? background.rightInset : 0 + bottomMargin: background ? background.bottomInset : 0 + + topPadding: background ? background.topPadding : 0 + leftPadding: background ? background.leftPadding : 0 + rightPadding: background ? background.rightPadding : 0 + bottomPadding: background ? background.bottomPadding : 0 + + topInset: background ? -background.topInset || 0 : 0 + leftInset: background ? -background.leftInset || 0 : 0 + rightInset: background ? -background.rightInset || 0 : 0 + bottomInset: background ? -background.bottomInset || 0 : 0 + + closePolicy: T.Popup.CloseOnEscape | T.Popup.CloseOnPressOutsideParent | T.Popup.CloseOnReleaseOutsideParent + + contentItem: Text { + text: control.text + font: control.font + wrapMode: Text.Wrap + color: control.palette.toolTipText + } + + background: NinePatchImage { + source: Imagine.url + "tooltip-background" + NinePatchImageSelector on source { + states: [ + // ### + ] + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/Tumbler.qml b/deployment_test/QtQuick/Controls.2/Imagine/Tumbler.qml new file mode 100644 index 0000000000000000000000000000000000000000..12025cc5beebdd4fa9d11d393a2ecf0890c18680 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/Tumbler.qml @@ -0,0 +1,94 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Imagine 2.12 +import QtQuick.Controls.Imagine.impl 2.12 + +T.Tumbler { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) || 60 // ### remove 60 in Qt 6 + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) || 200 // ### remove 200 in Qt 6 + + topInset: background ? -background.topInset || 0 : 0 + leftInset: background ? -background.leftInset || 0 : 0 + rightInset: background ? -background.rightInset || 0 : 0 + bottomInset: background ? -background.bottomInset || 0 : 0 + + delegate: Text { + text: modelData + font: control.font + color: control.palette.text + opacity: (1.0 - Math.abs(Tumbler.displacement) / (control.visibleItemCount / 2)) * (control.enabled ? 1 : 0.6) + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + } + + contentItem: TumblerView { + implicitWidth: 60 + implicitHeight: 200 + model: control.model + delegate: control.delegate + path: Path { + startX: control.contentItem.width / 2 + startY: -control.contentItem.delegateHeight / 2 + PathLine { + x: control.contentItem.width / 2 + y: (control.visibleItemCount + 1) * control.contentItem.delegateHeight - control.contentItem.delegateHeight / 2 + } + } + + property real delegateHeight: control.availableHeight / control.visibleItemCount + } + + background: NinePatchImage { + source: Imagine.url + "tumbler-background" + NinePatchImageSelector on source { + states: [ + {"disabled": !control.enabled}, + {"focused": control.visualFocus}, + {"mirrored": control.mirrored}, + {"hovered": control.hovered} + ] + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/VerticalHeaderView.qml b/deployment_test/QtQuick/Controls.2/Imagine/VerticalHeaderView.qml new file mode 100644 index 0000000000000000000000000000000000000000..3fc9ca5acea3b9059627fe2a71f9924db097876b --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/VerticalHeaderView.qml @@ -0,0 +1,68 @@ +/**************************************************************************** +** +** Copyright (C) 2020 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.15 +import QtQuick.Controls 2.15 +import QtQuick.Templates 2.15 as T + +T.VerticalHeaderView { + id: control + + implicitWidth: contentWidth + implicitHeight: syncView ? syncView.height : 0 + + delegate: Rectangle { + // Qt6: add cellPadding (and font etc) as public API in headerview + readonly property real cellPadding: 8 + + implicitWidth: Math.max(control.width, text.implicitWidth + (cellPadding * 2)) + implicitHeight: text.implicitHeight + (cellPadding * 2) + color: "#f6f6f6" + border.color: "#e4e4e4" + + Text { + id: text + text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] + : model[control.textRole]) + : modelData + width: parent.width + height: parent.height + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + color: "#ff26282a" + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/plugins.qmltypes b/deployment_test/QtQuick/Controls.2/Imagine/plugins.qmltypes new file mode 100644 index 0000000000000000000000000000000000000000..785b6dba07422bd1e913a3e3c89267de52995d3f --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/plugins.qmltypes @@ -0,0 +1,347 @@ +import QtQuick.tooling 1.2 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. +// +// This file was auto-generated by: +// 'qmlplugindump -nonrelocatable -dependencies dependencies.json QtQuick.Controls.Imagine 2.15' + +Module { + dependencies: ["QtQuick.Controls 2.0"] + Component { + name: "QQuickAnimatedImageSelector" + prototype: "QQuickImageSelector" + exports: ["QtQuick.Controls.Imagine.impl/AnimatedImageSelector 2.3"] + exportMetaObjectRevisions: [0] + } + Component { name: "QQuickAttachedObject"; prototype: "QObject" } + Component { + name: "QQuickImage" + defaultProperty: "data" + prototype: "QQuickImageBase" + Enum { + name: "HAlignment" + values: { + "AlignLeft": 1, + "AlignRight": 2, + "AlignHCenter": 4 + } + } + Enum { + name: "VAlignment" + values: { + "AlignTop": 32, + "AlignBottom": 64, + "AlignVCenter": 128 + } + } + Enum { + name: "FillMode" + values: { + "Stretch": 0, + "PreserveAspectFit": 1, + "PreserveAspectCrop": 2, + "Tile": 3, + "TileVertically": 4, + "TileHorizontally": 5, + "Pad": 6 + } + } + Property { name: "fillMode"; type: "FillMode" } + Property { name: "paintedWidth"; type: "double"; isReadonly: true } + Property { name: "paintedHeight"; type: "double"; isReadonly: true } + Property { name: "horizontalAlignment"; type: "HAlignment" } + Property { name: "verticalAlignment"; type: "VAlignment" } + Property { name: "mipmap"; revision: 3; type: "bool" } + Property { name: "autoTransform"; revision: 5; type: "bool" } + Property { name: "sourceClipRect"; revision: 15; type: "QRectF" } + Signal { name: "paintedGeometryChanged" } + Signal { + name: "horizontalAlignmentChanged" + Parameter { name: "alignment"; type: "HAlignment" } + } + Signal { + name: "verticalAlignmentChanged" + Parameter { name: "alignment"; type: "VAlignment" } + } + Signal { + name: "mipmapChanged" + revision: 3 + Parameter { type: "bool" } + } + Signal { name: "autoTransformChanged"; revision: 5 } + } + Component { + name: "QQuickImageBase" + defaultProperty: "data" + prototype: "QQuickImplicitSizeItem" + Enum { + name: "LoadPixmapOptions" + values: { + "NoOption": 0, + "HandleDPR": 1, + "UseProviderOptions": 2 + } + } + Enum { + name: "Status" + values: { + "Null": 0, + "Ready": 1, + "Loading": 2, + "Error": 3 + } + } + Property { name: "status"; type: "Status"; isReadonly: true } + Property { name: "source"; type: "QUrl" } + Property { name: "progress"; type: "double"; isReadonly: true } + Property { name: "asynchronous"; type: "bool" } + Property { name: "cache"; type: "bool" } + Property { name: "sourceSize"; type: "QSize" } + Property { name: "mirror"; type: "bool" } + Property { name: "currentFrame"; revision: 14; type: "int" } + Property { name: "frameCount"; revision: 14; type: "int"; isReadonly: true } + Property { name: "colorSpace"; revision: 15; type: "QColorSpace" } + Signal { + name: "sourceChanged" + Parameter { type: "QUrl" } + } + Signal { + name: "statusChanged" + Parameter { type: "QQuickImageBase::Status" } + } + Signal { + name: "progressChanged" + Parameter { name: "progress"; type: "double" } + } + Signal { name: "currentFrameChanged"; revision: 14 } + Signal { name: "frameCountChanged"; revision: 14 } + Signal { name: "sourceClipRectChanged"; revision: 15 } + Signal { name: "colorSpaceChanged"; revision: 15 } + } + Component { + name: "QQuickImageSelector" + prototype: "QObject" + exports: ["QtQuick.Controls.Imagine.impl/ImageSelector 2.3"] + exportMetaObjectRevisions: [0] + Property { name: "source"; type: "QUrl"; isReadonly: true } + Property { name: "name"; type: "string" } + Property { name: "path"; type: "string" } + Property { name: "states"; type: "QVariantList" } + Property { name: "separator"; type: "string" } + Property { name: "cache"; type: "bool" } + } + Component { + name: "QQuickImagineStyle" + prototype: "QQuickAttachedObject" + exports: ["QtQuick.Controls.Imagine/Imagine 2.3"] + isCreatable: false + exportMetaObjectRevisions: [0] + Property { name: "path"; type: "string" } + Property { name: "url"; type: "QUrl"; isReadonly: true } + } + Component { + name: "QQuickImplicitSizeItem" + defaultProperty: "data" + prototype: "QQuickItem" + Property { name: "implicitWidth"; type: "double"; isReadonly: true } + Property { name: "implicitHeight"; type: "double"; isReadonly: true } + } + Component { + name: "QQuickItem" + defaultProperty: "data" + prototype: "QObject" + Enum { + name: "Flags" + values: { + "ItemClipsChildrenToShape": 1, + "ItemAcceptsInputMethod": 2, + "ItemIsFocusScope": 4, + "ItemHasContents": 8, + "ItemAcceptsDrops": 16 + } + } + Enum { + name: "TransformOrigin" + values: { + "TopLeft": 0, + "Top": 1, + "TopRight": 2, + "Left": 3, + "Center": 4, + "Right": 5, + "BottomLeft": 6, + "Bottom": 7, + "BottomRight": 8 + } + } + Property { name: "parent"; type: "QQuickItem"; isPointer: true } + Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "resources"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "children"; type: "QQuickItem"; isList: true; isReadonly: true } + Property { name: "x"; type: "double" } + Property { name: "y"; type: "double" } + Property { name: "z"; type: "double" } + Property { name: "width"; type: "double" } + Property { name: "height"; type: "double" } + Property { name: "opacity"; type: "double" } + Property { name: "enabled"; type: "bool" } + Property { name: "visible"; type: "bool" } + Property { name: "visibleChildren"; type: "QQuickItem"; isList: true; isReadonly: true } + Property { name: "states"; type: "QQuickState"; isList: true; isReadonly: true } + Property { name: "transitions"; type: "QQuickTransition"; isList: true; isReadonly: true } + Property { name: "state"; type: "string" } + Property { name: "childrenRect"; type: "QRectF"; isReadonly: true } + Property { name: "anchors"; type: "QQuickAnchors"; isReadonly: true; isPointer: true } + Property { name: "left"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "right"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "horizontalCenter"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "top"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "bottom"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "verticalCenter"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "baseline"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "baselineOffset"; type: "double" } + Property { name: "clip"; type: "bool" } + Property { name: "focus"; type: "bool" } + Property { name: "activeFocus"; type: "bool"; isReadonly: true } + Property { name: "activeFocusOnTab"; revision: 1; type: "bool" } + Property { name: "rotation"; type: "double" } + Property { name: "scale"; type: "double" } + Property { name: "transformOrigin"; type: "TransformOrigin" } + Property { name: "transformOriginPoint"; type: "QPointF"; isReadonly: true } + Property { name: "transform"; type: "QQuickTransform"; isList: true; isReadonly: true } + Property { name: "smooth"; type: "bool" } + Property { name: "antialiasing"; type: "bool" } + Property { name: "implicitWidth"; type: "double" } + Property { name: "implicitHeight"; type: "double" } + Property { name: "containmentMask"; revision: 11; type: "QObject"; isPointer: true } + Property { name: "layer"; type: "QQuickItemLayer"; isReadonly: true; isPointer: true } + Signal { + name: "childrenRectChanged" + Parameter { type: "QRectF" } + } + Signal { + name: "baselineOffsetChanged" + Parameter { type: "double" } + } + Signal { + name: "stateChanged" + Parameter { type: "string" } + } + Signal { + name: "focusChanged" + Parameter { type: "bool" } + } + Signal { + name: "activeFocusChanged" + Parameter { type: "bool" } + } + Signal { + name: "activeFocusOnTabChanged" + revision: 1 + Parameter { type: "bool" } + } + Signal { + name: "parentChanged" + Parameter { type: "QQuickItem"; isPointer: true } + } + Signal { + name: "transformOriginChanged" + Parameter { type: "TransformOrigin" } + } + Signal { + name: "smoothChanged" + Parameter { type: "bool" } + } + Signal { + name: "antialiasingChanged" + Parameter { type: "bool" } + } + Signal { + name: "clipChanged" + Parameter { type: "bool" } + } + Signal { + name: "windowChanged" + revision: 1 + Parameter { name: "window"; type: "QQuickWindow"; isPointer: true } + } + Signal { name: "containmentMaskChanged"; revision: 11 } + Method { name: "update" } + Method { + name: "grabToImage" + revision: 4 + type: "bool" + Parameter { name: "callback"; type: "QJSValue" } + Parameter { name: "targetSize"; type: "QSize" } + } + Method { + name: "grabToImage" + revision: 4 + type: "bool" + Parameter { name: "callback"; type: "QJSValue" } + } + Method { + name: "contains" + type: "bool" + Parameter { name: "point"; type: "QPointF" } + } + Method { + name: "mapFromItem" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "mapToItem" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "mapFromGlobal" + revision: 7 + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "mapToGlobal" + revision: 7 + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { name: "forceActiveFocus" } + Method { + name: "forceActiveFocus" + Parameter { name: "reason"; type: "Qt::FocusReason" } + } + Method { + name: "nextItemInFocusChain" + revision: 1 + type: "QQuickItem*" + Parameter { name: "forward"; type: "bool" } + } + Method { name: "nextItemInFocusChain"; revision: 1; type: "QQuickItem*" } + Method { + name: "childAt" + type: "QQuickItem*" + Parameter { name: "x"; type: "double" } + Parameter { name: "y"; type: "double" } + } + } + Component { + name: "QQuickNinePatchImage" + defaultProperty: "data" + prototype: "QQuickImage" + exports: ["QtQuick.Controls.Imagine.impl/NinePatchImage 2.3"] + exportMetaObjectRevisions: [0] + Property { name: "topPadding"; type: "double"; isReadonly: true } + Property { name: "leftPadding"; type: "double"; isReadonly: true } + Property { name: "rightPadding"; type: "double"; isReadonly: true } + Property { name: "bottomPadding"; type: "double"; isReadonly: true } + Property { name: "topInset"; type: "double"; isReadonly: true } + Property { name: "leftInset"; type: "double"; isReadonly: true } + Property { name: "rightInset"; type: "double"; isReadonly: true } + Property { name: "bottomInset"; type: "double"; isReadonly: true } + } + Component { + name: "QQuickNinePatchImageSelector" + prototype: "QQuickImageSelector" + exports: ["QtQuick.Controls.Imagine.impl/NinePatchImageSelector 2.3"] + exportMetaObjectRevisions: [0] + } +} diff --git a/deployment_test/QtQuick/Controls.2/Imagine/qmldir b/deployment_test/QtQuick/Controls.2/Imagine/qmldir new file mode 100644 index 0000000000000000000000000000000000000000..7b4b3ea0f7bbcafe5c0f0a4fc2cba6b771dbb353 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Imagine/qmldir @@ -0,0 +1,5 @@ +module QtQuick.Controls.Imagine +plugin qtquickcontrols2imaginestyleplugin +classname QtQuickControls2ImagineStylePlugin +depends QtQuick.Controls 2.5 +depends QtGraphicalEffects 1.0 diff --git a/deployment_test/QtQuick/Controls.2/Imagine/qtquickcontrols2imaginestyleplugin.dll b/deployment_test/QtQuick/Controls.2/Imagine/qtquickcontrols2imaginestyleplugin.dll new file mode 100644 index 0000000000000000000000000000000000000000..e9aec7995f36a69daf33a80ff4b537b774651362 Binary files /dev/null and b/deployment_test/QtQuick/Controls.2/Imagine/qtquickcontrols2imaginestyleplugin.dll differ diff --git a/deployment_test/QtQuick/Controls.2/ItemDelegate.qml b/deployment_test/QtQuick/Controls.2/ItemDelegate.qml new file mode 100644 index 0000000000000000000000000000000000000000..6229e2bbadb8d52b11f5c226206bf758d5911e57 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/ItemDelegate.qml @@ -0,0 +1,77 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Templates 2.12 as T + +T.ItemDelegate { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + padding: 12 + spacing: 8 + + icon.width: 24 + icon.height: 24 + icon.color: control.palette.text + + contentItem: IconLabel { + spacing: control.spacing + mirrored: control.mirrored + display: control.display + alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft + + icon: control.icon + text: control.text + font: control.font + color: control.highlighted ? control.palette.highlightedText : control.palette.text + } + + background: Rectangle { + implicitWidth: 100 + implicitHeight: 40 + visible: control.down || control.highlighted || control.visualFocus + color: Color.blend(control.down ? control.palette.midlight : control.palette.light, + control.palette.highlight, control.visualFocus ? 0.15 : 0.0) + } +} diff --git a/deployment_test/QtQuick/Controls.2/Label.qml b/deployment_test/QtQuick/Controls.2/Label.qml new file mode 100644 index 0000000000000000000000000000000000000000..9a42635fcf613792efc48b89ce440195edb5fca1 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Label.qml @@ -0,0 +1,47 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Templates 2.12 as T + +T.Label { + id: control + + color: control.palette.windowText + linkColor: control.palette.link +} diff --git a/deployment_test/QtQuick/Controls.2/Material/ApplicationWindow.qml b/deployment_test/QtQuick/Controls.2/Material/ApplicationWindow.qml new file mode 100644 index 0000000000000000000000000000000000000000..6a10ed7fe1bd4c776c4f18b3df286d6f75415329 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/ApplicationWindow.qml @@ -0,0 +1,56 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Window 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Material 2.12 + +T.ApplicationWindow { + id: window + + color: Material.backgroundColor + + overlay.modal: Rectangle { + color: window.Material.backgroundDimColor + Behavior on opacity { NumberAnimation { duration: 150 } } + } + + overlay.modeless: Rectangle { + color: window.Material.backgroundDimColor + Behavior on opacity { NumberAnimation { duration: 150 } } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/BoxShadow.qml b/deployment_test/QtQuick/Controls.2/Material/BoxShadow.qml new file mode 100644 index 0000000000000000000000000000000000000000..5a746c0f9b2b5cc3b3d3e710785cc3fe60e3515d --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/BoxShadow.qml @@ -0,0 +1,70 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls.Material 2.12 +import QtQuick.Controls.Material.impl 2.12 + +/* + A implementation of CSS's box-shadow, used by ElevationEffect for a Material Design + elevation shadow effect. + */ +RectangularGlow { + // The 4 properties from CSS box-shadow, plus the inherited color property + property int offsetX + property int offsetY + property int blurRadius + property int spreadRadius + + // The source item the shadow is being applied to, used for correctly + // calculating the corner radious + property Item source + + property bool fullWidth + property bool fullHeight + + x: (parent.width - width)/2 + offsetX + y: (parent.height - height)/2 + offsetY + + implicitWidth: source ? source.width : parent.width + implicitHeight: source ? source.height : parent.height + + width: implicitWidth + 2 * spreadRadius + (fullWidth ? 2 * cornerRadius : 0) + height: implicitHeight + 2 * spreadRadius + (fullHeight ? 2 * cornerRadius : 0) + glowRadius: blurRadius/2 + spread: 0.05 + cornerRadius: blurRadius + (source && source.radius || 0) +} diff --git a/deployment_test/QtQuick/Controls.2/Material/BusyIndicator.qml b/deployment_test/QtQuick/Controls.2/Material/BusyIndicator.qml new file mode 100644 index 0000000000000000000000000000000000000000..8173248cd211d5c869c385545946226e5692bf24 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/BusyIndicator.qml @@ -0,0 +1,61 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Material 2.12 +import QtQuick.Controls.Material.impl 2.12 + +T.BusyIndicator { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + padding: 6 + + contentItem: BusyIndicatorImpl { + implicitWidth: control.Material.touchTarget + implicitHeight: control.Material.touchTarget + color: control.Material.accentColor + + running: control.running + opacity: control.running ? 1 : 0 + Behavior on opacity { OpacityAnimator { duration: 250 } } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/Button.qml b/deployment_test/QtQuick/Controls.2/Material/Button.qml new file mode 100644 index 0000000000000000000000000000000000000000..04c6664c3429cc57046e8cab208ac73789fc07fa --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/Button.qml @@ -0,0 +1,118 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Material 2.12 +import QtQuick.Controls.Material.impl 2.12 + +T.Button { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + topInset: 6 + bottomInset: 6 + padding: 12 + horizontalPadding: padding - 4 + spacing: 6 + + icon.width: 24 + icon.height: 24 + icon.color: !enabled ? Material.hintTextColor : + flat && highlighted ? Material.accentColor : + highlighted ? Material.primaryHighlightedTextColor : Material.foreground + + Material.elevation: flat ? control.down || control.hovered ? 2 : 0 + : control.down ? 8 : 2 + Material.background: flat ? "transparent" : undefined + + contentItem: IconLabel { + spacing: control.spacing + mirrored: control.mirrored + display: control.display + + icon: control.icon + text: control.text + font: control.font + color: !control.enabled ? control.Material.hintTextColor : + control.flat && control.highlighted ? control.Material.accentColor : + control.highlighted ? control.Material.primaryHighlightedTextColor : control.Material.foreground + } + + background: Rectangle { + implicitWidth: 64 + implicitHeight: control.Material.buttonHeight + + radius: 2 + color: !control.enabled ? control.Material.buttonDisabledColor : + control.highlighted ? control.Material.highlightedButtonColor : control.Material.buttonColor + + PaddedRectangle { + y: parent.height - 4 + width: parent.width + height: 4 + radius: 2 + topPadding: -2 + clip: true + visible: control.checkable && (!control.highlighted || control.flat) + color: control.checked && control.enabled ? control.Material.accentColor : control.Material.secondaryTextColor + } + + // The layer is disabled when the button color is transparent so you can do + // Material.background: "transparent" and get a proper flat button without needing + // to set Material.elevation as well + layer.enabled: control.enabled && control.Material.buttonColor.a > 0 + layer.effect: ElevationEffect { + elevation: control.Material.elevation + } + + Ripple { + clipRadius: 2 + width: parent.width + height: parent.height + pressed: control.pressed + anchor: control + active: control.down || control.visualFocus || control.hovered + color: control.flat && control.highlighted ? control.Material.highlightedRippleColor : control.Material.rippleColor + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/CheckBox.qml b/deployment_test/QtQuick/Controls.2/Material/CheckBox.qml new file mode 100644 index 0000000000000000000000000000000000000000..159e2f12dcb48e57b2b87c6bb08dbf200cd59e86 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/CheckBox.qml @@ -0,0 +1,83 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Material 2.12 +import QtQuick.Controls.Material.impl 2.12 + +T.CheckBox { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + spacing: 8 + padding: 8 + verticalPadding: padding + 7 + + indicator: CheckIndicator { + x: control.text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + control: control + + Ripple { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + width: 28; height: 28 + + z: -1 + anchor: control + pressed: control.pressed + active: control.down || control.visualFocus || control.hovered + color: control.checked ? control.Material.highlightedRippleColor : control.Material.rippleColor + } + } + + contentItem: Text { + leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 + + text: control.text + font: control.font + color: control.enabled ? control.Material.foreground : control.Material.hintTextColor + elide: Text.ElideRight + verticalAlignment: Text.AlignVCenter + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/CheckDelegate.qml b/deployment_test/QtQuick/Controls.2/Material/CheckDelegate.qml new file mode 100644 index 0000000000000000000000000000000000000000..c7d7575ee8ab48836f51f32184efc12f611fc3b8 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/CheckDelegate.qml @@ -0,0 +1,98 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Material 2.12 +import QtQuick.Controls.Material.impl 2.12 + +T.CheckDelegate { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + padding: 16 + verticalPadding: 8 + spacing: 16 + + icon.width: 24 + icon.height: 24 + icon.color: enabled ? Material.foreground : Material.hintTextColor + + indicator: CheckIndicator { + x: control.text ? (control.mirrored ? control.leftPadding : control.width - width - control.rightPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + control: control + } + + contentItem: IconLabel { + leftPadding: !control.mirrored ? 0 : control.indicator.width + control.spacing + rightPadding: control.mirrored ? 0 : control.indicator.width + control.spacing + + spacing: control.spacing + mirrored: control.mirrored + display: control.display + alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft + + icon: control.icon + text: control.text + font: control.font + color: control.enabled ? control.Material.foreground : control.Material.hintTextColor + } + + background: Rectangle { + implicitHeight: control.Material.delegateHeight + + color: control.highlighted ? control.Material.listHighlightColor : "transparent" + + Ripple { + width: parent.width + height: parent.height + + clip: visible + pressed: control.pressed + anchor: control + active: control.down || control.visualFocus || control.hovered + color: control.Material.rippleColor + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/CheckIndicator.qml b/deployment_test/QtQuick/Controls.2/Material/CheckIndicator.qml new file mode 100644 index 0000000000000000000000000000000000000000..7caf8553301aa59a9f3c480a4f83a6c39edd8e92 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/CheckIndicator.qml @@ -0,0 +1,120 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls.Material 2.12 +import QtQuick.Controls.Material.impl 2.12 + +Rectangle { + id: indicatorItem + implicitWidth: 18 + implicitHeight: 18 + color: "transparent" + border.color: !control.enabled ? control.Material.hintTextColor + : checkState !== Qt.Unchecked ? control.Material.accentColor : control.Material.secondaryTextColor + border.width: checkState !== Qt.Unchecked ? width / 2 : 2 + radius: 2 + + property Item control + property int checkState: control.checkState + + Behavior on border.width { + NumberAnimation { + duration: 100 + easing.type: Easing.OutCubic + } + } + + Behavior on border.color { + ColorAnimation { + duration: 100 + easing.type: Easing.OutCubic + } + } + + // TODO: This needs to be transparent + Image { + id: checkImage + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + width: 14 + height: 14 + source: "qrc:/qt-project.org/imports/QtQuick/Controls.2/Material/images/check.png" + fillMode: Image.PreserveAspectFit + + scale: indicatorItem.checkState === Qt.Checked ? 1 : 0 + Behavior on scale { NumberAnimation { duration: 100 } } + } + + Rectangle { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + width: 12 + height: 3 + + scale: indicatorItem.checkState === Qt.PartiallyChecked ? 1 : 0 + Behavior on scale { NumberAnimation { duration: 100 } } + } + + states: [ + State { + name: "checked" + when: indicatorItem.checkState === Qt.Checked + }, + State { + name: "partiallychecked" + when: indicatorItem.checkState === Qt.PartiallyChecked + } + ] + + transitions: Transition { + SequentialAnimation { + NumberAnimation { + target: indicatorItem + property: "scale" + // Go down 2 pixels in size. + to: 1 - 2 / indicatorItem.width + duration: 120 + } + NumberAnimation { + target: indicatorItem + property: "scale" + to: 1 + duration: 120 + } + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/ComboBox.qml b/deployment_test/QtQuick/Controls.2/Material/ComboBox.qml new file mode 100644 index 0000000000000000000000000000000000000000..a9bdd93436491c3547878edeacc732101913cf23 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/ComboBox.qml @@ -0,0 +1,180 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.15 +import QtQuick.Window 2.15 +import QtQuick.Controls 2.15 +import QtQuick.Controls.impl 2.15 +import QtQuick.Templates 2.15 as T +import QtQuick.Controls.Material 2.15 +import QtQuick.Controls.Material.impl 2.15 + +T.ComboBox { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + topInset: 6 + bottomInset: 6 + + leftPadding: padding + (!control.mirrored || !indicator || !indicator.visible ? 0 : indicator.width + spacing) + rightPadding: padding + (control.mirrored || !indicator || !indicator.visible ? 0 : indicator.width + spacing) + + Material.elevation: flat ? control.pressed || control.hovered ? 2 : 0 + : control.pressed ? 8 : 2 + Material.background: flat ? "transparent" : undefined + Material.foreground: flat ? undefined : Material.primaryTextColor + + delegate: MenuItem { + width: ListView.view.width + text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] : model[control.textRole]) : modelData + Material.foreground: control.currentIndex === index ? ListView.view.contentItem.Material.accent : ListView.view.contentItem.Material.foreground + highlighted: control.highlightedIndex === index + hoverEnabled: control.hoverEnabled + } + + indicator: ColorImage { + x: control.mirrored ? control.padding : control.width - width - control.padding + y: control.topPadding + (control.availableHeight - height) / 2 + color: control.enabled ? control.Material.foreground : control.Material.hintTextColor + source: "qrc:/qt-project.org/imports/QtQuick/Controls.2/Material/images/drop-indicator.png" + } + + contentItem: T.TextField { + padding: 6 + leftPadding: control.editable ? 2 : control.mirrored ? 0 : 12 + rightPadding: control.editable ? 2 : control.mirrored ? 12 : 0 + + text: control.editable ? control.editText : control.displayText + + enabled: control.editable + autoScroll: control.editable + readOnly: control.down + inputMethodHints: control.inputMethodHints + validator: control.validator + selectByMouse: control.selectTextByMouse + + font: control.font + color: control.enabled ? control.Material.foreground : control.Material.hintTextColor + selectionColor: control.Material.accentColor + selectedTextColor: control.Material.primaryHighlightedTextColor + verticalAlignment: Text.AlignVCenter + + cursorDelegate: CursorDelegate { } + } + + background: Rectangle { + implicitWidth: 120 + implicitHeight: control.Material.buttonHeight + + radius: control.flat ? 0 : 2 + color: !control.editable ? control.Material.dialogColor : "transparent" + + layer.enabled: control.enabled && !control.editable && control.Material.background.a > 0 + layer.effect: ElevationEffect { + elevation: control.Material.elevation + } + + Rectangle { + visible: control.editable + y: parent.y + control.baselineOffset + width: parent.width + height: control.activeFocus ? 2 : 1 + color: control.editable && control.activeFocus ? control.Material.accentColor : control.Material.hintTextColor + } + + Ripple { + clip: control.flat + clipRadius: control.flat ? 0 : 2 + x: control.editable && control.indicator ? control.indicator.x : 0 + width: control.editable && control.indicator ? control.indicator.width : parent.width + height: parent.height + pressed: control.pressed + anchor: control.editable && control.indicator ? control.indicator : control + active: control.pressed || control.visualFocus || control.hovered + color: control.Material.rippleColor + } + } + + popup: T.Popup { + y: control.editable ? control.height - 5 : 0 + width: control.width + height: Math.min(contentItem.implicitHeight, control.Window.height - topMargin - bottomMargin) + transformOrigin: Item.Top + topMargin: 12 + bottomMargin: 12 + + Material.theme: control.Material.theme + Material.accent: control.Material.accent + Material.primary: control.Material.primary + + enter: Transition { + // grow_fade_in + NumberAnimation { property: "scale"; from: 0.9; to: 1.0; easing.type: Easing.OutQuint; duration: 220 } + NumberAnimation { property: "opacity"; from: 0.0; to: 1.0; easing.type: Easing.OutCubic; duration: 150 } + } + + exit: Transition { + // shrink_fade_out + NumberAnimation { property: "scale"; from: 1.0; to: 0.9; easing.type: Easing.OutQuint; duration: 220 } + NumberAnimation { property: "opacity"; from: 1.0; to: 0.0; easing.type: Easing.OutCubic; duration: 150 } + } + + contentItem: ListView { + clip: true + implicitHeight: contentHeight + model: control.delegateModel + currentIndex: control.highlightedIndex + highlightMoveDuration: 0 + + T.ScrollIndicator.vertical: ScrollIndicator { } + } + + background: Rectangle { + radius: 2 + color: parent.Material.dialogColor + + layer.enabled: control.enabled + layer.effect: ElevationEffect { + elevation: 8 + } + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/CursorDelegate.qml b/deployment_test/QtQuick/Controls.2/Material/CursorDelegate.qml new file mode 100644 index 0000000000000000000000000000000000000000..fe2d25c675c00c9a343d036c4dcf7318b5cf57e6 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/CursorDelegate.qml @@ -0,0 +1,65 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls.Material 2.12 + +Rectangle { + id: cursor + + color: parent.Material.accentColor + width: 2 + visible: parent.activeFocus && !parent.readOnly && parent.selectionStart === parent.selectionEnd + + Connections { + target: cursor.parent + function onCursorPositionChanged() { + // keep a moving cursor visible + cursor.opacity = 1 + timer.restart() + } + } + + Timer { + id: timer + running: cursor.parent.activeFocus && !cursor.parent.readOnly && interval != 0 + repeat: true + interval: Qt.styleHints.cursorFlashTime / 2 + onTriggered: cursor.opacity = !cursor.opacity ? 1 : 0 + // force the cursor visible when gaining focus + onRunningChanged: cursor.opacity = 1 + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/DelayButton.qml b/deployment_test/QtQuick/Controls.2/Material/DelayButton.qml new file mode 100644 index 0000000000000000000000000000000000000000..6b5ef3ad007eea042d6160b469d177e572f23542 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/DelayButton.qml @@ -0,0 +1,117 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Material 2.12 +import QtQuick.Controls.Material.impl 2.12 + +T.DelayButton { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + topInset: 6 + bottomInset: 6 + padding: 12 + horizontalPadding: padding - 4 + + Material.elevation: control.down ? 8 : 2 + + transition: Transition { + NumberAnimation { + duration: control.delay * (control.pressed ? 1.0 - control.progress : 0.3 * control.progress) + } + } + + contentItem: Text { + text: control.text + font: control.font + color: !control.enabled ? control.Material.hintTextColor : control.Material.foreground + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + elide: Text.ElideRight + } + + // TODO: Add a proper ripple/ink effect for mouse/touch input and focus state + background: Rectangle { + implicitWidth: 64 + implicitHeight: control.Material.buttonHeight + + radius: 2 + color: !control.enabled ? control.Material.buttonDisabledColor : control.Material.buttonColor + + PaddedRectangle { + y: parent.height - 4 + width: parent.width + height: 4 + radius: 2 + topPadding: -2 + clip: true + color: control.checked && control.enabled ? control.Material.accentColor : control.Material.secondaryTextColor + + PaddedRectangle { + width: parent.width * control.progress + height: 4 + radius: 2 + topPadding: -2 + rightPadding: Math.max(-2, width - parent.width) + clip: true + color: control.Material.accentColor + } + } + + layer.enabled: control.enabled && control.Material.buttonColor.a > 0 + layer.effect: ElevationEffect { + elevation: control.Material.elevation + } + + Ripple { + clipRadius: 2 + width: parent.width + height: parent.height + pressed: control.pressed + anchor: control + active: control.down || control.visualFocus || control.hovered + color: control.Material.rippleColor + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/Dial.qml b/deployment_test/QtQuick/Controls.2/Material/Dial.qml new file mode 100644 index 0000000000000000000000000000000000000000..1f80a7fe78134eff7333253ff173406bfe082340 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/Dial.qml @@ -0,0 +1,85 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Material 2.12 +import QtQuick.Controls.Material.impl 2.12 + +T.Dial { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) || 100 // ### remove 100 in Qt 6 + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) || 100 // ### remove 100 in Qt 6 + + background: Rectangle { + implicitWidth: 100 + implicitHeight: 100 + + x: control.width / 2 - width / 2 + y: control.height / 2 - height / 2 + width: Math.max(64, Math.min(control.width, control.height)) + height: width + color: "transparent" + radius: width / 2 + + border.color: control.enabled ? control.Material.accentColor : control.Material.hintTextColor + } + + handle: SliderHandle { + x: control.background.x + control.background.width / 2 - control.handle.width / 2 + y: control.background.y + control.background.height / 2 - control.handle.height / 2 + transform: [ + Translate { + y: -control.background.height * 0.4 + control.handle.height / 2 + }, + Rotation { + angle: control.angle + origin.x: control.handle.width / 2 + origin.y: control.handle.height / 2 + } + ] + implicitWidth: 10 + implicitHeight: 10 + + value: control.value + handleHasFocus: control.visualFocus + handlePressed: control.pressed + handleHovered: control.hovered + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/Dialog.qml b/deployment_test/QtQuick/Controls.2/Material/Dialog.qml new file mode 100644 index 0000000000000000000000000000000000000000..364c0e570d582fc496564acc7d8f3b70e7485913 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/Dialog.qml @@ -0,0 +1,113 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Material 2.12 +import QtQuick.Controls.Material.impl 2.12 + +T.Dialog { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding, + implicitHeaderWidth, + implicitFooterWidth) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding + + (implicitHeaderHeight > 0 ? implicitHeaderHeight + spacing : 0) + + (implicitFooterHeight > 0 ? implicitFooterHeight + spacing : 0)) + + padding: 24 + topPadding: 20 + + Material.elevation: 24 + + enter: Transition { + // grow_fade_in + NumberAnimation { property: "scale"; from: 0.9; to: 1.0; easing.type: Easing.OutQuint; duration: 220 } + NumberAnimation { property: "opacity"; from: 0.0; to: 1.0; easing.type: Easing.OutCubic; duration: 150 } + } + + exit: Transition { + // shrink_fade_out + NumberAnimation { property: "scale"; from: 1.0; to: 0.9; easing.type: Easing.OutQuint; duration: 220 } + NumberAnimation { property: "opacity"; from: 1.0; to: 0.0; easing.type: Easing.OutCubic; duration: 150 } + } + + background: Rectangle { + radius: 2 + color: control.Material.dialogColor + + layer.enabled: control.Material.elevation > 0 + layer.effect: ElevationEffect { + elevation: control.Material.elevation + } + } + + header: Label { + text: control.title + visible: control.title + elide: Label.ElideRight + padding: 24 + bottomPadding: 0 + // TODO: QPlatformTheme::TitleBarFont + font.bold: true + font.pixelSize: 16 + background: PaddedRectangle { + radius: 2 + color: control.Material.dialogColor + bottomPadding: -2 + clip: true + } + } + + footer: DialogButtonBox { + visible: count > 0 + } + + T.Overlay.modal: Rectangle { + color: control.Material.backgroundDimColor + Behavior on opacity { NumberAnimation { duration: 150 } } + } + + T.Overlay.modeless: Rectangle { + color: control.Material.backgroundDimColor + Behavior on opacity { NumberAnimation { duration: 150 } } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/DialogButtonBox.qml b/deployment_test/QtQuick/Controls.2/Material/DialogButtonBox.qml new file mode 100644 index 0000000000000000000000000000000000000000..c53b821034646cd3bbc2dcf8e6110dbe303461ed --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/DialogButtonBox.qml @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Material 2.12 +import QtQuick.Controls.Material.impl 2.12 + +T.DialogButtonBox { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + spacing: 8 + padding: 8 + verticalPadding: 2 + alignment: Qt.AlignRight + buttonLayout: T.DialogButtonBox.AndroidLayout + + Material.foreground: Material.accent + + delegate: Button { flat: true } + + contentItem: ListView { + model: control.contentModel + spacing: control.spacing + orientation: ListView.Horizontal + boundsBehavior: Flickable.StopAtBounds + snapMode: ListView.SnapToItem + } + + background: PaddedRectangle { + implicitHeight: control.Material.dialogButtonBoxHeight + radius: 2 + color: control.Material.dialogColor + // Rounded corners should be only at the top or at the bottom + topPadding: control.position === T.DialogButtonBox.Footer ? -2 : 0 + bottomPadding: control.position === T.DialogButtonBox.Header ? -2 : 0 + clip: true + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/Drawer.qml b/deployment_test/QtQuick/Controls.2/Material/Drawer.qml new file mode 100644 index 0000000000000000000000000000000000000000..3d64cdef47a41826160723a59d0da405ec5023cc --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/Drawer.qml @@ -0,0 +1,91 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Material 2.12 +import QtQuick.Controls.Material.impl 2.12 + +T.Drawer { + id: control + + parent: T.Overlay.overlay + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + topPadding: !dim && edge === Qt.BottomEdge && Material.elevation === 0 + leftPadding: !dim && edge === Qt.RightEdge && Material.elevation === 0 + rightPadding: !dim && edge === Qt.LeftEdge && Material.elevation === 0 + bottomPadding: !dim && edge === Qt.TopEdge && Material.elevation === 0 + + enter: Transition { SmoothedAnimation { velocity: 5 } } + exit: Transition { SmoothedAnimation { velocity: 5 } } + + Material.elevation: !interactive && !dim ? 0 : 16 + + background: Rectangle { + color: control.Material.dialogColor + + Rectangle { + readonly property bool horizontal: control.edge === Qt.LeftEdge || control.edge === Qt.RightEdge + width: horizontal ? 1 : parent.width + height: horizontal ? parent.height : 1 + color: control.Material.dividerColor + x: control.edge === Qt.LeftEdge ? parent.width - 1 : 0 + y: control.edge === Qt.TopEdge ? parent.height - 1 : 0 + visible: !control.dim && control.Material.elevation === 0 + } + + layer.enabled: control.position > 0 + layer.effect: ElevationEffect { + elevation: control.Material.elevation + fullHeight: true + } + } + + T.Overlay.modal: Rectangle { + color: control.Material.backgroundDimColor + Behavior on opacity { NumberAnimation { duration: 150 } } + } + + T.Overlay.modeless: Rectangle { + color: control.Material.backgroundDimColor + Behavior on opacity { NumberAnimation { duration: 150 } } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/ElevationEffect.qml b/deployment_test/QtQuick/Controls.2/Material/ElevationEffect.qml new file mode 100644 index 0000000000000000000000000000000000000000..73a2a238f92f0e331f4904529617a2ebddc6462c --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/ElevationEffect.qml @@ -0,0 +1,279 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls.Material 2.12 +import QtQuick.Controls.Material.impl 2.12 + +/* + An effect for standard Material Design elevation shadows. Useful for using as \c layer.effect. + */ +Item { + id: effect + + /* + The source the effect is applied to. + */ + property var source + + /* + The elevation of the \l source Item. + */ + property int elevation: 0 + + /* + Set to \c true if the \l source Item is the same width as its parent and the shadow + should be full width instead of rounding around the corner of the Item. + + \sa fullHeight + */ + property bool fullWidth: false + + /* + Set to \c true if the \l source Item is the same height as its parent and the shadow + should be full height instead of rounding around the corner of the Item. + + \sa fullWidth + */ + property bool fullHeight: false + + /* + \internal + + The actual source Item the effect is applied to. + */ + readonly property Item sourceItem: source.sourceItem + + /* + * The following shadow values are taken from Angular Material + * + * The MIT License (MIT) + * + * Copyright (c) 2014-2016 Google, Inc. http://angularjs.org + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + /* + \internal + + The shadows to use for each possible elevation. There are three shadows that when combined + make up the elevation. + */ + readonly property var _shadows: [ + [{offset: 0, blur: 0, spread: 0}, + {offset: 0, blur: 0, spread: 0}, + {offset: 0, blur: 0, spread: 0}], + + [{offset: 1, blur: 3, spread: 0}, + {offset: 1, blur: 1, spread: 0}, + {offset: 2, blur: 1, spread: -1}], + + [{offset: 1, blur: 5, spread: 0}, + {offset: 2, blur: 2, spread: 0}, + {offset: 3, blur: 1, spread: -2}], + + [{offset: 1, blur: 8, spread: 0}, + {offset: 3, blur: 4, spread: 0}, + {offset: 3, blur: 3, spread: -2}], + + [{offset: 2, blur: 4, spread: -1}, + {offset: 4, blur: 5, spread: 0}, + {offset: 1, blur: 10, spread: 0}], + + [{offset: 3, blur: 5, spread: -1}, + {offset: 5, blur: 8, spread: 0}, + {offset: 1, blur: 14, spread: 0}], + + [{offset: 3, blur: 5, spread: -1}, + {offset: 6, blur: 10, spread: 0}, + {offset: 1, blur: 18, spread: 0}], + + [{offset: 4, blur: 5, spread: -2}, + {offset: 7, blur: 10, spread: 1}, + {offset: 2, blur: 16, spread: 1}], + + [{offset: 5, blur: 5, spread: -3}, + {offset: 8, blur: 10, spread: 1}, + {offset: 3, blur: 14, spread: 2}], + + [{offset: 5, blur: 6, spread: -3}, + {offset: 9, blur: 12, spread: 1}, + {offset: 3, blur: 16, spread: 2}], + + [{offset: 6, blur: 6, spread: -3}, + {offset: 10, blur: 14, spread: 1}, + {offset: 4, blur: 18, spread: 3}], + + [{offset: 6, blur: 7, spread: -4}, + {offset: 11, blur: 15, spread: 1}, + {offset: 4, blur: 20, spread: 3}], + + [{offset: 7, blur: 8, spread: -4}, + {offset: 12, blur: 17, spread: 2}, + {offset: 5, blur: 22, spread: 4}], + + [{offset: 7, blur: 8, spread: -4}, + {offset: 13, blur: 19, spread: 2}, + {offset: 5, blur: 24, spread: 4}], + + [{offset: 7, blur: 9, spread: -4}, + {offset: 14, blur: 21, spread: 2}, + {offset: 5, blur: 26, spread: 4}], + + [{offset: 8, blur: 9, spread: -5}, + {offset: 15, blur: 22, spread: 2}, + {offset: 6, blur: 28, spread: 5}], + + [{offset: 8, blur: 10, spread: -5}, + {offset: 16, blur: 24, spread: 2}, + {offset: 6, blur: 30, spread: 5}], + + [{offset: 8, blur: 11, spread: -5}, + {offset: 17, blur: 26, spread: 2}, + {offset: 6, blur: 32, spread: 5}], + + [{offset: 9, blur: 11, spread: -5}, + {offset: 18, blur: 28, spread: 2}, + {offset: 7, blur: 34, spread: 6}], + + [{offset: 9, blur: 12, spread: -6}, + {offset: 19, blur: 29, spread: 2}, + {offset: 7, blur: 36, spread: 6}], + + [{offset: 10, blur: 13, spread: -6}, + {offset: 20, blur: 31, spread: 3}, + {offset: 8, blur: 38, spread: 7}], + + [{offset: 10, blur: 13, spread: -6}, + {offset: 21, blur: 33, spread: 3}, + {offset: 8, blur: 40, spread: 7}], + + [{offset: 10, blur: 14, spread: -6}, + {offset: 22, blur: 35, spread: 3}, + {offset: 8, blur: 42, spread: 7}], + + [{offset: 11, blur: 14, spread: -7}, + {offset: 23, blur: 36, spread: 3}, + {offset: 9, blur: 44, spread: 8}], + + [{offset: 11, blur: 15, spread: -7}, + {offset: 24, blur: 38, spread: 3}, + {offset: 9, blur: 46, spread: 8}] + ] + + /* + \internal + + The current shadow based on the elevation. + */ + readonly property var _shadow: _shadows[Math.max(0, Math.min(elevation, _shadows.length - 1))] + + // Nest the shadows and source view in two items rendered as a layer + // so the shadow is not clipped by the bounds of the source view + Item { + property int margin: -100 + + x: margin + y: margin + width: parent.width - 2 * margin + height: parent.height - 2 * margin + + // By rendering as a layer, the shadow will never show through the source item, + // even when the source item's opacity is less than 1 + layer.enabled: true + + // The box shadows automatically pick up the size of the source Item and not + // the size of the parent, so we don't need to worry about the extra padding + // in the parent Item + BoxShadow { + offsetY: effect._shadow[0].offset + blurRadius: effect._shadow[0].blur + spreadRadius: effect._shadow[0].spread + color: Qt.rgba(0,0,0, 0.2) + + fullWidth: effect.fullWidth + fullHeight: effect.fullHeight + source: effect.sourceItem + } + + BoxShadow { + offsetY: effect._shadow[1].offset + blurRadius: effect._shadow[1].blur + spreadRadius: effect._shadow[1].spread + color: Qt.rgba(0,0,0, 0.14) + + fullWidth: effect.fullWidth + fullHeight: effect.fullHeight + source: effect.sourceItem + } + + BoxShadow { + offsetY: effect._shadow[2].offset + blurRadius: effect._shadow[2].blur + spreadRadius: effect._shadow[2].spread + color: Qt.rgba(0,0,0, 0.12) + + fullWidth: effect.fullWidth + fullHeight: effect.fullHeight + source: effect.sourceItem + } + + ShaderEffect { + property alias source: effect.source + + x: (parent.width - width)/2 + y: (parent.height - height)/2 + width: effect.sourceItem.width + height: effect.sourceItem.height + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/Frame.qml b/deployment_test/QtQuick/Controls.2/Material/Frame.qml new file mode 100644 index 0000000000000000000000000000000000000000..0001825ea40358b357a3a1cb65af09f2be9439af --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/Frame.qml @@ -0,0 +1,63 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Material 2.12 +import QtQuick.Controls.Material.impl 2.12 + +T.Frame { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + padding: 12 + verticalPadding: Material.frameVerticalPadding + + background: Rectangle { + radius: 2 + color: control.Material.elevation > 0 ? control.Material.backgroundColor : "transparent" + border.color: control.Material.frameColor + + layer.enabled: control.enabled && control.Material.elevation > 0 + layer.effect: ElevationEffect { + elevation: control.Material.elevation + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/GroupBox.qml b/deployment_test/QtQuick/Controls.2/Material/GroupBox.qml new file mode 100644 index 0000000000000000000000000000000000000000..e18a5949ec00db9fad73c4d5a70183c1ba9b72a9 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/GroupBox.qml @@ -0,0 +1,81 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Material 2.12 +import QtQuick.Controls.Material.impl 2.12 + +T.GroupBox { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding, + implicitLabelWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + spacing: 6 + padding: 12 + topPadding: Material.frameVerticalPadding + (implicitLabelWidth > 0 ? implicitLabelHeight + spacing : 0) + bottomPadding: Material.frameVerticalPadding + + label: Text { + x: control.leftPadding + width: control.availableWidth + + text: control.title + font: control.font + color: control.enabled ? control.Material.foreground : control.Material.hintTextColor + elide: Text.ElideRight + verticalAlignment: Text.AlignVCenter + } + + background: Rectangle { + y: control.topPadding - control.bottomPadding + width: parent.width + height: parent.height - control.topPadding + control.bottomPadding + + radius: 2 + color: control.Material.elevation > 0 ? control.Material.backgroundColor : "transparent" + border.color: control.Material.frameColor + + layer.enabled: control.enabled && control.Material.elevation > 0 + layer.effect: ElevationEffect { + elevation: control.Material.elevation + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/HorizontalHeaderView.qml b/deployment_test/QtQuick/Controls.2/Material/HorizontalHeaderView.qml new file mode 100644 index 0000000000000000000000000000000000000000..fd672f34a9285f09a74688eb2e5c69b5a833ddcd --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/HorizontalHeaderView.qml @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** Copyright (C) 2020 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.15 +import QtQuick.Controls 2.15 +import QtQuick.Templates 2.15 as T +import QtQuick.Controls.Material 2.15 +import QtQuick.Controls.Material.impl 2.15 + +T.HorizontalHeaderView { + id: control + + implicitWidth: syncView ? syncView.width : 0 + implicitHeight: contentHeight + + delegate: Rectangle { + // Qt6: add cellPadding (and font etc) as public API in headerview + readonly property real cellPadding: 8 + + implicitWidth: text.implicitWidth + (cellPadding * 2) + implicitHeight: Math.max(control.height, text.implicitHeight + (cellPadding * 2)) + color: control.Material.backgroundColor + + Text { + id: text + text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] + : model[control.textRole]) + : modelData + width: parent.width + height: parent.height + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + color: enabled ? control.Material.foreground : control.Material.hintTextColor + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/ItemDelegate.qml b/deployment_test/QtQuick/Controls.2/Material/ItemDelegate.qml new file mode 100644 index 0000000000000000000000000000000000000000..2078ce6cb5ed5d3c85ffde66185750b319555cd3 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/ItemDelegate.qml @@ -0,0 +1,89 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Material 2.12 +import QtQuick.Controls.Material.impl 2.12 + +T.ItemDelegate { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + padding: 16 + verticalPadding: 8 + spacing: 16 + + icon.width: 24 + icon.height: 24 + icon.color: enabled ? Material.foreground : Material.hintTextColor + + contentItem: IconLabel { + spacing: control.spacing + mirrored: control.mirrored + display: control.display + alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft + + icon: control.icon + text: control.text + font: control.font + color: control.enabled ? control.Material.foreground : control.Material.hintTextColor + } + + background: Rectangle { + implicitHeight: control.Material.delegateHeight + + color: control.highlighted ? control.Material.listHighlightColor : "transparent" + + Ripple { + width: parent.width + height: parent.height + + clip: visible + pressed: control.pressed + anchor: control + active: control.down || control.visualFocus || control.hovered + color: control.Material.rippleColor + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/Label.qml b/deployment_test/QtQuick/Controls.2/Material/Label.qml new file mode 100644 index 0000000000000000000000000000000000000000..ad923a24d56130e2e451a965aeffa20d93dccadc --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/Label.qml @@ -0,0 +1,46 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Material 2.12 + +T.Label { + id: control + + color: enabled ? Material.foreground : Material.hintTextColor + linkColor: Material.accentColor +} diff --git a/deployment_test/QtQuick/Controls.2/Material/Menu.qml b/deployment_test/QtQuick/Controls.2/Material/Menu.qml new file mode 100644 index 0000000000000000000000000000000000000000..94bcc15ed664a691ab5e23992b3f3278a1021d7e --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/Menu.qml @@ -0,0 +1,108 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Material 2.12 +import QtQuick.Controls.Material.impl 2.12 +import QtQuick.Window 2.12 + +T.Menu { + id: control + + Material.elevation: 8 + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + margins: 0 + verticalPadding: 8 + + transformOrigin: !cascade ? Item.Top : (mirrored ? Item.TopRight : Item.TopLeft) + + delegate: MenuItem { } + + enter: Transition { + // grow_fade_in + NumberAnimation { property: "scale"; from: 0.9; to: 1.0; easing.type: Easing.OutQuint; duration: 220 } + NumberAnimation { property: "opacity"; from: 0.0; to: 1.0; easing.type: Easing.OutCubic; duration: 150 } + } + + exit: Transition { + // shrink_fade_out + NumberAnimation { property: "scale"; from: 1.0; to: 0.9; easing.type: Easing.OutQuint; duration: 220 } + NumberAnimation { property: "opacity"; from: 1.0; to: 0.0; easing.type: Easing.OutCubic; duration: 150 } + } + + contentItem: ListView { + implicitHeight: contentHeight + + model: control.contentModel + interactive: Window.window + ? contentHeight + control.topPadding + control.bottomPadding > Window.window.height + : false + clip: true + currentIndex: control.currentIndex + + ScrollIndicator.vertical: ScrollIndicator {} + } + + background: Rectangle { + implicitWidth: 200 + implicitHeight: control.Material.menuItemHeight + + radius: 3 + color: control.Material.dialogColor + + layer.enabled: control.Material.elevation > 0 + layer.effect: ElevationEffect { + elevation: control.Material.elevation + } + } + + T.Overlay.modal: Rectangle { + color: control.Material.backgroundDimColor + Behavior on opacity { NumberAnimation { duration: 150 } } + } + + T.Overlay.modeless: Rectangle { + color: control.Material.backgroundDimColor + Behavior on opacity { NumberAnimation { duration: 150 } } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/MenuBar.qml b/deployment_test/QtQuick/Controls.2/Material/MenuBar.qml new file mode 100644 index 0000000000000000000000000000000000000000..66252d6edb6d86d61598680ac8a694ca37ec6977 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/MenuBar.qml @@ -0,0 +1,65 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Material 2.12 +import QtQuick.Controls.Material.impl 2.12 + +T.MenuBar { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + delegate: MenuBarItem { } + + contentItem: Row { + spacing: control.spacing + Repeater { + model: control.contentModel + } + } + + background: Rectangle { + implicitHeight: 40 + color: control.Material.dialogColor + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/MenuBarItem.qml b/deployment_test/QtQuick/Controls.2/Material/MenuBarItem.qml new file mode 100644 index 0000000000000000000000000000000000000000..588d6fbb7a132abde8fce734a0f00a3104535b63 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/MenuBarItem.qml @@ -0,0 +1,89 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Material 2.12 +import QtQuick.Controls.Material.impl 2.12 + +T.MenuBarItem { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + padding: 16 + verticalPadding: 12 + spacing: 16 + + icon.width: 24 + icon.height: 24 + icon.color: enabled ? Material.foreground : Material.hintTextColor + + contentItem: IconLabel { + spacing: control.spacing + mirrored: control.mirrored + display: control.display + alignment: Qt.AlignLeft + + icon: control.icon + text: control.text + font: control.font + color: control.enabled ? control.Material.foreground : control.Material.hintTextColor + } + + background: Rectangle { + implicitWidth: 40 + implicitHeight: 40 + color: control.highlighted ? control.Material.listHighlightColor : "transparent" + + Ripple { + width: parent.width + height: parent.height + + clip: visible + pressed: control.pressed + anchor: control + active: control.down || control.highlighted + color: control.Material.rippleColor + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/MenuItem.qml b/deployment_test/QtQuick/Controls.2/Material/MenuItem.qml new file mode 100644 index 0000000000000000000000000000000000000000..a5d2f8a156312e0de04bcc09ffa425c11c68703a --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/MenuItem.qml @@ -0,0 +1,112 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Material 2.12 +import QtQuick.Controls.Material.impl 2.12 + +T.MenuItem { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + padding: 16 + verticalPadding: Material.menuItemVerticalPadding + spacing: 16 + + icon.width: 24 + icon.height: 24 + icon.color: enabled ? Material.foreground : Material.hintTextColor + + indicator: CheckIndicator { + x: control.text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + visible: control.checkable + control: control + checkState: control.checked ? Qt.Checked : Qt.Unchecked + } + + arrow: ColorImage { + x: control.mirrored ? control.padding : control.width - width - control.padding + y: control.topPadding + (control.availableHeight - height) / 2 + + visible: control.subMenu + mirror: control.mirrored + color: control.enabled ? control.Material.foreground : control.Material.hintTextColor + source: "qrc:/qt-project.org/imports/QtQuick/Controls.2/Material/images/arrow-indicator.png" + } + + contentItem: IconLabel { + readonly property real arrowPadding: control.subMenu && control.arrow ? control.arrow.width + control.spacing : 0 + readonly property real indicatorPadding: control.checkable && control.indicator ? control.indicator.width + control.spacing : 0 + leftPadding: !control.mirrored ? indicatorPadding : arrowPadding + rightPadding: control.mirrored ? indicatorPadding : arrowPadding + + spacing: control.spacing + mirrored: control.mirrored + display: control.display + alignment: Qt.AlignLeft + + icon: control.icon + text: control.text + font: control.font + color: control.enabled ? control.Material.foreground : control.Material.hintTextColor + } + + background: Rectangle { + implicitWidth: 200 + implicitHeight: control.Material.menuItemHeight + color: control.highlighted ? control.Material.listHighlightColor : "transparent" + + Ripple { + width: parent.width + height: parent.height + + clip: visible + pressed: control.pressed + anchor: control + active: control.down || control.highlighted + color: control.Material.rippleColor + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/MenuSeparator.qml b/deployment_test/QtQuick/Controls.2/Material/MenuSeparator.qml new file mode 100644 index 0000000000000000000000000000000000000000..6d80c049067b0e7c5cb57f1a7393aef0c3741ec1 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/MenuSeparator.qml @@ -0,0 +1,56 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Material 2.12 + +T.MenuSeparator { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + verticalPadding: 8 + + contentItem: Rectangle { + implicitWidth: 200 + implicitHeight: 1 + color: control.Material.dividerColor + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/Page.qml b/deployment_test/QtQuick/Controls.2/Material/Page.qml new file mode 100644 index 0000000000000000000000000000000000000000..4da0ecc6e08d9b405dee9fe97944a063ab0ec81e --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/Page.qml @@ -0,0 +1,56 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Material 2.12 + +T.Page { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding, + implicitHeaderWidth, + implicitFooterWidth) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding + + (implicitHeaderHeight > 0 ? implicitHeaderHeight + spacing : 0) + + (implicitFooterHeight > 0 ? implicitFooterHeight + spacing : 0)) + + background: Rectangle { + color: control.Material.backgroundColor + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/PageIndicator.qml b/deployment_test/QtQuick/Controls.2/Material/PageIndicator.qml new file mode 100644 index 0000000000000000000000000000000000000000..5e6ca2452064c6c91b6eaa1d54652fe3767f5e4f --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/PageIndicator.qml @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Material 2.12 + +T.PageIndicator { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + padding: 6 + spacing: 6 + + delegate: Rectangle { + implicitWidth: 8 + implicitHeight: 8 + + radius: width / 2 + color: control.enabled ? control.Material.foreground : control.Material.hintTextColor + + opacity: index === currentIndex ? 0.95 : pressed ? 0.7 : 0.45 + Behavior on opacity { OpacityAnimator { duration: 100 } } + } + + contentItem: Row { + spacing: control.spacing + + Repeater { + model: control.count + delegate: control.delegate + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/Pane.qml b/deployment_test/QtQuick/Controls.2/Material/Pane.qml new file mode 100644 index 0000000000000000000000000000000000000000..988e225aaed20d3b1b30939ce07ca7e23a1b04db --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/Pane.qml @@ -0,0 +1,61 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Material 2.12 +import QtQuick.Controls.Material.impl 2.12 + +T.Pane { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + padding: 12 + + background: Rectangle { + color: control.Material.backgroundColor + radius: control.Material.elevation > 0 ? 2 : 0 + + layer.enabled: control.enabled && control.Material.elevation > 0 + layer.effect: ElevationEffect { + elevation: control.Material.elevation + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/Popup.qml b/deployment_test/QtQuick/Controls.2/Material/Popup.qml new file mode 100644 index 0000000000000000000000000000000000000000..1b576385c047f3b41cd327e373d0bef4c2a261af --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/Popup.qml @@ -0,0 +1,85 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Material 2.12 +import QtQuick.Controls.Material.impl 2.12 + +T.Popup { + id: control + + Material.elevation: 24 + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + padding: 12 + + enter: Transition { + // grow_fade_in + NumberAnimation { property: "scale"; from: 0.9; to: 1.0; easing.type: Easing.OutQuint; duration: 220 } + NumberAnimation { property: "opacity"; from: 0.0; to: 1.0; easing.type: Easing.OutCubic; duration: 150 } + } + + exit: Transition { + // shrink_fade_out + NumberAnimation { property: "scale"; from: 1.0; to: 0.9; easing.type: Easing.OutQuint; duration: 220 } + NumberAnimation { property: "opacity"; from: 1.0; to: 0.0; easing.type: Easing.OutCubic; duration: 150 } + } + + background: Rectangle { + radius: 2 + color: control.Material.dialogColor + + layer.enabled: control.Material.elevation > 0 + layer.effect: ElevationEffect { + elevation: control.Material.elevation + } + } + + T.Overlay.modal: Rectangle { + color: control.Material.backgroundDimColor + Behavior on opacity { NumberAnimation { duration: 150 } } + } + + T.Overlay.modeless: Rectangle { + color: control.Material.backgroundDimColor + Behavior on opacity { NumberAnimation { duration: 150 } } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/ProgressBar.qml b/deployment_test/QtQuick/Controls.2/Material/ProgressBar.qml new file mode 100644 index 0000000000000000000000000000000000000000..2848f0371ffa98b45e243c9afab61f1b5dddee33 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/ProgressBar.qml @@ -0,0 +1,67 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Material 2.12 +import QtQuick.Controls.Material.impl 2.12 + +T.ProgressBar { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + contentItem: ProgressBarImpl { + implicitHeight: 4 + + scale: control.mirrored ? -1 : 1 + color: control.Material.accentColor + progress: control.position + indeterminate: control.visible && control.indeterminate + } + + background: Rectangle { + implicitWidth: 200 + implicitHeight: 4 + y: (control.height - height) / 2 + height: 4 + + color: Qt.rgba(control.Material.accentColor.r, control.Material.accentColor.g, control.Material.accentColor.b, 0.25) + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/RadioButton.qml b/deployment_test/QtQuick/Controls.2/Material/RadioButton.qml new file mode 100644 index 0000000000000000000000000000000000000000..dadcc84f3203b6ddfe3f176fb96060a0d3c8e98f --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/RadioButton.qml @@ -0,0 +1,83 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Material 2.12 +import QtQuick.Controls.Material.impl 2.12 + +T.RadioButton { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + spacing: 8 + padding: 8 + verticalPadding: padding + 6 + + indicator: RadioIndicator { + x: control.text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + control: control + + Ripple { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + width: 28; height: 28 + + z: -1 + anchor: control + pressed: control.pressed + active: control.down || control.visualFocus || control.hovered + color: control.checked ? control.Material.highlightedRippleColor : control.Material.rippleColor + } + } + + contentItem: Text { + leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 + + text: control.text + font: control.font + color: control.enabled ? control.Material.foreground : control.Material.hintTextColor + elide: Text.ElideRight + verticalAlignment: Text.AlignVCenter + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/RadioDelegate.qml b/deployment_test/QtQuick/Controls.2/Material/RadioDelegate.qml new file mode 100644 index 0000000000000000000000000000000000000000..c977d332095680277dcefe0b07d9ac53b340a1bb --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/RadioDelegate.qml @@ -0,0 +1,98 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Material 2.12 +import QtQuick.Controls.Material.impl 2.12 + +T.RadioDelegate { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + padding: 16 + verticalPadding: 8 + spacing: 16 + + icon.width: 24 + icon.height: 24 + icon.color: enabled ? Material.foreground : Material.hintTextColor + + indicator: RadioIndicator { + x: control.text ? (control.mirrored ? control.leftPadding : control.width - width - control.rightPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + control: control + } + + contentItem: IconLabel { + leftPadding: !control.mirrored ? 0 : control.indicator.width + control.spacing + rightPadding: control.mirrored ? 0 : control.indicator.width + control.spacing + + spacing: control.spacing + mirrored: control.mirrored + display: control.display + alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft + + icon: control.icon + text: control.text + font: control.font + color: control.enabled ? control.Material.foreground : control.Material.hintTextColor + } + + background: Rectangle { + implicitHeight: control.Material.delegateHeight + + color: control.highlighted ? control.Material.listHighlightColor : "transparent" + + Ripple { + width: parent.width + height: parent.height + + clip: visible + pressed: control.pressed + anchor: control + active: control.down || control.visualFocus || control.hovered + color: control.Material.rippleColor + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/RadioIndicator.qml b/deployment_test/QtQuick/Controls.2/Material/RadioIndicator.qml new file mode 100644 index 0000000000000000000000000000000000000000..e2c551848dc916919bcb3b00cadb53155cc72ba6 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/RadioIndicator.qml @@ -0,0 +1,62 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls.Material 2.12 +import QtQuick.Controls.Material.impl 2.12 + +Rectangle { + id: indicator + implicitWidth: 20 + implicitHeight: 20 + radius: width / 2 + border.width: 2 + border.color: !control.enabled ? control.Material.hintTextColor + : control.checked || control.down ? control.Material.accentColor : control.Material.secondaryTextColor + color: "transparent" + + property Item control + + Rectangle { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + width: 10 + height: 10 + radius: width / 2 + color: parent.border.color + visible: indicator.control.checked || indicator.control.down + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/RangeSlider.qml b/deployment_test/QtQuick/Controls.2/Material/RangeSlider.qml new file mode 100644 index 0000000000000000000000000000000000000000..f05601a7e027254b5318c5788b6754eead27aa6c --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/RangeSlider.qml @@ -0,0 +1,92 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Material 2.12 +import QtQuick.Controls.Material.impl 2.12 + +T.RangeSlider { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + first.implicitHandleWidth + leftPadding + rightPadding, + second.implicitHandleWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + first.implicitHandleHeight + topPadding + bottomPadding, + second.implicitHandleHeight + topPadding + bottomPadding) + + padding: 6 + + first.handle: SliderHandle { + x: control.leftPadding + (control.horizontal ? control.first.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) + y: control.topPadding + (control.horizontal ? (control.availableHeight - height) / 2 : control.first.visualPosition * (control.availableHeight - height)) + value: first.value + handleHasFocus: activeFocus + handlePressed: first.pressed + handleHovered: first.hovered + } + + second.handle: SliderHandle { + x: control.leftPadding + (control.horizontal ? control.second.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) + y: control.topPadding + (control.horizontal ? (control.availableHeight - height) / 2 : control.second.visualPosition * (control.availableHeight - height)) + value: second.value + handleHasFocus: activeFocus + handlePressed: second.pressed + handleHovered: second.hovered + } + + background: Rectangle { + x: control.leftPadding + (control.horizontal ? 0 : (control.availableWidth - width) / 2) + y: control.topPadding + (control.horizontal ? (control.availableHeight - height) / 2 : 0) + implicitWidth: control.horizontal ? 200 : 48 + implicitHeight: control.horizontal ? 48 : 200 + width: control.horizontal ? control.availableWidth : 4 + height: control.horizontal ? 4 : control.availableHeight + scale: control.horizontal && control.mirrored ? -1 : 1 + color: control.enabled ? Color.transparent(control.Material.accentColor, 0.33) : control.Material.sliderDisabledColor + + Rectangle { + x: control.horizontal ? control.first.position * parent.width : 0 + y: control.horizontal ? 0 : control.second.visualPosition * parent.height + width: control.horizontal ? control.second.position * parent.width - control.first.position * parent.width : 4 + height: control.horizontal ? 4 : control.second.position * parent.height - control.first.position * parent.height + + color: control.enabled ? control.Material.accentColor : control.Material.sliderDisabledColor + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/RectangularGlow.qml b/deployment_test/QtQuick/Controls.2/Material/RectangularGlow.qml new file mode 100644 index 0000000000000000000000000000000000000000..c01e536de50045d60a641e0fbcd1e88eac39baed --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/RectangularGlow.qml @@ -0,0 +1,240 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 + +/* + A cross-graphics API implementation of QtGraphicalEffects' RectangularGlow. + */ +Item { + id: rootItem + + /* + This property defines how many pixels outside the item area are reached + by the glow. + + The value ranges from 0.0 (no glow) to inf (infinite glow). By default, + the property is set to \c 0.0. + + \table + \header + \li Output examples with different glowRadius values + \li + \li + \row + \li \image RectangularGlow_glowRadius1.png + \li \image RectangularGlow_glowRadius2.png + \li \image RectangularGlow_glowRadius3.png + \row + \li \b { glowRadius: 10 } + \li \b { glowRadius: 20 } + \li \b { glowRadius: 40 } + \row + \li \l spread: 0 + \li \l spread: 0 + \li \l spread: 0 + \row + \li \l color: #ffffff + \li \l color: #ffffff + \li \l color: #ffffff + \row + \li \l cornerRadius: 25 + \li \l cornerRadius: 25 + \li \l cornerRadius: 25 + \endtable + + */ + property real glowRadius: 0.0 + + /* + This property defines how large part of the glow color is strenghtened + near the source edges. + + The value ranges from 0.0 (no strenght increase) to 1.0 (maximum + strenght increase). By default, the property is set to \c 0.0. + + \table + \header + \li Output examples with different spread values + \li + \li + \row + \li \image RectangularGlow_spread1.png + \li \image RectangularGlow_spread2.png + \li \image RectangularGlow_spread3.png + \row + \li \b { spread: 0.0 } + \li \b { spread: 0.5 } + \li \b { spread: 1.0 } + \row + \li \l glowRadius: 20 + \li \l glowRadius: 20 + \li \l glowRadius: 20 + \row + \li \l color: #ffffff + \li \l color: #ffffff + \li \l color: #ffffff + \row + \li \l cornerRadius: 25 + \li \l cornerRadius: 25 + \li \l cornerRadius: 25 + \endtable + */ + property real spread: 0.0 + + /* + This property defines the RGBA color value which is used for the glow. + + By default, the property is set to \c "white". + + \table + \header + \li Output examples with different color values + \li + \li + \row + \li \image RectangularGlow_color1.png + \li \image RectangularGlow_color2.png + \li \image RectangularGlow_color3.png + \row + \li \b { color: #ffffff } + \li \b { color: #55ff55 } + \li \b { color: #5555ff } + \row + \li \l glowRadius: 20 + \li \l glowRadius: 20 + \li \l glowRadius: 20 + \row + \li \l spread: 0 + \li \l spread: 0 + \li \l spread: 0 + \row + \li \l cornerRadius: 25 + \li \l cornerRadius: 25 + \li \l cornerRadius: 25 + \endtable + */ + property color color: "white" + + /* + This property defines the corner radius that is used to draw a glow with + rounded corners. + + The value ranges from 0.0 to half of the effective width or height of + the glow, whichever is smaller. This can be calculated with: \c{ + min(width, height) / 2.0 + glowRadius} + + By default, the property is bound to glowRadius property. The glow + behaves as if the rectangle was blurred when adjusting the glowRadius + property. + + \table + \header + \li Output examples with different cornerRadius values + \li + \li + \row + \li \image RectangularGlow_cornerRadius1.png + \li \image RectangularGlow_cornerRadius2.png + \li \image RectangularGlow_cornerRadius3.png + \row + \li \b { cornerRadius: 0 } + \li \b { cornerRadius: 25 } + \li \b { cornerRadius: 50 } + \row + \li \l glowRadius: 20 + \li \l glowRadius: 20 + \li \l glowRadius: 20 + \row + \li \l spread: 0 + \li \l spread: 0 + \li \l spread: 0 + \row + \li \l color: #ffffff + \li \l color: #ffffff + \li \l color: #ffffff + \endtable + */ + property real cornerRadius: glowRadius + + /* + This property allows the effect output pixels to be cached in order to + improve the rendering performance. + + Every time the source or effect properties are changed, the pixels in + the cache must be updated. Memory consumption is increased, because an + extra buffer of memory is required for storing the effect output. + + It is recommended to disable the cache when the source or the effect + properties are animated. + + By default, the property is set to \c false. + */ + property bool cached: false + + ShaderEffectSource { + id: cacheItem + anchors.fill: shaderItem + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + ShaderEffect { + id: shaderItem + + x: (parent.width - width) / 2.0 + y: (parent.height - height) / 2.0 + width: parent.width + rootItem.glowRadius * 2 + cornerRadius * 2 + height: parent.height + rootItem.glowRadius * 2 + cornerRadius * 2 + + function clampedCornerRadius() { + var maxCornerRadius = Math.min(rootItem.width, rootItem.height) / 2 + rootItem.glowRadius; + return Math.max(0, Math.min(rootItem.cornerRadius, maxCornerRadius)) + } + + property color color: rootItem.color + property real inverseSpread: 1.0 - rootItem.spread + property real relativeSizeX: ((inverseSpread * inverseSpread) * rootItem.glowRadius + cornerRadius * 2.0) / width + property real relativeSizeY: relativeSizeX * (width / height) + property real spread: rootItem.spread / 2.0 + property real cornerRadius: clampedCornerRadius() + + fragmentShader: "qrc:/qt-project.org/imports/QtQuick/Controls.2/Material/shaders/RectangularGlow.frag" + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/RoundButton.qml b/deployment_test/QtQuick/Controls.2/Material/RoundButton.qml new file mode 100644 index 0000000000000000000000000000000000000000..13d0f9dbe4e0467d091ae4f51eb678b172131e95 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/RoundButton.qml @@ -0,0 +1,115 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Material 2.12 +import QtQuick.Controls.Material.impl 2.12 + +T.RoundButton { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + topInset: 6 + leftInset: 6 + rightInset: 6 + bottomInset: 6 + padding: 12 + spacing: 6 + + icon.width: 24 + icon.height: 24 + icon.color: !enabled ? Material.hintTextColor : + flat && highlighted ? Material.accentColor : + highlighted ? Material.primaryHighlightedTextColor : Material.foreground + + Material.elevation: flat ? control.down || control.hovered ? 2 : 0 + : control.down ? 12 : 6 + Material.background: flat ? "transparent" : undefined + + contentItem: IconLabel { + spacing: control.spacing + mirrored: control.mirrored + display: control.display + + icon: control.icon + text: control.text + font: control.font + color: !control.enabled ? control.Material.hintTextColor : + control.flat && control.highlighted ? control.Material.accentColor : + control.highlighted ? control.Material.primaryHighlightedTextColor : control.Material.foreground + } + + // TODO: Add a proper ripple/ink effect for mouse/touch input and focus state + background: Rectangle { + implicitWidth: control.Material.buttonHeight + implicitHeight: control.Material.buttonHeight + + radius: control.radius + color: !control.enabled ? control.Material.buttonDisabledColor + : control.checked || control.highlighted ? control.Material.highlightedButtonColor : control.Material.buttonColor + + Rectangle { + width: parent.width + height: parent.height + radius: control.radius + visible: control.hovered || control.visualFocus + color: control.Material.rippleColor + } + + Rectangle { + width: parent.width + height: parent.height + radius: control.radius + visible: control.down + color: control.Material.rippleColor + } + + // The layer is disabled when the button color is transparent so that you can do + // Material.background: "transparent" and get a proper flat button without needing + // to set Material.elevation as well + layer.enabled: control.enabled && control.Material.buttonColor.a > 0 + layer.effect: ElevationEffect { + elevation: control.Material.elevation + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/ScrollBar.qml b/deployment_test/QtQuick/Controls.2/Material/ScrollBar.qml new file mode 100644 index 0000000000000000000000000000000000000000..fda643462e3004b32101d21abe783e2330ebd622 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/ScrollBar.qml @@ -0,0 +1,89 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Material 2.12 + +T.ScrollBar { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + padding: control.interactive ? 1 : 2 + visible: control.policy !== T.ScrollBar.AlwaysOff + minimumSize: orientation == Qt.Horizontal ? height / width : width / height + + contentItem: Rectangle { + implicitWidth: control.interactive ? 13 : 4 + implicitHeight: control.interactive ? 13 : 4 + + color: control.pressed ? control.Material.scrollBarPressedColor : + control.interactive && control.hovered ? control.Material.scrollBarHoveredColor : control.Material.scrollBarColor + opacity: 0.0 + } + + background: Rectangle { + implicitWidth: control.interactive ? 16 : 4 + implicitHeight: control.interactive ? 16 : 4 + color: "#0e000000" + opacity: 0.0 + visible: control.interactive + } + + states: State { + name: "active" + when: control.policy === T.ScrollBar.AlwaysOn || (control.active && control.size < 1.0) + } + + transitions: [ + Transition { + to: "active" + NumberAnimation { targets: [control.contentItem, control.background]; property: "opacity"; to: 1.0 } + }, + Transition { + from: "active" + SequentialAnimation { + PropertyAction{ targets: [control.contentItem, control.background]; property: "opacity"; value: 1.0 } + PauseAnimation { duration: 2450 } + NumberAnimation { targets: [control.contentItem, control.background]; property: "opacity"; to: 0.0 } + } + } + ] +} diff --git a/deployment_test/QtQuick/Controls.2/Material/ScrollIndicator.qml b/deployment_test/QtQuick/Controls.2/Material/ScrollIndicator.qml new file mode 100644 index 0000000000000000000000000000000000000000..19f23ad2d4409c098e526b1d4a6872f364f6f738 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/ScrollIndicator.qml @@ -0,0 +1,75 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Material 2.12 + +T.ScrollIndicator { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + padding: 2 + + contentItem: Rectangle { + implicitWidth: 4 + implicitHeight: 4 + + color: control.Material.scrollBarColor + visible: control.size < 1.0 + opacity: 0.0 + + states: State { + name: "active" + when: control.active + PropertyChanges { target: control.contentItem; opacity: 0.75 } + } + + transitions: [ + Transition { + from: "active" + SequentialAnimation { + PauseAnimation { duration: 450 } + NumberAnimation { target: control.contentItem; duration: 200; property: "opacity"; to: 0.0 } + } + } + ] + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/Slider.qml b/deployment_test/QtQuick/Controls.2/Material/Slider.qml new file mode 100644 index 0000000000000000000000000000000000000000..ac7a0c420d8fb9dd2f0343e62973c5d0c96851ac --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/Slider.qml @@ -0,0 +1,81 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Material 2.12 +import QtQuick.Controls.Material.impl 2.12 + +T.Slider { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitHandleWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitHandleHeight + topPadding + bottomPadding) + + padding: 6 + + handle: SliderHandle { + x: control.leftPadding + (control.horizontal ? control.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) + y: control.topPadding + (control.horizontal ? (control.availableHeight - height) / 2 : control.visualPosition * (control.availableHeight - height)) + value: control.value + handleHasFocus: control.visualFocus + handlePressed: control.pressed + handleHovered: control.hovered + } + + background: Rectangle { + x: control.leftPadding + (control.horizontal ? 0 : (control.availableWidth - width) / 2) + y: control.topPadding + (control.horizontal ? (control.availableHeight - height) / 2 : 0) + implicitWidth: control.horizontal ? 200 : 48 + implicitHeight: control.horizontal ? 48 : 200 + width: control.horizontal ? control.availableWidth : 4 + height: control.horizontal ? 4 : control.availableHeight + scale: control.horizontal && control.mirrored ? -1 : 1 + color: control.enabled ? Color.transparent(control.Material.accentColor, 0.33) : control.Material.sliderDisabledColor + + Rectangle { + x: control.horizontal ? 0 : (parent.width - width) / 2 + y: control.horizontal ? (parent.height - height) / 2 : control.visualPosition * parent.height + width: control.horizontal ? control.position * parent.width : 4 + height: control.horizontal ? 4 : control.position * parent.height + + color: control.enabled ? control.Material.accentColor : control.Material.sliderDisabledColor + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/SliderHandle.qml b/deployment_test/QtQuick/Controls.2/Material/SliderHandle.qml new file mode 100644 index 0000000000000000000000000000000000000000..c9078bc8a982f8dde969f8b42c18e10cca6c6bed --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/SliderHandle.qml @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls.Material 2.12 +import QtQuick.Controls.Material.impl 2.12 + +Item { + id: root + implicitWidth: initialSize + implicitHeight: initialSize + + property real value: 0 + property bool handleHasFocus: false + property bool handlePressed: false + property bool handleHovered: false + readonly property int initialSize: 13 + readonly property var control: parent + + Rectangle { + id: handleRect + width: parent.width + height: parent.height + radius: width / 2 + scale: root.handlePressed ? 1.5 : 1 + color: control.enabled ? root.control.Material.accentColor : root.control.Material.sliderDisabledColor + + Behavior on scale { + NumberAnimation { + duration: 250 + } + } + } + + Ripple { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + width: 22; height: 22 + pressed: root.handlePressed + active: root.handlePressed || root.handleHasFocus || root.handleHovered + color: root.control.Material.highlightedRippleColor + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/SpinBox.qml b/deployment_test/QtQuick/Controls.2/Material/SpinBox.qml new file mode 100644 index 0000000000000000000000000000000000000000..23c86bc3d538be2fb6f387fbc3d0151e39273d00 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/SpinBox.qml @@ -0,0 +1,156 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Material 2.12 +import QtQuick.Controls.Material.impl 2.12 + +T.SpinBox { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentItem.implicitWidth + + up.implicitIndicatorWidth + + down.implicitIndicatorWidth) + implicitHeight: Math.max(implicitContentHeight + topPadding + bottomPadding, + implicitBackgroundHeight, + up.implicitIndicatorHeight, + down.implicitIndicatorHeight) + + spacing: 6 + topPadding: 8 + bottomPadding: 16 + leftPadding: (control.mirrored ? (up.indicator ? up.indicator.width : 0) : (down.indicator ? down.indicator.width : 0)) + rightPadding: (control.mirrored ? (down.indicator ? down.indicator.width : 0) : (up.indicator ? up.indicator.width : 0)) + + validator: IntValidator { + locale: control.locale.name + bottom: Math.min(control.from, control.to) + top: Math.max(control.from, control.to) + } + + contentItem: TextInput { + text: control.displayText + + font: control.font + color: enabled ? control.Material.foreground : control.Material.hintTextColor + selectionColor: control.Material.textSelectionColor + selectedTextColor: control.Material.foreground + horizontalAlignment: Qt.AlignHCenter + verticalAlignment: Qt.AlignVCenter + + cursorDelegate: CursorDelegate { } + + readOnly: !control.editable + validator: control.validator + inputMethodHints: control.inputMethodHints + } + + up.indicator: Item { + x: control.mirrored ? 0 : parent.width - width + implicitWidth: control.Material.touchTarget + implicitHeight: control.Material.touchTarget + height: parent.height + width: height + + Ripple { + clipRadius: 2 + x: control.spacing + y: control.spacing + width: parent.width - 2 * control.spacing + height: parent.height - 2 * control.spacing + pressed: control.up.pressed + active: control.up.pressed || control.up.hovered || control.visualFocus + color: control.Material.rippleColor + } + + Rectangle { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + width: Math.min(parent.width / 3, parent.height / 3) + height: 2 + color: enabled ? control.Material.foreground : control.Material.spinBoxDisabledIconColor + } + Rectangle { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + width: 2 + height: Math.min(parent.width / 3, parent.height / 3) + color: enabled ? control.Material.foreground : control.Material.spinBoxDisabledIconColor + } + } + + down.indicator: Item { + x: control.mirrored ? parent.width - width : 0 + implicitWidth: control.Material.touchTarget + implicitHeight: control.Material.touchTarget + height: parent.height + width: height + + Ripple { + clipRadius: 2 + x: control.spacing + y: control.spacing + width: parent.width - 2 * control.spacing + height: parent.height - 2 * control.spacing + pressed: control.down.pressed + active: control.down.pressed || control.down.hovered || control.visualFocus + color: control.Material.rippleColor + } + + Rectangle { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + width: parent.width / 3 + height: 2 + color: enabled ? control.Material.foreground : control.Material.spinBoxDisabledIconColor + } + } + + background: Item { + implicitWidth: 192 + implicitHeight: control.Material.touchTarget + + Rectangle { + x: parent.width / 2 - width / 2 + y: parent.y + parent.height - height - control.bottomPadding / 2 + width: control.availableWidth + height: control.activeFocus ? 2 : 1 + color: control.activeFocus ? control.Material.accentColor : control.Material.hintTextColor + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/SplitView.qml b/deployment_test/QtQuick/Controls.2/Material/SplitView.qml new file mode 100644 index 0000000000000000000000000000000000000000..5544e833e9f1d5d53d8d2392d6aa65e95f941dd2 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/SplitView.qml @@ -0,0 +1,74 @@ +/**************************************************************************** +** +** Copyright (C) 2018 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.13 +import QtQuick.Templates 2.13 as T +import QtQuick.Controls 2.13 +import QtQuick.Controls.impl 2.13 +import QtQuick.Controls.Material 2.13 + +T.SplitView { + id: control + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + handle: Rectangle { + implicitWidth: control.orientation === Qt.Horizontal ? 6 : control.width + implicitHeight: control.orientation === Qt.Horizontal ? control.height : 6 + color: T.SplitHandle.pressed ? control.Material.background + : Qt.lighter(control.Material.background, T.SplitHandle.hovered ? 1.2 : 1.1) + + Rectangle { + color: control.Material.secondaryTextColor + width: control.orientation === Qt.Horizontal ? thickness : length + height: control.orientation === Qt.Horizontal ? length : thickness + radius: thickness + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + + property int length: parent.T.SplitHandle.pressed ? 3 : 8 + readonly property int thickness: parent.T.SplitHandle.pressed ? 3 : 1 + + Behavior on length { + NumberAnimation { + duration: 100 + } + } + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/StackView.qml b/deployment_test/QtQuick/Controls.2/Material/StackView.qml new file mode 100644 index 0000000000000000000000000000000000000000..dd5d6ce657dd9b6ea8e50e82969110b61c187ad4 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/StackView.qml @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Material 2.12 + +T.StackView { + id: control + + popEnter: Transition { + // slide_in_left + NumberAnimation { property: "x"; from: (control.mirrored ? -0.5 : 0.5) * -control.width; to: 0; duration: 200; easing.type: Easing.OutCubic } + NumberAnimation { property: "opacity"; from: 0.0; to: 1.0; duration: 200; easing.type: Easing.OutCubic } + } + + popExit: Transition { + // slide_out_right + NumberAnimation { property: "x"; from: 0; to: (control.mirrored ? -0.5 : 0.5) * control.width; duration: 200; easing.type: Easing.OutCubic } + NumberAnimation { property: "opacity"; from: 1.0; to: 0.0; duration: 200; easing.type: Easing.OutCubic } + } + + pushEnter: Transition { + // slide_in_right + NumberAnimation { property: "x"; from: (control.mirrored ? -0.5 : 0.5) * control.width; to: 0; duration: 200; easing.type: Easing.OutCubic } + NumberAnimation { property: "opacity"; from: 0.0; to: 1.0; duration: 200; easing.type: Easing.OutCubic } + } + + pushExit: Transition { + // slide_out_left + NumberAnimation { property: "x"; from: 0; to: (control.mirrored ? -0.5 : 0.5) * -control.width; duration: 200; easing.type: Easing.OutCubic } + NumberAnimation { property: "opacity"; from: 1.0; to: 0.0; duration: 200; easing.type: Easing.OutCubic } + } + + replaceEnter: Transition { + // slide_in_right + NumberAnimation { property: "x"; from: (control.mirrored ? -0.5 : 0.5) * control.width; to: 0; duration: 200; easing.type: Easing.OutCubic } + NumberAnimation { property: "opacity"; from: 0.0; to: 1.0; duration: 200; easing.type: Easing.OutCubic } + } + + replaceExit: Transition { + // slide_out_left + NumberAnimation { property: "x"; from: 0; to: (control.mirrored ? -0.5 : 0.5) * -control.width; duration: 200; easing.type: Easing.OutCubic } + NumberAnimation { property: "opacity"; from: 1.0; to: 0.0; duration: 200; easing.type: Easing.OutCubic } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/SwipeDelegate.qml b/deployment_test/QtQuick/Controls.2/Material/SwipeDelegate.qml new file mode 100644 index 0000000000000000000000000000000000000000..d06799be020056eb4f16e4315e411ad6d84f29a6 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/SwipeDelegate.qml @@ -0,0 +1,99 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Material 2.12 +import QtQuick.Controls.Material.impl 2.12 + +T.SwipeDelegate { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + padding: 16 + verticalPadding: 8 + spacing: 16 + + icon.width: 24 + icon.height: 24 + icon.color: enabled ? Material.foreground : Material.hintTextColor + + swipe.transition: Transition { SmoothedAnimation { velocity: 3; easing.type: Easing.InOutCubic } } + + contentItem: IconLabel { + spacing: control.spacing + mirrored: control.mirrored + display: control.display + alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft + + icon: control.icon + text: control.text + font: control.font + color: control.enabled ? control.Material.foreground : control.Material.hintTextColor + } + + background: Rectangle { + implicitHeight: control.Material.delegateHeight + + color: control.Material.backgroundColor + + Rectangle { + width: parent.width + height: parent.height + visible: control.highlighted + color: control.Material.listHighlightColor + } + + Ripple { + width: parent.width + height: parent.height + + clip: visible + pressed: control.pressed + anchor: control + active: control.down || control.visualFocus || control.hovered + color: control.Material.rippleColor + enabled: control.swipe.position === 0 + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/SwipeView.qml b/deployment_test/QtQuick/Controls.2/Material/SwipeView.qml new file mode 100644 index 0000000000000000000000000000000000000000..a84f16c5b0a4a3f28c4398e7d168f44064733d38 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/SwipeView.qml @@ -0,0 +1,66 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Material 2.12 + +T.SwipeView { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + contentItem: ListView { + model: control.contentModel + interactive: control.interactive + currentIndex: control.currentIndex + focus: control.focus + + spacing: control.spacing + orientation: control.orientation + snapMode: ListView.SnapOneItem + boundsBehavior: Flickable.StopAtBounds + + highlightRangeMode: ListView.StrictlyEnforceRange + preferredHighlightBegin: 0 + preferredHighlightEnd: 0 + highlightMoveDuration: 250 + maximumFlickVelocity: 4 * (control.orientation === Qt.Horizontal ? width : height) + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/Switch.qml b/deployment_test/QtQuick/Controls.2/Material/Switch.qml new file mode 100644 index 0000000000000000000000000000000000000000..fd0db9256cf7f6c76ea12330381159b3abb67f48 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/Switch.qml @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls.Material 2.12 +import QtQuick.Controls.Material.impl 2.12 +import QtQuick.Templates 2.12 as T + +T.Switch { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + padding: 8 + spacing: 8 + + indicator: SwitchIndicator { + x: text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + control: control + + Ripple { + x: parent.handle.x + parent.handle.width / 2 - width / 2 + y: parent.handle.y + parent.handle.height / 2 - height / 2 + width: 28; height: 28 + pressed: control.pressed + active: control.down || control.visualFocus || control.hovered + color: control.checked ? control.Material.highlightedRippleColor : control.Material.rippleColor + } + } + + contentItem: Text { + leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 + + text: control.text + font: control.font + color: control.enabled ? control.Material.foreground : control.Material.hintTextColor + elide: Text.ElideRight + verticalAlignment: Text.AlignVCenter + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/SwitchDelegate.qml b/deployment_test/QtQuick/Controls.2/Material/SwitchDelegate.qml new file mode 100644 index 0000000000000000000000000000000000000000..834a3dfa8502b0da9c4c2a71755f4f7d0e9579d8 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/SwitchDelegate.qml @@ -0,0 +1,98 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Material 2.12 +import QtQuick.Controls.Material.impl 2.12 + +T.SwitchDelegate { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + padding: 16 + verticalPadding: Material.switchDelegateVerticalPadding + spacing: 16 + + icon.width: 24 + icon.height: 24 + icon.color: enabled ? Material.foreground : Material.hintTextColor + + indicator: SwitchIndicator { + x: control.text ? (control.mirrored ? control.leftPadding : control.width - width - control.rightPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + control: control + } + + contentItem: IconLabel { + leftPadding: !control.mirrored ? 0 : control.indicator.width + control.spacing + rightPadding: control.mirrored ? 0 : control.indicator.width + control.spacing + + spacing: control.spacing + mirrored: control.mirrored + display: control.display + alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft + + icon: control.icon + text: control.text + font: control.font + color: control.enabled ? control.Material.foreground : control.Material.hintTextColor + } + + background: Rectangle { + implicitHeight: control.Material.delegateHeight + + color: control.highlighted ? control.Material.listHighlightColor : "transparent" + + Ripple { + width: parent.width + height: parent.height + + clip: visible + pressed: control.pressed + anchor: control + active: control.down || control.visualFocus || control.hovered + color: control.Material.rippleColor + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/SwitchIndicator.qml b/deployment_test/QtQuick/Controls.2/Material/SwitchIndicator.qml new file mode 100644 index 0000000000000000000000000000000000000000..3034e771acc8ddb93195207c4596a02b72a633c8 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/SwitchIndicator.qml @@ -0,0 +1,81 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls.Material 2.12 +import QtQuick.Controls.Material.impl 2.12 + +Item { + id: indicator + implicitWidth: 38 + implicitHeight: 32 + + property Item control + property alias handle: handle + + Material.elevation: 1 + + Rectangle { + width: parent.width + height: 14 + radius: height / 2 + y: parent.height / 2 - height / 2 + color: indicator.control.enabled ? (indicator.control.checked ? indicator.control.Material.switchCheckedTrackColor : indicator.control.Material.switchUncheckedTrackColor) + : indicator.control.Material.switchDisabledTrackColor + } + + Rectangle { + id: handle + x: Math.max(0, Math.min(parent.width - width, indicator.control.visualPosition * parent.width - (width / 2))) + y: (parent.height - height) / 2 + width: 20 + height: 20 + radius: width / 2 + color: indicator.control.enabled ? (indicator.control.checked ? indicator.control.Material.switchCheckedHandleColor : indicator.control.Material.switchUncheckedHandleColor) + : indicator.control.Material.switchDisabledHandleColor + + Behavior on x { + enabled: !indicator.control.pressed + SmoothedAnimation { + duration: 300 + } + } + layer.enabled: indicator.Material.elevation > 0 + layer.effect: ElevationEffect { + elevation: indicator.Material.elevation + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/TabBar.qml b/deployment_test/QtQuick/Controls.2/Material/TabBar.qml new file mode 100644 index 0000000000000000000000000000000000000000..98c9132ae509b84a1a7f01bdee4012835a2376bc --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/TabBar.qml @@ -0,0 +1,89 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Material 2.12 +import QtQuick.Controls.Material.impl 2.12 + +T.TabBar { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + spacing: 1 + + contentItem: ListView { + model: control.contentModel + currentIndex: control.currentIndex + + spacing: control.spacing + orientation: ListView.Horizontal + boundsBehavior: Flickable.StopAtBounds + flickableDirection: Flickable.AutoFlickIfNeeded + snapMode: ListView.SnapToItem + + highlightMoveDuration: 250 + highlightResizeDuration: 0 + highlightFollowsCurrentItem: true + highlightRangeMode: ListView.ApplyRange + preferredHighlightBegin: 48 + preferredHighlightEnd: width - 48 + + highlight: Item { + z: 2 + Rectangle { + height: 2 + width: parent.width + y: control.position === T.TabBar.Footer ? 0 : parent.height - height + color: control.Material.accentColor + } + } + } + + background: Rectangle { + color: control.Material.backgroundColor + + layer.enabled: control.Material.elevation > 0 + layer.effect: ElevationEffect { + elevation: control.Material.elevation + fullWidth: true + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/TabButton.qml b/deployment_test/QtQuick/Controls.2/Material/TabButton.qml new file mode 100644 index 0000000000000000000000000000000000000000..5245652c23137190d34a57a003cf3dd2d141fc77 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/TabButton.qml @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Material 2.12 +import QtQuick.Controls.Material.impl 2.12 + +T.TabButton { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + padding: 12 + spacing: 6 + + icon.width: 24 + icon.height: 24 + icon.color: !enabled ? Material.hintTextColor : down || checked ? Material.accentColor : Material.foreground + + contentItem: IconLabel { + spacing: control.spacing + mirrored: control.mirrored + display: control.display + + icon: control.icon + text: control.text + font: control.font + color: !control.enabled ? control.Material.hintTextColor : control.down || control.checked ? control.Material.accentColor : control.Material.foreground + } + + background: Ripple { + implicitHeight: control.Material.touchTarget + + clip: true + pressed: control.pressed + anchor: control + active: control.down || control.visualFocus || control.hovered + color: control.Material.rippleColor + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/TextArea.qml b/deployment_test/QtQuick/Controls.2/Material/TextArea.qml new file mode 100644 index 0000000000000000000000000000000000000000..249b64017c765c81bdfb0e4174ccb8083e88cc00 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/TextArea.qml @@ -0,0 +1,84 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Material 2.12 +import QtQuick.Controls.Material.impl 2.12 + +T.TextArea { + id: control + + implicitWidth: Math.max(contentWidth + leftPadding + rightPadding, + implicitBackgroundWidth + leftInset + rightInset, + placeholder.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(contentHeight + topPadding + bottomPadding, + implicitBackgroundHeight + topInset + bottomInset, + placeholder.implicitHeight + 1 + topPadding + bottomPadding) + + topPadding: 8 + bottomPadding: 16 + + color: enabled ? Material.foreground : Material.hintTextColor + selectionColor: Material.accentColor + selectedTextColor: Material.primaryHighlightedTextColor + placeholderTextColor: Material.hintTextColor + cursorDelegate: CursorDelegate { } + + PlaceholderText { + id: placeholder + x: control.leftPadding + y: control.topPadding + width: control.width - (control.leftPadding + control.rightPadding) + height: control.height - (control.topPadding + control.bottomPadding) + text: control.placeholderText + font: control.font + color: control.placeholderTextColor + verticalAlignment: control.verticalAlignment + elide: Text.ElideRight + renderType: control.renderType + visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter) + } + + background: Rectangle { + y: parent.height - height - control.bottomPadding / 2 + implicitWidth: 120 + height: control.activeFocus ? 2 : 1 + color: control.activeFocus ? control.Material.accentColor : control.Material.hintTextColor + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/TextField.qml b/deployment_test/QtQuick/Controls.2/Material/TextField.qml new file mode 100644 index 0000000000000000000000000000000000000000..ed42b295d492186cd96bc3dd6c45f66b77e0395e --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/TextField.qml @@ -0,0 +1,86 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Material 2.12 +import QtQuick.Controls.Material.impl 2.12 + +T.TextField { + id: control + + implicitWidth: implicitBackgroundWidth + leftInset + rightInset + || Math.max(contentWidth, placeholder.implicitWidth) + leftPadding + rightPadding + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding, + placeholder.implicitHeight + topPadding + bottomPadding) + + topPadding: 8 + bottomPadding: 16 + + color: enabled ? Material.foreground : Material.hintTextColor + selectionColor: Material.accentColor + selectedTextColor: Material.primaryHighlightedTextColor + placeholderTextColor: Material.hintTextColor + verticalAlignment: TextInput.AlignVCenter + + cursorDelegate: CursorDelegate { } + + PlaceholderText { + id: placeholder + x: control.leftPadding + y: control.topPadding + width: control.width - (control.leftPadding + control.rightPadding) + height: control.height - (control.topPadding + control.bottomPadding) + text: control.placeholderText + font: control.font + color: control.placeholderTextColor + verticalAlignment: control.verticalAlignment + elide: Text.ElideRight + renderType: control.renderType + visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter) + } + + background: Rectangle { + y: control.height - height - control.bottomPadding + 8 + implicitWidth: 120 + height: control.activeFocus || control.hovered ? 2 : 1 + color: control.activeFocus ? control.Material.accentColor + : (control.hovered ? control.Material.primaryTextColor : control.Material.hintTextColor) + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/ToolBar.qml b/deployment_test/QtQuick/Controls.2/Material/ToolBar.qml new file mode 100644 index 0000000000000000000000000000000000000000..5b887598ebee6500ff5e6f42553c666cdaa8e26b --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/ToolBar.qml @@ -0,0 +1,66 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Material 2.12 +import QtQuick.Controls.Material.impl 2.12 + +T.ToolBar { + id: control + + Material.elevation: 4 + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + Material.foreground: Material.toolTextColor + + spacing: 16 + + background: Rectangle { + implicitHeight: 48 + color: control.Material.toolBarColor + + layer.enabled: control.Material.elevation > 0 + layer.effect: ElevationEffect { + elevation: control.Material.elevation + fullWidth: true + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/ToolButton.qml b/deployment_test/QtQuick/Controls.2/Material/ToolButton.qml new file mode 100644 index 0000000000000000000000000000000000000000..69c424414e0d88ed801a94a24e194bbea938deb6 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/ToolButton.qml @@ -0,0 +1,87 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Material 2.12 +import QtQuick.Controls.Material.impl 2.12 + +T.ToolButton { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + padding: 6 + spacing: 6 + + icon.width: 24 + icon.height: 24 + icon.color: !enabled ? Material.hintTextColor : checked || highlighted ? Material.accent : Material.foreground + + contentItem: IconLabel { + spacing: control.spacing + mirrored: control.mirrored + display: control.display + + icon: control.icon + text: control.text + font: control.font + color: !control.enabled ? control.Material.hintTextColor : + control.checked || control.highlighted ? control.Material.accent : control.Material.foreground + } + + background: Ripple { + implicitWidth: control.Material.touchTarget + implicitHeight: control.Material.touchTarget + + readonly property bool square: control.contentItem.width <= control.contentItem.height + + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + clip: !square + width: square ? parent.height / 2 : parent.width + height: square ? parent.height / 2 : parent.height + pressed: control.pressed + anchor: control + active: control.enabled && (control.down || control.visualFocus || control.hovered) + color: control.Material.rippleColor + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/ToolSeparator.qml b/deployment_test/QtQuick/Controls.2/Material/ToolSeparator.qml new file mode 100644 index 0000000000000000000000000000000000000000..9436765733c6cd08437de5667bbe9ff1291f193e --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/ToolSeparator.qml @@ -0,0 +1,57 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Material 2.12 + +T.ToolSeparator { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + horizontalPadding: vertical ? 12 : 5 + verticalPadding: vertical ? 5 : 12 + + contentItem: Rectangle { + implicitWidth: vertical ? 1 : 38 + implicitHeight: vertical ? 38 : 1 + color: control.Material.hintTextColor + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/ToolTip.qml b/deployment_test/QtQuick/Controls.2/Material/ToolTip.qml new file mode 100644 index 0000000000000000000000000000000000000000..83afe4b1f145ae6148fcd4d1f13dd876f5dafa58 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/ToolTip.qml @@ -0,0 +1,83 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Material 2.12 + +T.ToolTip { + id: control + + x: parent ? (parent.width - implicitWidth) / 2 : 0 + y: -implicitHeight - 24 + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + margins: 12 + padding: 8 + horizontalPadding: padding + 8 + + closePolicy: T.Popup.CloseOnEscape | T.Popup.CloseOnPressOutsideParent | T.Popup.CloseOnReleaseOutsideParent + + Material.theme: Material.Dark + + enter: Transition { + // toast_enter + NumberAnimation { property: "opacity"; from: 0.0; to: 1.0; easing.type: Easing.OutQuad; duration: 500 } + } + + exit: Transition { + // toast_exit + NumberAnimation { property: "opacity"; from: 1.0; to: 0.0; easing.type: Easing.InQuad; duration: 500 } + } + + contentItem: Text { + text: control.text + font: control.font + wrapMode: Text.Wrap + color: control.Material.foreground + } + + background: Rectangle { + implicitHeight: control.Material.tooltipHeight + color: control.Material.tooltipColor + opacity: 0.9 + radius: 2 + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/Tumbler.qml b/deployment_test/QtQuick/Controls.2/Material/Tumbler.qml new file mode 100644 index 0000000000000000000000000000000000000000..30d66c5828879304f749a5de079cd745613a637b --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/Tumbler.qml @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Material 2.12 + +T.Tumbler { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) || 60 // ### remove 60 in Qt 6 + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) || 200 // ### remove 200 in Qt 6 + + delegate: Text { + text: modelData + color: control.Material.foreground + font: control.font + opacity: (1.0 - Math.abs(Tumbler.displacement) / (control.visibleItemCount / 2)) * (control.enabled ? 1 : 0.6) + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + } + + contentItem: TumblerView { + implicitWidth: 60 + implicitHeight: 200 + model: control.model + delegate: control.delegate + path: Path { + startX: control.contentItem.width / 2 + startY: -control.contentItem.delegateHeight / 2 + PathLine { + x: control.contentItem.width / 2 + y: (control.visibleItemCount + 1) * control.contentItem.delegateHeight - control.contentItem.delegateHeight / 2 + } + } + + property real delegateHeight: control.availableHeight / control.visibleItemCount + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/VerticalHeaderView.qml b/deployment_test/QtQuick/Controls.2/Material/VerticalHeaderView.qml new file mode 100644 index 0000000000000000000000000000000000000000..5fc5aebeab5adb32fb99418a60b87f02f29ae033 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/VerticalHeaderView.qml @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** Copyright (C) 2020 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.15 +import QtQuick.Controls 2.15 +import QtQuick.Templates 2.15 as T +import QtQuick.Controls.Material 2.15 +import QtQuick.Controls.Material.impl 2.15 + +T.VerticalHeaderView { + id: control + + implicitWidth: contentWidth + implicitHeight: syncView ? syncView.height : 0 + + delegate: Rectangle { + // Qt6: add cellPadding (and font etc) as public API in headerview + readonly property real cellPadding: 8 + + implicitWidth: Math.max(control.width, text.implicitWidth + (cellPadding * 2)) + implicitHeight: text.implicitHeight + (cellPadding * 2) + color: control.Material.backgroundColor + + Text { + id: text + text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] + : model[control.textRole]) + : modelData + width: parent.width + height: parent.height + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + color: enabled ? control.Material.foreground : control.Material.hintTextColor + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/plugins.qmltypes b/deployment_test/QtQuick/Controls.2/Material/plugins.qmltypes new file mode 100644 index 0000000000000000000000000000000000000000..e290e0eab67261260fae48461ae1ac5e1bbb67fa --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/plugins.qmltypes @@ -0,0 +1,459 @@ +import QtQuick.tooling 1.2 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. +// +// This file was auto-generated by: +// 'qmlplugindump -nonrelocatable -dependencies dependencies.json QtQuick.Controls.Material 2.15' + +Module { + dependencies: ["QtQuick.Controls 2.0"] + Component { name: "QQuickAttachedObject"; prototype: "QObject" } + Component { + name: "QQuickItem" + defaultProperty: "data" + prototype: "QObject" + Enum { + name: "Flags" + values: { + "ItemClipsChildrenToShape": 1, + "ItemAcceptsInputMethod": 2, + "ItemIsFocusScope": 4, + "ItemHasContents": 8, + "ItemAcceptsDrops": 16 + } + } + Enum { + name: "TransformOrigin" + values: { + "TopLeft": 0, + "Top": 1, + "TopRight": 2, + "Left": 3, + "Center": 4, + "Right": 5, + "BottomLeft": 6, + "Bottom": 7, + "BottomRight": 8 + } + } + Property { name: "parent"; type: "QQuickItem"; isPointer: true } + Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "resources"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "children"; type: "QQuickItem"; isList: true; isReadonly: true } + Property { name: "x"; type: "double" } + Property { name: "y"; type: "double" } + Property { name: "z"; type: "double" } + Property { name: "width"; type: "double" } + Property { name: "height"; type: "double" } + Property { name: "opacity"; type: "double" } + Property { name: "enabled"; type: "bool" } + Property { name: "visible"; type: "bool" } + Property { name: "visibleChildren"; type: "QQuickItem"; isList: true; isReadonly: true } + Property { name: "states"; type: "QQuickState"; isList: true; isReadonly: true } + Property { name: "transitions"; type: "QQuickTransition"; isList: true; isReadonly: true } + Property { name: "state"; type: "string" } + Property { name: "childrenRect"; type: "QRectF"; isReadonly: true } + Property { name: "anchors"; type: "QQuickAnchors"; isReadonly: true; isPointer: true } + Property { name: "left"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "right"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "horizontalCenter"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "top"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "bottom"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "verticalCenter"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "baseline"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "baselineOffset"; type: "double" } + Property { name: "clip"; type: "bool" } + Property { name: "focus"; type: "bool" } + Property { name: "activeFocus"; type: "bool"; isReadonly: true } + Property { name: "activeFocusOnTab"; revision: 1; type: "bool" } + Property { name: "rotation"; type: "double" } + Property { name: "scale"; type: "double" } + Property { name: "transformOrigin"; type: "TransformOrigin" } + Property { name: "transformOriginPoint"; type: "QPointF"; isReadonly: true } + Property { name: "transform"; type: "QQuickTransform"; isList: true; isReadonly: true } + Property { name: "smooth"; type: "bool" } + Property { name: "antialiasing"; type: "bool" } + Property { name: "implicitWidth"; type: "double" } + Property { name: "implicitHeight"; type: "double" } + Property { name: "containmentMask"; revision: 11; type: "QObject"; isPointer: true } + Property { name: "layer"; type: "QQuickItemLayer"; isReadonly: true; isPointer: true } + Signal { + name: "childrenRectChanged" + Parameter { type: "QRectF" } + } + Signal { + name: "baselineOffsetChanged" + Parameter { type: "double" } + } + Signal { + name: "stateChanged" + Parameter { type: "string" } + } + Signal { + name: "focusChanged" + Parameter { type: "bool" } + } + Signal { + name: "activeFocusChanged" + Parameter { type: "bool" } + } + Signal { + name: "activeFocusOnTabChanged" + revision: 1 + Parameter { type: "bool" } + } + Signal { + name: "parentChanged" + Parameter { type: "QQuickItem"; isPointer: true } + } + Signal { + name: "transformOriginChanged" + Parameter { type: "TransformOrigin" } + } + Signal { + name: "smoothChanged" + Parameter { type: "bool" } + } + Signal { + name: "antialiasingChanged" + Parameter { type: "bool" } + } + Signal { + name: "clipChanged" + Parameter { type: "bool" } + } + Signal { + name: "windowChanged" + revision: 1 + Parameter { name: "window"; type: "QQuickWindow"; isPointer: true } + } + Signal { name: "containmentMaskChanged"; revision: 11 } + Method { name: "update" } + Method { + name: "grabToImage" + revision: 4 + type: "bool" + Parameter { name: "callback"; type: "QJSValue" } + Parameter { name: "targetSize"; type: "QSize" } + } + Method { + name: "grabToImage" + revision: 4 + type: "bool" + Parameter { name: "callback"; type: "QJSValue" } + } + Method { + name: "contains" + type: "bool" + Parameter { name: "point"; type: "QPointF" } + } + Method { + name: "mapFromItem" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "mapToItem" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "mapFromGlobal" + revision: 7 + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "mapToGlobal" + revision: 7 + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { name: "forceActiveFocus" } + Method { + name: "forceActiveFocus" + Parameter { name: "reason"; type: "Qt::FocusReason" } + } + Method { + name: "nextItemInFocusChain" + revision: 1 + type: "QQuickItem*" + Parameter { name: "forward"; type: "bool" } + } + Method { name: "nextItemInFocusChain"; revision: 1; type: "QQuickItem*" } + Method { + name: "childAt" + type: "QQuickItem*" + Parameter { name: "x"; type: "double" } + Parameter { name: "y"; type: "double" } + } + } + Component { + name: "QQuickMaterialBusyIndicator" + defaultProperty: "data" + prototype: "QQuickItem" + exports: ["QtQuick.Controls.Material.impl/BusyIndicatorImpl 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "color"; type: "QColor" } + Property { name: "running"; type: "bool" } + } + Component { + name: "QQuickMaterialProgressBar" + defaultProperty: "data" + prototype: "QQuickItem" + exports: ["QtQuick.Controls.Material.impl/ProgressBarImpl 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "color"; type: "QColor" } + Property { name: "progress"; type: "double" } + Property { name: "indeterminate"; type: "bool" } + } + Component { + name: "QQuickMaterialRipple" + defaultProperty: "data" + prototype: "QQuickItem" + exports: ["QtQuick.Controls.Material.impl/Ripple 2.0"] + exportMetaObjectRevisions: [0] + Enum { + name: "Trigger" + values: { + "Press": 0, + "Release": 1 + } + } + Property { name: "color"; type: "QColor" } + Property { name: "clipRadius"; type: "double" } + Property { name: "pressed"; type: "bool" } + Property { name: "active"; type: "bool" } + Property { name: "anchor"; type: "QQuickItem"; isPointer: true } + Property { name: "trigger"; type: "Trigger" } + } + Component { + name: "QQuickMaterialStyle" + prototype: "QQuickAttachedObject" + exports: ["QtQuick.Controls.Material/Material 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Enum { + name: "Theme" + values: { + "Light": 0, + "Dark": 1, + "System": 2 + } + } + Enum { + name: "Variant" + values: { + "Normal": 0, + "Dense": 1 + } + } + Enum { + name: "Color" + values: { + "Red": 0, + "Pink": 1, + "Purple": 2, + "DeepPurple": 3, + "Indigo": 4, + "Blue": 5, + "LightBlue": 6, + "Cyan": 7, + "Teal": 8, + "Green": 9, + "LightGreen": 10, + "Lime": 11, + "Yellow": 12, + "Amber": 13, + "Orange": 14, + "DeepOrange": 15, + "Brown": 16, + "Grey": 17, + "BlueGrey": 18 + } + } + Enum { + name: "Shade" + values: { + "Shade50": 0, + "Shade100": 1, + "Shade200": 2, + "Shade300": 3, + "Shade400": 4, + "Shade500": 5, + "Shade600": 6, + "Shade700": 7, + "Shade800": 8, + "Shade900": 9, + "ShadeA100": 10, + "ShadeA200": 11, + "ShadeA400": 12, + "ShadeA700": 13 + } + } + Property { name: "theme"; type: "Theme" } + Property { name: "primary"; type: "QVariant" } + Property { name: "accent"; type: "QVariant" } + Property { name: "foreground"; type: "QVariant" } + Property { name: "background"; type: "QVariant" } + Property { name: "elevation"; type: "int" } + Property { name: "primaryColor"; type: "QColor"; isReadonly: true } + Property { name: "accentColor"; type: "QColor"; isReadonly: true } + Property { name: "backgroundColor"; type: "QColor"; isReadonly: true } + Property { name: "primaryTextColor"; type: "QColor"; isReadonly: true } + Property { name: "primaryHighlightedTextColor"; type: "QColor"; isReadonly: true } + Property { name: "secondaryTextColor"; type: "QColor"; isReadonly: true } + Property { name: "hintTextColor"; type: "QColor"; isReadonly: true } + Property { name: "textSelectionColor"; type: "QColor"; isReadonly: true } + Property { name: "dropShadowColor"; type: "QColor"; isReadonly: true } + Property { name: "dividerColor"; type: "QColor"; isReadonly: true } + Property { name: "iconColor"; type: "QColor"; isReadonly: true } + Property { name: "iconDisabledColor"; type: "QColor"; isReadonly: true } + Property { name: "buttonColor"; type: "QColor"; isReadonly: true } + Property { name: "buttonDisabledColor"; type: "QColor"; isReadonly: true } + Property { name: "highlightedButtonColor"; type: "QColor"; isReadonly: true } + Property { name: "frameColor"; type: "QColor"; isReadonly: true } + Property { name: "rippleColor"; type: "QColor"; isReadonly: true } + Property { name: "highlightedRippleColor"; type: "QColor"; isReadonly: true } + Property { name: "switchUncheckedTrackColor"; type: "QColor"; isReadonly: true } + Property { name: "switchCheckedTrackColor"; type: "QColor"; isReadonly: true } + Property { name: "switchUncheckedHandleColor"; type: "QColor"; isReadonly: true } + Property { name: "switchCheckedHandleColor"; type: "QColor"; isReadonly: true } + Property { name: "switchDisabledTrackColor"; type: "QColor"; isReadonly: true } + Property { name: "switchDisabledHandleColor"; type: "QColor"; isReadonly: true } + Property { name: "scrollBarColor"; type: "QColor"; isReadonly: true } + Property { name: "scrollBarHoveredColor"; type: "QColor"; isReadonly: true } + Property { name: "scrollBarPressedColor"; type: "QColor"; isReadonly: true } + Property { name: "dialogColor"; type: "QColor"; isReadonly: true } + Property { name: "backgroundDimColor"; type: "QColor"; isReadonly: true } + Property { name: "listHighlightColor"; type: "QColor"; isReadonly: true } + Property { name: "tooltipColor"; type: "QColor"; isReadonly: true } + Property { name: "toolBarColor"; type: "QColor"; isReadonly: true } + Property { name: "toolTextColor"; type: "QColor"; isReadonly: true } + Property { name: "spinBoxDisabledIconColor"; type: "QColor"; isReadonly: true } + Property { name: "sliderDisabledColor"; revision: 15; type: "QColor"; isReadonly: true } + Property { name: "touchTarget"; type: "int"; isReadonly: true } + Property { name: "buttonHeight"; type: "int"; isReadonly: true } + Property { name: "delegateHeight"; type: "int"; isReadonly: true } + Property { name: "dialogButtonBoxHeight"; type: "int"; isReadonly: true } + Property { name: "frameVerticalPadding"; type: "int"; isReadonly: true } + Property { name: "menuItemHeight"; type: "int"; isReadonly: true } + Property { name: "menuItemVerticalPadding"; type: "int"; isReadonly: true } + Property { name: "switchDelegateVerticalPadding"; type: "int"; isReadonly: true } + Property { name: "tooltipHeight"; type: "int"; isReadonly: true } + Signal { name: "paletteChanged" } + Method { + name: "color" + type: "QColor" + Parameter { name: "color"; type: "Color" } + Parameter { name: "shade"; type: "Shade" } + } + Method { + name: "color" + type: "QColor" + Parameter { name: "color"; type: "Color" } + } + Method { + name: "shade" + type: "QColor" + Parameter { name: "color"; type: "QColor" } + Parameter { name: "shade"; type: "Shade" } + } + } + Component { + prototype: "QQuickItem" + name: "QtQuick.Controls.Material.impl/BoxShadow 2.0" + exports: ["QtQuick.Controls.Material.impl/BoxShadow 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "offsetX"; type: "int" } + Property { name: "offsetY"; type: "int" } + Property { name: "blurRadius"; type: "int" } + Property { name: "spreadRadius"; type: "int" } + Property { name: "source"; type: "QQuickItem"; isPointer: true } + Property { name: "fullWidth"; type: "bool" } + Property { name: "fullHeight"; type: "bool" } + Property { name: "glowRadius"; type: "double" } + Property { name: "spread"; type: "double" } + Property { name: "color"; type: "QColor" } + Property { name: "cornerRadius"; type: "double" } + Property { name: "cached"; type: "bool" } + } + Component { + prototype: "QQuickRectangle" + name: "QtQuick.Controls.Material.impl/CheckIndicator 2.0" + exports: ["QtQuick.Controls.Material.impl/CheckIndicator 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "QQuickItem"; isPointer: true } + Property { name: "checkState"; type: "int" } + } + Component { + prototype: "QQuickRectangle" + name: "QtQuick.Controls.Material.impl/CursorDelegate 2.0" + exports: ["QtQuick.Controls.Material.impl/CursorDelegate 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickItem" + name: "QtQuick.Controls.Material.impl/ElevationEffect 2.0" + exports: ["QtQuick.Controls.Material.impl/ElevationEffect 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "source"; type: "QVariant" } + Property { name: "elevation"; type: "int" } + Property { name: "fullWidth"; type: "bool" } + Property { name: "fullHeight"; type: "bool" } + Property { name: "sourceItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "_shadows"; type: "QVariant"; isReadonly: true } + Property { name: "_shadow"; type: "QVariant"; isReadonly: true } + } + Component { + prototype: "QQuickRectangle" + name: "QtQuick.Controls.Material.impl/RadioIndicator 2.0" + exports: ["QtQuick.Controls.Material.impl/RadioIndicator 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "QQuickItem"; isPointer: true } + } + Component { + prototype: "QQuickItem" + name: "QtQuick.Controls.Material.impl/RectangularGlow 2.0" + exports: ["QtQuick.Controls.Material.impl/RectangularGlow 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "glowRadius"; type: "double" } + Property { name: "spread"; type: "double" } + Property { name: "color"; type: "QColor" } + Property { name: "cornerRadius"; type: "double" } + Property { name: "cached"; type: "bool" } + } + Component { + prototype: "QQuickItem" + name: "QtQuick.Controls.Material.impl/SliderHandle 2.0" + exports: ["QtQuick.Controls.Material.impl/SliderHandle 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "value"; type: "double" } + Property { name: "handleHasFocus"; type: "bool" } + Property { name: "handlePressed"; type: "bool" } + Property { name: "handleHovered"; type: "bool" } + Property { name: "initialSize"; type: "int"; isReadonly: true } + Property { name: "control"; type: "QVariant"; isReadonly: true } + } + Component { + prototype: "QQuickItem" + name: "QtQuick.Controls.Material.impl/SwitchIndicator 2.0" + exports: ["QtQuick.Controls.Material.impl/SwitchIndicator 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "QQuickItem"; isPointer: true } + Property { name: "handle"; type: "QQuickRectangle"; isReadonly: true; isPointer: true } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Material/qmldir b/deployment_test/QtQuick/Controls.2/Material/qmldir new file mode 100644 index 0000000000000000000000000000000000000000..870a03827b7abf9ea04c66be00c0c60c80a526f2 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Material/qmldir @@ -0,0 +1,4 @@ +module QtQuick.Controls.Material +plugin qtquickcontrols2materialstyleplugin +classname QtQuickControls2MaterialStylePlugin +depends QtQuick.Controls 2.5 diff --git a/deployment_test/QtQuick/Controls.2/Material/qtquickcontrols2materialstyleplugin.dll b/deployment_test/QtQuick/Controls.2/Material/qtquickcontrols2materialstyleplugin.dll new file mode 100644 index 0000000000000000000000000000000000000000..6af69066933a5be1e9c6f1a17106a8038b25d7c0 Binary files /dev/null and b/deployment_test/QtQuick/Controls.2/Material/qtquickcontrols2materialstyleplugin.dll differ diff --git a/deployment_test/QtQuick/Controls.2/Menu.qml b/deployment_test/QtQuick/Controls.2/Menu.qml new file mode 100644 index 0000000000000000000000000000000000000000..cf3a52f248575b0d7a91c137cddc448aa5a94ba6 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Menu.qml @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Window 2.12 + +T.Menu { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + margins: 0 + overlap: 1 + + delegate: MenuItem { } + + contentItem: ListView { + implicitHeight: contentHeight + model: control.contentModel + interactive: Window.window + ? contentHeight + control.topPadding + control.bottomPadding > Window.window.height + : false + clip: true + currentIndex: control.currentIndex + + ScrollIndicator.vertical: ScrollIndicator {} + } + + background: Rectangle { + implicitWidth: 200 + implicitHeight: 40 + color: control.palette.window + border.color: control.palette.dark + } + + T.Overlay.modal: Rectangle { + color: Color.transparent(control.palette.shadow, 0.5) + } + + T.Overlay.modeless: Rectangle { + color: Color.transparent(control.palette.shadow, 0.12) + } +} diff --git a/deployment_test/QtQuick/Controls.2/MenuBar.qml b/deployment_test/QtQuick/Controls.2/MenuBar.qml new file mode 100644 index 0000000000000000000000000000000000000000..122cdc5310150555379bac460310bf5f3f7277dc --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/MenuBar.qml @@ -0,0 +1,63 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 + +T.MenuBar { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + delegate: MenuBarItem { } + + contentItem: Row { + spacing: control.spacing + Repeater { + model: control.contentModel + } + } + + background: Rectangle { + implicitHeight: 40 + color: control.palette.button + } +} diff --git a/deployment_test/QtQuick/Controls.2/MenuBarItem.qml b/deployment_test/QtQuick/Controls.2/MenuBarItem.qml new file mode 100644 index 0000000000000000000000000000000000000000..f6835412a83cee9b2130999720117767ca234989 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/MenuBarItem.qml @@ -0,0 +1,77 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 + +T.MenuBarItem { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + spacing: 6 + padding: 6 + leftPadding: 12 + rightPadding: 16 + + icon.width: 24 + icon.height: 24 + icon.color: control.palette.buttonText + + contentItem: IconLabel { + spacing: control.spacing + mirrored: control.mirrored + display: control.display + alignment: Qt.AlignLeft + + icon: control.icon + text: control.text + font: control.font + color: control.palette.buttonText + } + + background: Rectangle { + implicitWidth: 40 + implicitHeight: 40 + color: control.down || control.highlighted ? control.palette.mid : "transparent" + } +} diff --git a/deployment_test/QtQuick/Controls.2/MenuItem.qml b/deployment_test/QtQuick/Controls.2/MenuItem.qml new file mode 100644 index 0000000000000000000000000000000000000000..22cdf3ea4a944dbd32d6ded700eb8d48d7ed0851 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/MenuItem.qml @@ -0,0 +1,105 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Templates 2.12 as T + +T.MenuItem { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + padding: 6 + spacing: 6 + + icon.width: 24 + icon.height: 24 + icon.color: control.palette.windowText + + contentItem: IconLabel { + readonly property real arrowPadding: control.subMenu && control.arrow ? control.arrow.width + control.spacing : 0 + readonly property real indicatorPadding: control.checkable && control.indicator ? control.indicator.width + control.spacing : 0 + leftPadding: !control.mirrored ? indicatorPadding : arrowPadding + rightPadding: control.mirrored ? indicatorPadding : arrowPadding + + spacing: control.spacing + mirrored: control.mirrored + display: control.display + alignment: Qt.AlignLeft + + icon: control.icon + text: control.text + font: control.font + color: control.palette.windowText + } + + indicator: ColorImage { + x: control.mirrored ? control.width - width - control.rightPadding : control.leftPadding + y: control.topPadding + (control.availableHeight - height) / 2 + + visible: control.checked + source: control.checkable ? "qrc:/qt-project.org/imports/QtQuick/Controls.2/images/check.png" : "" + color: control.palette.windowText + defaultColor: "#353637" + } + + arrow: ColorImage { + x: control.mirrored ? control.leftPadding : control.width - width - control.rightPadding + y: control.topPadding + (control.availableHeight - height) / 2 + + visible: control.subMenu + mirror: control.mirrored + source: control.subMenu ? "qrc:/qt-project.org/imports/QtQuick/Controls.2/images/arrow-indicator.png" : "" + color: control.palette.windowText + defaultColor: "#353637" + } + + background: Rectangle { + implicitWidth: 200 + implicitHeight: 40 + x: 1 + y: 1 + width: control.width - 2 + height: control.height - 2 + color: control.down ? control.palette.midlight : control.highlighted ? control.palette.light : "transparent" + } +} diff --git a/deployment_test/QtQuick/Controls.2/MenuSeparator.qml b/deployment_test/QtQuick/Controls.2/MenuSeparator.qml new file mode 100644 index 0000000000000000000000000000000000000000..cc5c2b6e8f8978dc4681a08eb0d77aef744dcd25 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/MenuSeparator.qml @@ -0,0 +1,58 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Templates 2.12 as T + +T.MenuSeparator { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + padding: 2 + verticalPadding: padding + 4 + + contentItem: Rectangle { + implicitWidth: 188 + implicitHeight: 1 + color: control.palette.mid + } +} diff --git a/deployment_test/QtQuick/Controls.2/Page.qml b/deployment_test/QtQuick/Controls.2/Page.qml new file mode 100644 index 0000000000000000000000000000000000000000..4b3cf3d26e86272c2c1fb6469e7a5d6f65cc00ef --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Page.qml @@ -0,0 +1,57 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Templates 2.12 as T + +T.Page { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding, + implicitHeaderWidth, + implicitFooterWidth) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding + + (implicitHeaderHeight > 0 ? implicitHeaderHeight + spacing : 0) + + (implicitFooterHeight > 0 ? implicitFooterHeight + spacing : 0)) + + background: Rectangle { + color: control.palette.window + } +} diff --git a/deployment_test/QtQuick/Controls.2/PageIndicator.qml b/deployment_test/QtQuick/Controls.2/PageIndicator.qml new file mode 100644 index 0000000000000000000000000000000000000000..78f9e3cf76cd71b139e55cb2bba03ea7be85adeb --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/PageIndicator.qml @@ -0,0 +1,72 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Templates 2.12 as T + +T.PageIndicator { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + padding: 6 + spacing: 6 + + delegate: Rectangle { + implicitWidth: 8 + implicitHeight: 8 + + radius: width / 2 + color: control.palette.dark + + opacity: index === currentIndex ? 0.95 : pressed ? 0.7 : 0.45 + Behavior on opacity { OpacityAnimator { duration: 100 } } + } + + contentItem: Row { + spacing: control.spacing + + Repeater { + model: control.count + delegate: control.delegate + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Pane.qml b/deployment_test/QtQuick/Controls.2/Pane.qml new file mode 100644 index 0000000000000000000000000000000000000000..47b916e321be2e3df51d5e19c40e808f6796c1a9 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Pane.qml @@ -0,0 +1,55 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Templates 2.12 as T + +T.Pane { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + padding: 12 + + background: Rectangle { + color: control.palette.window + } +} diff --git a/deployment_test/QtQuick/Controls.2/Popup.qml b/deployment_test/QtQuick/Controls.2/Popup.qml new file mode 100644 index 0000000000000000000000000000000000000000..ee243c10cd12eec667aad5a3c9ba0a76be1c0f78 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Popup.qml @@ -0,0 +1,64 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Templates 2.12 as T + +T.Popup { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + padding: 12 + + background: Rectangle { + color: control.palette.window + border.color: control.palette.dark + } + + T.Overlay.modal: Rectangle { + color: Color.transparent(control.palette.shadow, 0.5) + } + + T.Overlay.modeless: Rectangle { + color: Color.transparent(control.palette.shadow, 0.12) + } +} diff --git a/deployment_test/QtQuick/Controls.2/ProgressBar.qml b/deployment_test/QtQuick/Controls.2/ProgressBar.qml new file mode 100644 index 0000000000000000000000000000000000000000..61cdea43e34cd9166b8cc35e822deddb6e4f41cd --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/ProgressBar.qml @@ -0,0 +1,67 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 + +T.ProgressBar { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + contentItem: ProgressBarImpl { + implicitHeight: 6 + implicitWidth: 116 + scale: control.mirrored ? -1 : 1 + progress: control.position + indeterminate: control.visible && control.indeterminate + color: control.palette.dark + } + + background: Rectangle { + implicitWidth: 200 + implicitHeight: 6 + y: (control.height - height) / 2 + height: 6 + + color: control.palette.midlight + } +} diff --git a/deployment_test/QtQuick/Controls.2/RadioButton.qml b/deployment_test/QtQuick/Controls.2/RadioButton.qml new file mode 100644 index 0000000000000000000000000000000000000000..cdf0c30ec4815a851df42af1b1ec19c95c448551 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/RadioButton.qml @@ -0,0 +1,86 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Templates 2.12 as T + +T.RadioButton { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + padding: 6 + spacing: 6 + + // keep in sync with RadioDelegate.qml (shared RadioIndicator.qml was removed for performance reasons) + indicator: Rectangle { + implicitWidth: 28 + implicitHeight: 28 + + x: control.text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + + radius: width / 2 + color: control.down ? control.palette.light : control.palette.base + border.width: control.visualFocus ? 2 : 1 + border.color: control.visualFocus ? control.palette.highlight : control.palette.mid + + Rectangle { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + width: 20 + height: 20 + radius: width / 2 + color: control.palette.text + visible: control.checked + } + } + + contentItem: CheckLabel { + leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 + + text: control.text + font: control.font + color: control.palette.windowText + } +} diff --git a/deployment_test/QtQuick/Controls.2/RadioDelegate.qml b/deployment_test/QtQuick/Controls.2/RadioDelegate.qml new file mode 100644 index 0000000000000000000000000000000000000000..a7e7dec0043a473355c0c364b2df4b0f71716d42 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/RadioDelegate.qml @@ -0,0 +1,103 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Templates 2.12 as T + +T.RadioDelegate { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + padding: 12 + spacing: 12 + + icon.width: 24 + icon.height: 24 + icon.color: control.palette.text + + contentItem: IconLabel { + leftPadding: control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: !control.mirrored ? control.indicator.width + control.spacing : 0 + + spacing: control.spacing + mirrored: control.mirrored + display: control.display + alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft + + icon: control.icon + text: control.text + font: control.font + color: control.palette.text + } + + // keep in sync with RadioButton.qml (shared RadioIndicator.qml was removed for performance reasons) + indicator: Rectangle { + implicitWidth: 28 + implicitHeight: 28 + + x: control.mirrored ? control.leftPadding : control.width - width - control.rightPadding + y: control.topPadding + (control.availableHeight - height) / 2 + + radius: width / 2 + color: control.down ? control.palette.light : control.palette.base + border.width: control.visualFocus ? 2 : 1 + border.color: control.visualFocus ? control.palette.highlight : control.palette.mid + + Rectangle { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + width: 20 + height: 20 + radius: width / 2 + color: control.palette.text + visible: control.checked + } + } + + background: Rectangle { + implicitWidth: 100 + implicitHeight: 40 + visible: control.down || control.highlighted + color: control.down ? control.palette.midlight : control.palette.light + } +} diff --git a/deployment_test/QtQuick/Controls.2/RangeSlider.qml b/deployment_test/QtQuick/Controls.2/RangeSlider.qml new file mode 100644 index 0000000000000000000000000000000000000000..c3e7c964647a3bed9ffee2215362f2b97963a248 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/RangeSlider.qml @@ -0,0 +1,96 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Templates 2.12 as T + +T.RangeSlider { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + first.implicitHandleWidth + leftPadding + rightPadding, + second.implicitHandleWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + first.implicitHandleHeight + topPadding + bottomPadding, + second.implicitHandleHeight + topPadding + bottomPadding) + + padding: 6 + + first.handle: Rectangle { + x: control.leftPadding + (control.horizontal ? control.first.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) + y: control.topPadding + (control.horizontal ? (control.availableHeight - height) / 2 : control.first.visualPosition * (control.availableHeight - height)) + implicitWidth: 28 + implicitHeight: 28 + radius: width / 2 + border.width: activeFocus ? 2 : 1 + border.color: activeFocus ? control.palette.highlight : control.enabled ? control.palette.mid : control.palette.midlight + color: control.first.pressed ? control.palette.light : control.palette.window + } + + second.handle: Rectangle { + x: control.leftPadding + (control.horizontal ? control.second.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) + y: control.topPadding + (control.horizontal ? (control.availableHeight - height) / 2 : control.second.visualPosition * (control.availableHeight - height)) + implicitWidth: 28 + implicitHeight: 28 + radius: width / 2 + border.width: activeFocus ? 2 : 1 + border.color: activeFocus ? control.palette.highlight : control.enabled ? control.palette.mid : control.palette.midlight + color: control.second.pressed ? control.palette.light : control.palette.window + } + + background: Rectangle { + x: control.leftPadding + (control.horizontal ? 0 : (control.availableWidth - width) / 2) + y: control.topPadding + (control.horizontal ? (control.availableHeight - height) / 2 : 0) + implicitWidth: control.horizontal ? 200 : 6 + implicitHeight: control.horizontal ? 6 : 200 + width: control.horizontal ? control.availableWidth : implicitWidth + height: control.horizontal ? implicitHeight : control.availableHeight + radius: 3 + color: control.palette.midlight + scale: control.horizontal && control.mirrored ? -1 : 1 + + Rectangle { + x: control.horizontal ? control.first.position * parent.width + 3 : 0 + y: control.horizontal ? 0 : control.second.visualPosition * parent.height + 3 + width: control.horizontal ? control.second.position * parent.width - control.first.position * parent.width - 6 : 6 + height: control.horizontal ? 6 : control.second.position * parent.height - control.first.position * parent.height - 6 + + color: control.palette.dark + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/RoundButton.qml b/deployment_test/QtQuick/Controls.2/RoundButton.qml new file mode 100644 index 0000000000000000000000000000000000000000..825d52529a07ad68a90a78084c824189180cfa71 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/RoundButton.qml @@ -0,0 +1,81 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Templates 2.12 as T + +T.RoundButton { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + padding: 6 + spacing: 6 + + icon.width: 24 + icon.height: 24 + icon.color: control.checked || control.highlighted ? control.palette.brightText : + control.flat && !control.down ? (control.visualFocus ? control.palette.highlight : control.palette.windowText) : control.palette.buttonText + + contentItem: IconLabel { + spacing: control.spacing + mirrored: control.mirrored + display: control.display + + icon: control.icon + text: control.text + font: control.font + color: control.checked || control.highlighted ? control.palette.brightText : + control.flat && !control.down ? (control.visualFocus ? control.palette.highlight : control.palette.windowText) : control.palette.buttonText + } + + background: Rectangle { + implicitWidth: 40 + implicitHeight: 40 + radius: control.radius + opacity: enabled ? 1 : 0.3 + visible: !control.flat || control.down || control.checked || control.highlighted + color: Color.blend(control.checked || control.highlighted ? control.palette.dark : control.palette.button, + control.palette.mid, control.down ? 0.5 : 0.0) + border.color: control.palette.highlight + border.width: control.visualFocus ? 2 : 0 + } +} diff --git a/deployment_test/QtQuick/Controls.2/ScrollBar.qml b/deployment_test/QtQuick/Controls.2/ScrollBar.qml new file mode 100644 index 0000000000000000000000000000000000000000..0948fb1d1ee47303e942130cbcd066a583197022 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/ScrollBar.qml @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Templates 2.12 as T + +T.ScrollBar { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + padding: 2 + visible: control.policy !== T.ScrollBar.AlwaysOff + minimumSize: orientation == Qt.Horizontal ? height / width : width / height + + contentItem: Rectangle { + implicitWidth: control.interactive ? 6 : 2 + implicitHeight: control.interactive ? 6 : 2 + + radius: width / 2 + color: control.pressed ? control.palette.dark : control.palette.mid + opacity: 0.0 + + states: State { + name: "active" + when: control.policy === T.ScrollBar.AlwaysOn || (control.active && control.size < 1.0) + PropertyChanges { target: control.contentItem; opacity: 0.75 } + } + + transitions: Transition { + from: "active" + SequentialAnimation { + PauseAnimation { duration: 450 } + NumberAnimation { target: control.contentItem; duration: 200; property: "opacity"; to: 0.0 } + } + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/ScrollIndicator.qml b/deployment_test/QtQuick/Controls.2/ScrollIndicator.qml new file mode 100644 index 0000000000000000000000000000000000000000..795c20ee73d49fd049c8461c67079198438b1f73 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/ScrollIndicator.qml @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Templates 2.12 as T + +T.ScrollIndicator { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + padding: 2 + + contentItem: Rectangle { + implicitWidth: 2 + implicitHeight: 2 + + color: control.palette.mid + visible: control.size < 1.0 + opacity: 0.0 + + states: State { + name: "active" + when: control.active + PropertyChanges { target: control.contentItem; opacity: 0.75 } + } + + transitions: [ + Transition { + from: "active" + SequentialAnimation { + PauseAnimation { duration: 450 } + NumberAnimation { target: control.contentItem; duration: 200; property: "opacity"; to: 0.0 } + } + } + ] + } +} diff --git a/deployment_test/QtQuick/Controls.2/ScrollView.qml b/deployment_test/QtQuick/Controls.2/ScrollView.qml new file mode 100644 index 0000000000000000000000000000000000000000..f775d62462d58b0b173f1ecc75c6c934fd498471 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/ScrollView.qml @@ -0,0 +1,65 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Templates 2.12 as T + +T.ScrollView { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + ScrollBar.vertical: ScrollBar { + parent: control + x: control.mirrored ? 0 : control.width - width + y: control.topPadding + height: control.availableHeight + active: control.ScrollBar.horizontal.active + } + + ScrollBar.horizontal: ScrollBar { + parent: control + x: control.leftPadding + y: control.height - height + width: control.availableWidth + active: control.ScrollBar.vertical.active + } +} diff --git a/deployment_test/QtQuick/Controls.2/Slider.qml b/deployment_test/QtQuick/Controls.2/Slider.qml new file mode 100644 index 0000000000000000000000000000000000000000..6d532389baff3276cfd141b7a52271d877463b81 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Slider.qml @@ -0,0 +1,83 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Templates 2.12 as T + +T.Slider { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitHandleWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitHandleHeight + topPadding + bottomPadding) + + padding: 6 + + handle: Rectangle { + x: control.leftPadding + (control.horizontal ? control.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) + y: control.topPadding + (control.horizontal ? (control.availableHeight - height) / 2 : control.visualPosition * (control.availableHeight - height)) + implicitWidth: 28 + implicitHeight: 28 + radius: width / 2 + color: control.pressed ? control.palette.light : control.palette.window + border.width: control.visualFocus ? 2 : 1 + border.color: control.visualFocus ? control.palette.highlight : control.enabled ? control.palette.mid : control.palette.midlight + } + + background: Rectangle { + x: control.leftPadding + (control.horizontal ? 0 : (control.availableWidth - width) / 2) + y: control.topPadding + (control.horizontal ? (control.availableHeight - height) / 2 : 0) + implicitWidth: control.horizontal ? 200 : 6 + implicitHeight: control.horizontal ? 6 : 200 + width: control.horizontal ? control.availableWidth : implicitWidth + height: control.horizontal ? implicitHeight : control.availableHeight + radius: 3 + color: control.palette.midlight + scale: control.horizontal && control.mirrored ? -1 : 1 + + Rectangle { + y: control.horizontal ? 0 : control.visualPosition * parent.height + width: control.horizontal ? control.position * parent.width : 6 + height: control.horizontal ? 6 : control.position * parent.height + + radius: 3 + color: control.palette.dark + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/SpinBox.qml b/deployment_test/QtQuick/Controls.2/SpinBox.qml new file mode 100644 index 0000000000000000000000000000000000000000..d1c2ea5bc0c7f46593bc25331e04640e459fb07f --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/SpinBox.qml @@ -0,0 +1,135 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Templates 2.12 as T + +T.SpinBox { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentItem.implicitWidth + 2 * padding + + up.implicitIndicatorWidth + + down.implicitIndicatorWidth) + implicitHeight: Math.max(implicitContentHeight + topPadding + bottomPadding, + implicitBackgroundHeight, + up.implicitIndicatorHeight, + down.implicitIndicatorHeight) + + padding: 6 + leftPadding: padding + (control.mirrored ? (up.indicator ? up.indicator.width : 0) : (down.indicator ? down.indicator.width : 0)) + rightPadding: padding + (control.mirrored ? (down.indicator ? down.indicator.width : 0) : (up.indicator ? up.indicator.width : 0)) + + validator: IntValidator { + locale: control.locale.name + bottom: Math.min(control.from, control.to) + top: Math.max(control.from, control.to) + } + + contentItem: TextInput { + z: 2 + text: control.displayText + + font: control.font + color: control.palette.text + selectionColor: control.palette.highlight + selectedTextColor: control.palette.highlightedText + horizontalAlignment: Qt.AlignHCenter + verticalAlignment: Qt.AlignVCenter + + readOnly: !control.editable + validator: control.validator + inputMethodHints: control.inputMethodHints + + Rectangle { + x: -6 - (control.down.indicator ? 1 : 0) + y: -6 + width: control.width - (control.up.indicator ? control.up.indicator.width - 1 : 0) - (control.down.indicator ? control.down.indicator.width - 1 : 0) + height: control.height + visible: control.activeFocus + color: "transparent" + border.color: control.palette.highlight + border.width: 2 + } + } + + up.indicator: Rectangle { + x: control.mirrored ? 0 : parent.width - width + height: parent.height + implicitWidth: 40 + implicitHeight: 40 + color: control.up.pressed ? control.palette.mid : control.palette.button + + Rectangle { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + width: parent.width / 3 + height: 2 + color: enabled ? control.palette.buttonText : control.palette.mid + } + Rectangle { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + width: 2 + height: parent.width / 3 + color: enabled ? control.palette.buttonText : control.palette.mid + } + } + + down.indicator: Rectangle { + x: control.mirrored ? parent.width - width : 0 + height: parent.height + implicitWidth: 40 + implicitHeight: 40 + color: control.down.pressed ? control.palette.mid : control.palette.button + + Rectangle { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + width: parent.width / 3 + height: 2 + color: enabled ? control.palette.buttonText : control.palette.mid + } + } + + background: Rectangle { + implicitWidth: 140 + color: enabled ? control.palette.base : control.palette.button + border.color: control.palette.button + } +} diff --git a/deployment_test/QtQuick/Controls.2/SplitView.qml b/deployment_test/QtQuick/Controls.2/SplitView.qml new file mode 100644 index 0000000000000000000000000000000000000000..9d37a83e6231bfbdf0f1a4b17b25445b32b9b058 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/SplitView.qml @@ -0,0 +1,55 @@ +/**************************************************************************** +** +** Copyright (C) 2018 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.13 +import QtQuick.Templates 2.13 as T +import QtQuick.Controls 2.13 +import QtQuick.Controls.impl 2.13 + +T.SplitView { + id: control + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + handle: Rectangle { + implicitWidth: control.orientation === Qt.Horizontal ? 6 : control.width + implicitHeight: control.orientation === Qt.Horizontal ? control.height : 6 + color: T.SplitHandle.pressed ? control.palette.mid + : (T.SplitHandle.hovered ? control.palette.midlight : control.palette.button) + } +} diff --git a/deployment_test/QtQuick/Controls.2/StackView.qml b/deployment_test/QtQuick/Controls.2/StackView.qml new file mode 100644 index 0000000000000000000000000000000000000000..3e416b8716ced27c199bd66dae120e64d099e8b9 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/StackView.qml @@ -0,0 +1,67 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Templates 2.12 as T + +T.StackView { + id: control + + popEnter: Transition { + XAnimator { from: (control.mirrored ? -1 : 1) * -control.width; to: 0; duration: 400; easing.type: Easing.OutCubic } + } + + popExit: Transition { + XAnimator { from: 0; to: (control.mirrored ? -1 : 1) * control.width; duration: 400; easing.type: Easing.OutCubic } + } + + pushEnter: Transition { + XAnimator { from: (control.mirrored ? -1 : 1) * control.width; to: 0; duration: 400; easing.type: Easing.OutCubic } + } + + pushExit: Transition { + XAnimator { from: 0; to: (control.mirrored ? -1 : 1) * -control.width; duration: 400; easing.type: Easing.OutCubic } + } + + replaceEnter: Transition { + XAnimator { from: (control.mirrored ? -1 : 1) * control.width; to: 0; duration: 400; easing.type: Easing.OutCubic } + } + + replaceExit: Transition { + XAnimator { from: 0; to: (control.mirrored ? -1 : 1) * -control.width; duration: 400; easing.type: Easing.OutCubic } + } +} diff --git a/deployment_test/QtQuick/Controls.2/SwipeDelegate.qml b/deployment_test/QtQuick/Controls.2/SwipeDelegate.qml new file mode 100644 index 0000000000000000000000000000000000000000..37d66bb664db42b8c4f9d5348cdad0df1a9eaf35 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/SwipeDelegate.qml @@ -0,0 +1,78 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Templates 2.12 as T + +T.SwipeDelegate { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + padding: 12 + spacing: 12 + + icon.width: 24 + icon.height: 24 + icon.color: control.palette.text + + swipe.transition: Transition { SmoothedAnimation { velocity: 3; easing.type: Easing.InOutCubic } } + + contentItem: IconLabel { + spacing: control.spacing + mirrored: control.mirrored + display: control.display + alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft + + icon: control.icon + text: control.text + font: control.font + color: control.palette.text + } + + background: Rectangle { + implicitWidth: 100 + implicitHeight: 40 + color: Color.blend(control.down ? control.palette.midlight : control.palette.light, + control.palette.highlight, control.visualFocus ? 0.15 : 0.0) + } +} diff --git a/deployment_test/QtQuick/Controls.2/SwipeView.qml b/deployment_test/QtQuick/Controls.2/SwipeView.qml new file mode 100644 index 0000000000000000000000000000000000000000..7722d2588f8bb3b6ae97b7d784e5a8700966c72f --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/SwipeView.qml @@ -0,0 +1,66 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Templates 2.12 as T + +T.SwipeView { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + contentItem: ListView { + model: control.contentModel + interactive: control.interactive + currentIndex: control.currentIndex + focus: control.focus + + spacing: control.spacing + orientation: control.orientation + snapMode: ListView.SnapOneItem + boundsBehavior: Flickable.StopAtBounds + + highlightRangeMode: ListView.StrictlyEnforceRange + preferredHighlightBegin: 0 + preferredHighlightEnd: 0 + highlightMoveDuration: 250 + maximumFlickVelocity: 4 * (control.orientation === Qt.Horizontal ? width : height) + } +} diff --git a/deployment_test/QtQuick/Controls.2/Switch.qml b/deployment_test/QtQuick/Controls.2/Switch.qml new file mode 100644 index 0000000000000000000000000000000000000000..f62e2502c72f0d43248ef7f2073d17028f248537 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Switch.qml @@ -0,0 +1,92 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 + +T.Switch { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + padding: 6 + spacing: 6 + + indicator: PaddedRectangle { + implicitWidth: 56 + implicitHeight: 28 + + x: control.text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + + radius: 8 + leftPadding: 0 + rightPadding: 0 + padding: (height - 16) / 2 + color: control.checked ? control.palette.dark : control.palette.midlight + + Rectangle { + x: Math.max(0, Math.min(parent.width - width, control.visualPosition * parent.width - (width / 2))) + y: (parent.height - height) / 2 + width: 28 + height: 28 + radius: 16 + color: control.down ? control.palette.light : control.palette.window + border.width: control.visualFocus ? 2 : 1 + border.color: control.visualFocus ? control.palette.highlight : control.enabled ? control.palette.mid : control.palette.midlight + + Behavior on x { + enabled: !control.down + SmoothedAnimation { velocity: 200 } + } + } + } + + contentItem: CheckLabel { + leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 + + text: control.text + font: control.font + color: control.palette.windowText + } +} diff --git a/deployment_test/QtQuick/Controls.2/SwitchDelegate.qml b/deployment_test/QtQuick/Controls.2/SwitchDelegate.qml new file mode 100644 index 0000000000000000000000000000000000000000..d6447e774763e80f6a2a9d480b44849d6a993aca --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/SwitchDelegate.qml @@ -0,0 +1,109 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 + +T.SwitchDelegate { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + padding: 12 + spacing: 12 + + icon.width: 24 + icon.height: 24 + icon.color: control.palette.text + + indicator: PaddedRectangle { + implicitWidth: 56 + implicitHeight: 28 + + x: control.text ? (control.mirrored ? control.leftPadding : control.width - width - control.rightPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + + radius: 8 + leftPadding: 0 + rightPadding: 0 + padding: (height - 16) / 2 + color: control.checked ? control.palette.dark : control.palette.midlight + + Rectangle { + x: Math.max(0, Math.min(parent.width - width, control.visualPosition * parent.width - (width / 2))) + y: (parent.height - height) / 2 + width: 28 + height: 28 + radius: 16 + color: control.down ? control.palette.light : control.palette.window + border.width: control.visualFocus ? 2 : 1 + border.color: control.visualFocus ? control.palette.highlight : control.enabled ? control.palette.mid : control.palette.midlight + + Behavior on x { + enabled: !control.down + SmoothedAnimation { velocity: 200 } + } + } + } + + contentItem: IconLabel { + leftPadding: control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: !control.mirrored ? control.indicator.width + control.spacing : 0 + + spacing: control.spacing + mirrored: control.mirrored + display: control.display + alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft + + icon: control.icon + text: control.text + font: control.font + color: control.palette.text + } + + background: Rectangle { + implicitWidth: 100 + implicitHeight: 40 + visible: control.down || control.highlighted + color: control.down ? control.palette.midlight : control.palette.light + } +} diff --git a/deployment_test/QtQuick/Controls.2/TabBar.qml b/deployment_test/QtQuick/Controls.2/TabBar.qml new file mode 100644 index 0000000000000000000000000000000000000000..83f6b3b277f416cec333bb43ef2380e8d1ebff43 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/TabBar.qml @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T + +T.TabBar { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + spacing: 1 + + contentItem: ListView { + model: control.contentModel + currentIndex: control.currentIndex + + spacing: control.spacing + orientation: ListView.Horizontal + boundsBehavior: Flickable.StopAtBounds + flickableDirection: Flickable.AutoFlickIfNeeded + snapMode: ListView.SnapToItem + + highlightMoveDuration: 0 + highlightRangeMode: ListView.ApplyRange + preferredHighlightBegin: 40 + preferredHighlightEnd: width - 40 + } + + background: Rectangle { + color: control.palette.window + } +} diff --git a/deployment_test/QtQuick/Controls.2/TabButton.qml b/deployment_test/QtQuick/Controls.2/TabButton.qml new file mode 100644 index 0000000000000000000000000000000000000000..f8b303eaf576a8bac1c5a0d1405d82e2e428a3cc --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/TabButton.qml @@ -0,0 +1,73 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Templates 2.12 as T + +T.TabButton { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + padding: 6 + spacing: 6 + + icon.width: 24 + icon.height: 24 + icon.color: checked ? control.palette.windowText : control.palette.brightText + + contentItem: IconLabel { + spacing: control.spacing + mirrored: control.mirrored + display: control.display + + icon: control.icon + text: control.text + font: control.font + color: control.checked ? control.palette.windowText : control.palette.brightText + } + + background: Rectangle { + implicitHeight: 40 + color: Color.blend(control.checked ? control.palette.window : control.palette.dark, + control.palette.mid, control.down ? 0.5 : 0.0) + } +} diff --git a/deployment_test/QtQuick/Controls.2/TextArea.qml b/deployment_test/QtQuick/Controls.2/TextArea.qml new file mode 100644 index 0000000000000000000000000000000000000000..45790e67b26ff98b66d24a60b11001c6e022a7dc --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/TextArea.qml @@ -0,0 +1,75 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Templates 2.12 as T + +T.TextArea { + id: control + + implicitWidth: Math.max(contentWidth + leftPadding + rightPadding, + implicitBackgroundWidth + leftInset + rightInset, + placeholder.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(contentHeight + topPadding + bottomPadding, + implicitBackgroundHeight + topInset + bottomInset, + placeholder.implicitHeight + topPadding + bottomPadding) + + padding: 6 + leftPadding: padding + 4 + + color: control.palette.text + placeholderTextColor: Color.transparent(control.color, 0.5) + selectionColor: control.palette.highlight + selectedTextColor: control.palette.highlightedText + + PlaceholderText { + id: placeholder + x: control.leftPadding + y: control.topPadding + width: control.width - (control.leftPadding + control.rightPadding) + height: control.height - (control.topPadding + control.bottomPadding) + + text: control.placeholderText + font: control.font + color: control.placeholderTextColor + verticalAlignment: control.verticalAlignment + visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter) + elide: Text.ElideRight + renderType: control.renderType + } +} diff --git a/deployment_test/QtQuick/Controls.2/TextField.qml b/deployment_test/QtQuick/Controls.2/TextField.qml new file mode 100644 index 0000000000000000000000000000000000000000..4d9cb6916eefd1a0cdfbe48dcfae795d02807963 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/TextField.qml @@ -0,0 +1,83 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Templates 2.12 as T + +T.TextField { + id: control + + implicitWidth: implicitBackgroundWidth + leftInset + rightInset + || Math.max(contentWidth, placeholder.implicitWidth) + leftPadding + rightPadding + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding, + placeholder.implicitHeight + topPadding + bottomPadding) + + padding: 6 + leftPadding: padding + 4 + + color: control.palette.text + selectionColor: control.palette.highlight + selectedTextColor: control.palette.highlightedText + placeholderTextColor: Color.transparent(control.color, 0.5) + verticalAlignment: TextInput.AlignVCenter + + PlaceholderText { + id: placeholder + x: control.leftPadding + y: control.topPadding + width: control.width - (control.leftPadding + control.rightPadding) + height: control.height - (control.topPadding + control.bottomPadding) + + text: control.placeholderText + font: control.font + color: control.placeholderTextColor + verticalAlignment: control.verticalAlignment + visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter) + elide: Text.ElideRight + renderType: control.renderType + } + + background: Rectangle { + implicitWidth: 200 + implicitHeight: 40 + border.width: control.activeFocus ? 2 : 1 + color: control.palette.base + border.color: control.activeFocus ? control.palette.highlight : control.palette.mid + } +} diff --git a/deployment_test/QtQuick/Controls.2/ToolBar.qml b/deployment_test/QtQuick/Controls.2/ToolBar.qml new file mode 100644 index 0000000000000000000000000000000000000000..1e07b6bf79f7a297e688d4925ea029df44939aeb --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/ToolBar.qml @@ -0,0 +1,54 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Templates 2.12 as T + +T.ToolBar { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + background: Rectangle { + implicitHeight: 40 + color: control.palette.button + } +} diff --git a/deployment_test/QtQuick/Controls.2/ToolButton.qml b/deployment_test/QtQuick/Controls.2/ToolButton.qml new file mode 100644 index 0000000000000000000000000000000000000000..63aaf893e2eb5850b21bb836b62f5a31c05c4720 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/ToolButton.qml @@ -0,0 +1,75 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Templates 2.12 as T + +T.ToolButton { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + padding: 6 + spacing: 6 + + icon.width: 24 + icon.height: 24 + icon.color: visualFocus ? control.palette.highlight : control.palette.buttonText + + contentItem: IconLabel { + spacing: control.spacing + mirrored: control.mirrored + display: control.display + + icon: control.icon + text: control.text + font: control.font + color: control.visualFocus ? control.palette.highlight : control.palette.buttonText + } + + background: Rectangle { + implicitWidth: 40 + implicitHeight: 40 + + opacity: control.down ? 1.0 : 0.5 + color: control.down || control.checked || control.highlighted ? control.palette.mid : control.palette.button + } +} diff --git a/deployment_test/QtQuick/Controls.2/ToolSeparator.qml b/deployment_test/QtQuick/Controls.2/ToolSeparator.qml new file mode 100644 index 0000000000000000000000000000000000000000..188d075835c59999cb29bd0d0aa354ba230a42db --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/ToolSeparator.qml @@ -0,0 +1,58 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Templates 2.12 as T + +T.ToolSeparator { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + padding: vertical ? 6 : 2 + verticalPadding: vertical ? 2 : 6 + + contentItem: Rectangle { + implicitWidth: vertical ? 1 : 30 + implicitHeight: vertical ? 30 : 1 + color: control.palette.mid + } +} diff --git a/deployment_test/QtQuick/Controls.2/ToolTip.qml b/deployment_test/QtQuick/Controls.2/ToolTip.qml new file mode 100644 index 0000000000000000000000000000000000000000..e03899038003b1e87958ecec6ec22c0e4346bdd0 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/ToolTip.qml @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Templates 2.12 as T + +T.ToolTip { + id: control + + x: parent ? (parent.width - implicitWidth) / 2 : 0 + y: -implicitHeight - 3 + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + margins: 6 + padding: 6 + + closePolicy: T.Popup.CloseOnEscape | T.Popup.CloseOnPressOutsideParent | T.Popup.CloseOnReleaseOutsideParent + + contentItem: Text { + text: control.text + font: control.font + wrapMode: Text.Wrap + color: control.palette.toolTipText + } + + background: Rectangle { + border.color: control.palette.dark + color: control.palette.toolTipBase + } +} diff --git a/deployment_test/QtQuick/Controls.2/Tumbler.qml b/deployment_test/QtQuick/Controls.2/Tumbler.qml new file mode 100644 index 0000000000000000000000000000000000000000..cd10263b4cc95f13089770911cd74014c817d973 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Tumbler.qml @@ -0,0 +1,75 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Templates 2.12 as T + +T.Tumbler { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) || 60 // ### remove 60 in Qt 6 + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) || 200 // ### remove 200 in Qt 6 + + delegate: Text { + text: modelData + color: control.visualFocus ? control.palette.highlight : control.palette.text + font: control.font + opacity: 1.0 - Math.abs(Tumbler.displacement) / (control.visibleItemCount / 2) + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + } + + contentItem: TumblerView { + implicitWidth: 60 + implicitHeight: 200 + model: control.model + delegate: control.delegate + path: Path { + startX: control.contentItem.width / 2 + startY: -control.contentItem.delegateHeight / 2 + PathLine { + x: control.contentItem.width / 2 + y: (control.visibleItemCount + 1) * control.contentItem.delegateHeight - control.contentItem.delegateHeight / 2 + } + } + + property real delegateHeight: control.availableHeight / control.visibleItemCount + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/ApplicationWindow.qml b/deployment_test/QtQuick/Controls.2/Universal/ApplicationWindow.qml new file mode 100644 index 0000000000000000000000000000000000000000..153b9e8e31c0923a65d62cefba1b653ee9599179 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/ApplicationWindow.qml @@ -0,0 +1,62 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Window 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Universal 2.12 +import QtQuick.Controls.Universal.impl 2.12 + +T.ApplicationWindow { + id: window + + color: Universal.background + + overlay.modal: Rectangle { + color: window.Universal.baseLowColor + } + + overlay.modeless: Rectangle { + color: window.Universal.baseLowColor + } + + FocusRectangle { + parent: window.activeFocusControl + width: parent ? parent.width : 0 + height: parent ? parent.height : 0 + visible: parent && !!parent.useSystemFocusVisuals && !!parent.visualFocus + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/BusyIndicator.qml b/deployment_test/QtQuick/Controls.2/Universal/BusyIndicator.qml new file mode 100644 index 0000000000000000000000000000000000000000..2ad21b4691e01909d3fd77b0becfaa3369555026 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/BusyIndicator.qml @@ -0,0 +1,60 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Universal 2.12 +import QtQuick.Controls.Universal.impl 2.12 + +T.BusyIndicator { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + contentItem: BusyIndicatorImpl { + implicitWidth: 20 + implicitHeight: 20 + + readonly property real size: Math.min(control.availableWidth, control.availableHeight) + + count: size < 60 ? 5 : 6 // "Small" vs. "Large" + color: control.Universal.accent + visible: control.running + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/Button.qml b/deployment_test/QtQuick/Controls.2/Universal/Button.qml new file mode 100644 index 0000000000000000000000000000000000000000..657b283532993333aba2e611149881559d010bf6 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/Button.qml @@ -0,0 +1,90 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Universal 2.12 + +T.Button { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + padding: 8 + verticalPadding: padding - 4 + spacing: 8 + + icon.width: 20 + icon.height: 20 + icon.color: Color.transparent(Universal.foreground, enabled ? 1.0 : 0.2) + + property bool useSystemFocusVisuals: true + + contentItem: IconLabel { + spacing: control.spacing + mirrored: control.mirrored + display: control.display + + icon: control.icon + text: control.text + font: control.font + color: Color.transparent(control.Universal.foreground, enabled ? 1.0 : 0.2) + } + + background: Rectangle { + implicitWidth: 32 + implicitHeight: 32 + + visible: !control.flat || control.down || control.checked || control.highlighted + color: control.down ? control.Universal.baseMediumLowColor : + control.enabled && (control.highlighted || control.checked) ? control.Universal.accent : + control.Universal.baseLowColor + + Rectangle { + width: parent.width + height: parent.height + color: "transparent" + visible: control.hovered + border.width: 2 // ButtonBorderThemeThickness + border.color: control.Universal.baseMediumLowColor + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/CheckBox.qml b/deployment_test/QtQuick/Controls.2/Universal/CheckBox.qml new file mode 100644 index 0000000000000000000000000000000000000000..9494f4d2a7473de5977d3348d1f252d7c70e6ec9 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/CheckBox.qml @@ -0,0 +1,74 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Universal 2.12 +import QtQuick.Controls.Universal.impl 2.12 + +T.CheckBox { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + padding: 6 + spacing: 8 + + property bool useSystemFocusVisuals: true + + indicator: CheckIndicator { + x: control.text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + control: control + } + + contentItem: Text { + leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 + + text: control.text + font: control.font + elide: Text.ElideRight + verticalAlignment: Text.AlignVCenter + + opacity: enabled ? 1.0 : 0.2 + color: control.Universal.foreground + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/CheckDelegate.qml b/deployment_test/QtQuick/Controls.2/Universal/CheckDelegate.qml new file mode 100644 index 0000000000000000000000000000000000000000..b544c42e0ecd840f888727a51babb07fc0ca9190 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/CheckDelegate.qml @@ -0,0 +1,97 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Universal 2.12 +import QtQuick.Controls.Universal.impl 2.12 + +T.CheckDelegate { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + spacing: 12 + + padding: 12 + topPadding: padding - 1 + bottomPadding: padding + 1 + + icon.width: 20 + icon.height: 20 + icon.color: Color.transparent(Universal.foreground, enabled ? 1.0 : 0.2) + + indicator: CheckIndicator { + x: control.text ? (control.mirrored ? control.leftPadding : control.width - width - control.rightPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + control: control + } + + contentItem: IconLabel { + leftPadding: !control.mirrored ? 0 : control.indicator.width + control.spacing + rightPadding: control.mirrored ? 0 : control.indicator.width + control.spacing + + spacing: control.spacing + mirrored: control.mirrored + display: control.display + alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft + + icon: control.icon + text: control.text + font: control.font + color: Color.transparent(control.Universal.foreground, enabled ? 1.0 : 0.2) + } + + background: Rectangle { + visible: control.down || control.highlighted || control.visualFocus || control.hovered + color: control.down ? control.Universal.listMediumColor : + control.hovered ? control.Universal.listLowColor : control.Universal.altMediumLowColor + Rectangle { + width: parent.width + height: parent.height + visible: control.visualFocus || control.highlighted + color: control.Universal.accent + opacity: control.Universal.theme === Universal.Light ? 0.4 : 0.6 + } + + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/CheckIndicator.qml b/deployment_test/QtQuick/Controls.2/Universal/CheckIndicator.qml new file mode 100644 index 0000000000000000000000000000000000000000..8f41617a0a8667b761e8209b51049aad3f49c25c --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/CheckIndicator.qml @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Universal 2.12 + +Rectangle { + id: indicator + implicitWidth: 20 + implicitHeight: 20 + + color: !control.enabled ? "transparent" : + control.down && !partiallyChecked ? control.Universal.baseMediumColor : + control.checkState === Qt.Checked ? control.Universal.accent : "transparent" + border.color: !control.enabled ? control.Universal.baseLowColor : + control.down ? control.Universal.baseMediumColor : + control.checked ? control.Universal.accent : control.Universal.baseMediumHighColor + border.width: 2 // CheckBoxBorderThemeThickness + + property Item control + readonly property bool partiallyChecked: control.checkState === Qt.PartiallyChecked + + ColorImage { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + + visible: indicator.control.checkState === Qt.Checked + color: !indicator.control.enabled ? indicator.control.Universal.baseLowColor : indicator.control.Universal.chromeWhiteColor + source: "qrc:/qt-project.org/imports/QtQuick/Controls.2/Universal/images/checkmark.png" + } + + Rectangle { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + width: indicator.partiallyChecked ? parent.width / 2 : parent.width + height: indicator.partiallyChecked ? parent.height / 2 : parent.height + + visible: !indicator.control.pressed && indicator.control.hovered || indicator.partiallyChecked + color: !indicator.partiallyChecked ? "transparent" : + !indicator.control.enabled ? indicator.control.Universal.baseLowColor : + indicator.control.down ? indicator.control.Universal.baseMediumColor : + indicator.control.hovered ? indicator.control.Universal.baseHighColor : indicator.control.Universal.baseMediumHighColor + border.width: indicator.partiallyChecked ? 0 : 2 // CheckBoxBorderThemeThickness + border.color: indicator.control.Universal.baseMediumLowColor + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/ComboBox.qml b/deployment_test/QtQuick/Controls.2/Universal/ComboBox.qml new file mode 100644 index 0000000000000000000000000000000000000000..9b88ccf9350060c98fc12b61f802539c92176db9 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/ComboBox.qml @@ -0,0 +1,159 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.15 +import QtQuick.Window 2.15 +import QtQuick.Controls 2.15 +import QtQuick.Controls.impl 2.15 +import QtQuick.Templates 2.15 as T +import QtQuick.Controls.Universal 2.15 + +T.ComboBox { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + leftPadding: padding + (!control.mirrored || !indicator || !indicator.visible ? 0 : indicator.width + spacing) + rightPadding: padding + (control.mirrored || !indicator || !indicator.visible ? 0 : indicator.width + spacing) + + Universal.theme: editable && activeFocus ? Universal.Light : undefined + + delegate: ItemDelegate { + width: ListView.view.width + text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] : model[control.textRole]) : modelData + font.weight: control.currentIndex === index ? Font.DemiBold : Font.Normal + highlighted: control.highlightedIndex === index + hoverEnabled: control.hoverEnabled + } + + indicator: ColorImage { + x: control.mirrored ? control.padding : control.width - width - control.padding + y: control.topPadding + (control.availableHeight - height) / 2 + color: !control.enabled ? control.Universal.baseLowColor : control.Universal.baseMediumHighColor + source: "qrc:/qt-project.org/imports/QtQuick/Controls.2/Universal/images/downarrow.png" + + Rectangle { + z: -1 + width: parent.width + height: parent.height + color: control.activeFocus ? control.Universal.accent : + control.pressed ? control.Universal.baseMediumLowColor : + control.hovered ? control.Universal.baseLowColor : "transparent" + visible: control.editable && !contentItem.hovered && (control.pressed || control.hovered) + opacity: control.activeFocus && !control.pressed ? 0.4 : 1.0 + } + } + + contentItem: T.TextField { + leftPadding: control.mirrored ? 1 : 12 + rightPadding: control.mirrored ? 10 : 1 + topPadding: 5 - control.topPadding + bottomPadding: 7 - control.bottomPadding + + text: control.editable ? control.editText : control.displayText + + enabled: control.editable + autoScroll: control.editable + readOnly: control.down + inputMethodHints: control.inputMethodHints + validator: control.validator + selectByMouse: control.selectTextByMouse + + font: control.font + color: !control.enabled ? control.Universal.chromeDisabledLowColor : + control.editable && control.activeFocus ? control.Universal.chromeBlackHighColor : control.Universal.foreground + selectionColor: control.Universal.accent + selectedTextColor: control.Universal.chromeWhiteColor + verticalAlignment: Text.AlignVCenter + } + + background: Rectangle { + implicitWidth: 120 + implicitHeight: 32 + + border.width: control.flat ? 0 : 2 // ComboBoxBorderThemeThickness + border.color: !control.enabled ? control.Universal.baseLowColor : + control.editable && control.activeFocus ? control.Universal.accent : + control.down ? control.Universal.baseMediumLowColor : + control.hovered ? control.Universal.baseMediumColor : control.Universal.baseMediumLowColor + color: !control.enabled ? control.Universal.baseLowColor : + control.down ? control.Universal.listMediumColor : + control.flat && control.hovered ? control.Universal.listLowColor : + control.editable && control.activeFocus ? control.Universal.background : control.Universal.altMediumLowColor + visible: !control.flat || control.pressed || control.hovered || control.visualFocus + + Rectangle { + x: 2 + y: 2 + width: parent.width - 4 + height: parent.height - 4 + + visible: control.visualFocus && !control.editable + color: control.Universal.accent + opacity: control.Universal.theme === Universal.Light ? 0.4 : 0.6 + } + } + + popup: T.Popup { + width: control.width + height: Math.min(contentItem.implicitHeight, control.Window.height - topMargin - bottomMargin) + topMargin: 8 + bottomMargin: 8 + + Universal.theme: control.Universal.theme + Universal.accent: control.Universal.accent + + contentItem: ListView { + clip: true + implicitHeight: contentHeight + model: control.delegateModel + currentIndex: control.highlightedIndex + highlightMoveDuration: 0 + + T.ScrollIndicator.vertical: ScrollIndicator { } + } + + background: Rectangle { + color: control.Universal.chromeMediumLowColor + border.color: control.Universal.chromeHighColor + border.width: 1 // FlyoutBorderThemeThickness + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/DelayButton.qml b/deployment_test/QtQuick/Controls.2/Universal/DelayButton.qml new file mode 100644 index 0000000000000000000000000000000000000000..2a3a3b3a02495f5bc73350403ba7bb500e3f0fb9 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/DelayButton.qml @@ -0,0 +1,94 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Universal 2.12 + +T.DelayButton { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + padding: 8 + verticalPadding: padding - 4 + + property bool useSystemFocusVisuals: true + + transition: Transition { + NumberAnimation { + duration: control.delay * (control.pressed ? 1.0 - control.progress : 0.3 * control.progress) + } + } + + contentItem: Text { + text: control.text + font: control.font + elide: Text.ElideRight + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + + opacity: enabled ? 1.0 : 0.2 + color: control.Universal.foreground + } + + background: Rectangle { + implicitWidth: 32 + implicitHeight: 32 + + color: control.down ? control.Universal.baseMediumLowColor : + control.enabled && control.checked ? control.Universal.accent : control.Universal.baseLowColor + + Rectangle { + visible: !control.checked + width: parent.width * control.progress + height: parent.height + color: control.Universal.accent + } + + Rectangle { + width: parent.width + height: parent.height + color: "transparent" + visible: control.hovered + border.width: 2 // ButtonBorderThemeThickness + border.color: control.Universal.baseMediumLowColor + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/Dial.qml b/deployment_test/QtQuick/Controls.2/Universal/Dial.qml new file mode 100644 index 0000000000000000000000000000000000000000..f45d912eea69557b5d1d376c6bc45e86ae1b7977 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/Dial.qml @@ -0,0 +1,86 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Universal 2.12 + +T.Dial { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) || 100 // ### remove 100 in Qt 6 + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) || 100 // ### remove 100 in Qt 6 + + background: Rectangle { + implicitWidth: 100 + implicitHeight: 100 + + x: control.width / 2 - width / 2 + y: control.height / 2 - height / 2 + width: Math.max(64, Math.min(control.width, control.height)) + height: width + radius: width / 2 + color: "transparent" + border.color: !control.enabled ? control.Universal.baseLowColor : control.Universal.baseMediumColor + border.width: 2 + } + + handle: Rectangle { + implicitWidth: 14 + implicitHeight: 14 + + x: control.background.x + control.background.width / 2 - control.handle.width / 2 + y: control.background.y + control.background.height / 2 - control.handle.height / 2 + + radius: width / 2 + color: !control.enabled ? control.Universal.baseLowColor : + control.pressed ? control.Universal.baseMediumColor : + control.hovered ? control.Universal.baseHighColor : control.Universal.baseMediumHighColor + + transform: [ + Translate { + y: -control.background.height * 0.4 + control.handle.height / 2 + }, + Rotation { + angle: control.angle + origin.x: control.handle.width / 2 + origin.y: control.handle.height / 2 + } + ] + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/Dialog.qml b/deployment_test/QtQuick/Controls.2/Universal/Dialog.qml new file mode 100644 index 0000000000000000000000000000000000000000..6151d0908b1497b5c400dab970a8f84e1df19942 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/Dialog.qml @@ -0,0 +1,91 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.Universal 2.12 + +T.Dialog { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding, + implicitHeaderWidth, + implicitFooterWidth) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding + + (implicitHeaderHeight > 0 ? implicitHeaderHeight + spacing : 0) + + (implicitFooterHeight > 0 ? implicitFooterHeight + spacing : 0)) + + padding: 24 + verticalPadding: 18 + + background: Rectangle { + color: control.Universal.chromeMediumLowColor + border.color: control.Universal.chromeHighColor + border.width: 1 // FlyoutBorderThemeThickness + } + + header: Label { + text: control.title + visible: control.title + elide: Label.ElideRight + topPadding: 18 + leftPadding: 24 + rightPadding: 24 + // TODO: QPlatformTheme::TitleBarFont + font.pixelSize: 20 + background: Rectangle { + x: 1; y: 1 // // FlyoutBorderThemeThickness + color: control.Universal.chromeMediumLowColor + width: parent.width - 2 + height: parent.height - 1 + } + } + + footer: DialogButtonBox { + visible: count > 0 + } + + T.Overlay.modal: Rectangle { + color: control.Universal.baseLowColor + } + + T.Overlay.modeless: Rectangle { + color: control.Universal.baseLowColor + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/DialogButtonBox.qml b/deployment_test/QtQuick/Controls.2/Universal/DialogButtonBox.qml new file mode 100644 index 0000000000000000000000000000000000000000..0458c39dab15dfddefa9d2fca419d1efffb5100a --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/DialogButtonBox.qml @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.Universal 2.12 + +T.DialogButtonBox { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + (control.count === 1 ? implicitContentWidth * 2 : implicitContentWidth) + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + contentWidth: contentItem.contentWidth + + spacing: 4 + padding: 24 + topPadding: position === T.DialogButtonBox.Footer ? 6 : 24 + bottomPadding: position === T.DialogButtonBox.Header ? 6 : 24 + alignment: count === 1 ? Qt.AlignRight : undefined + + delegate: Button { + width: control.count === 1 ? control.availableWidth / 2 : undefined + } + + contentItem: ListView { + model: control.contentModel + spacing: control.spacing + orientation: ListView.Horizontal + boundsBehavior: Flickable.StopAtBounds + snapMode: ListView.SnapToItem + } + + background: Rectangle { + implicitHeight: 32 + color: control.Universal.chromeMediumLowColor + x: 1; y: 1 + width: parent.width - 2 + height: parent.height - 2 + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/Drawer.qml b/deployment_test/QtQuick/Controls.2/Universal/Drawer.qml new file mode 100644 index 0000000000000000000000000000000000000000..7ec1d7f88af754de49a5ad1cd30d089dc7bc5b7d --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/Drawer.qml @@ -0,0 +1,78 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Universal 2.12 + +T.Drawer { + id: control + + parent: T.Overlay.overlay + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + topPadding: control.edge === Qt.BottomEdge + leftPadding: control.edge === Qt.RightEdge + rightPadding: control.edge === Qt.LeftEdge + bottomPadding: control.edge === Qt.TopEdge + + enter: Transition { SmoothedAnimation { velocity: 5 } } + exit: Transition { SmoothedAnimation { velocity: 5 } } + + background: Rectangle { + color: control.Universal.chromeMediumLowColor + Rectangle { + readonly property bool horizontal: control.edge === Qt.LeftEdge || control.edge === Qt.RightEdge + width: horizontal ? 1 : parent.width + height: horizontal ? parent.height : 1 + color: control.Universal.chromeHighColor + x: control.edge === Qt.LeftEdge ? parent.width - 1 : 0 + y: control.edge === Qt.TopEdge ? parent.height - 1 : 0 + } + } + + T.Overlay.modal: Rectangle { + color: control.Universal.baseLowColor + } + + T.Overlay.modeless: Rectangle { + color: control.Universal.baseLowColor + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/Frame.qml b/deployment_test/QtQuick/Controls.2/Universal/Frame.qml new file mode 100644 index 0000000000000000000000000000000000000000..8bb44849963305dcdfa446596919bbc25573637f --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/Frame.qml @@ -0,0 +1,55 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Universal 2.12 + +T.Frame { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + padding: 12 + + background: Rectangle { + color: "transparent" + border.color: control.Universal.chromeDisabledLowColor + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/GroupBox.qml b/deployment_test/QtQuick/Controls.2/Universal/GroupBox.qml new file mode 100644 index 0000000000000000000000000000000000000000..dc156dd79880956bd824928f35c9287c6456e831 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/GroupBox.qml @@ -0,0 +1,75 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Universal 2.12 + +T.GroupBox { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding, + implicitLabelWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + spacing: 12 + padding: 12 + topPadding: padding + (implicitLabelWidth > 0 ? implicitLabelHeight + spacing : 0) + + label: Text { + x: control.leftPadding + width: control.availableWidth + + text: control.title + font: control.font + elide: Text.ElideRight + verticalAlignment: Text.AlignVCenter + + opacity: enabled ? 1.0 : 0.2 + color: control.Universal.foreground + } + + background: Rectangle { + y: control.topPadding - control.bottomPadding + width: parent.width + height: parent.height - control.topPadding + control.bottomPadding + + color: "transparent" + border.color: control.Universal.chromeDisabledLowColor + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/HorizontalHeaderView.qml b/deployment_test/QtQuick/Controls.2/Universal/HorizontalHeaderView.qml new file mode 100644 index 0000000000000000000000000000000000000000..47daa8ce9041c165e9c1c326c620bd9a37dd28a3 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/HorizontalHeaderView.qml @@ -0,0 +1,70 @@ +/**************************************************************************** +** +** Copyright (C) 2020 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.15 +import QtQuick.Controls 2.15 +import QtQuick.Controls.impl 2.15 +import QtQuick.Templates 2.15 as T +import QtQuick.Controls.Universal 2.15 +import QtQuick.Controls.Universal.impl 2.15 + +T.HorizontalHeaderView { + id: control + + implicitWidth: syncView ? syncView.width : 0 + implicitHeight: contentHeight + + delegate: Rectangle { + // Qt6: add cellPadding (and font etc) as public API in headerview + readonly property real cellPadding: 8 + + implicitWidth: text.implicitWidth + (cellPadding * 2) + implicitHeight: Math.max(control.height, text.implicitHeight + (cellPadding * 2)) + color: control.Universal.background + + Text { + id: text + text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] + : model[control.textRole]) + : modelData + width: parent.width + height: parent.height + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + color: Color.transparent(control.Universal.foreground, enabled ? 1.0 : 0.2) + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/ItemDelegate.qml b/deployment_test/QtQuick/Controls.2/Universal/ItemDelegate.qml new file mode 100644 index 0000000000000000000000000000000000000000..ed98540597e30f7277bd365fb68ad80db4d29b2b --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/ItemDelegate.qml @@ -0,0 +1,87 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Universal 2.12 + +T.ItemDelegate { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + spacing: 12 + + padding: 12 + topPadding: padding - 1 + bottomPadding: padding + 1 + + icon.width: 20 + icon.height: 20 + icon.color: Color.transparent(Universal.foreground, enabled ? 1.0 : 0.2) + + contentItem: IconLabel { + spacing: control.spacing + mirrored: control.mirrored + display: control.display + alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft + + icon: control.icon + text: control.text + font: control.font + color: Color.transparent(control.Universal.foreground, enabled ? 1.0 : 0.2) + } + + background: Rectangle { + visible: control.down || control.highlighted || control.visualFocus || control.hovered + color: control.down ? control.Universal.listMediumColor : + control.hovered ? control.Universal.listLowColor : control.Universal.altMediumLowColor + Rectangle { + width: parent.width + height: parent.height + visible: control.visualFocus || control.highlighted + color: control.Universal.accent + opacity: control.Universal.theme === Universal.Light ? 0.4 : 0.6 + } + + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/Label.qml b/deployment_test/QtQuick/Controls.2/Universal/Label.qml new file mode 100644 index 0000000000000000000000000000000000000000..c66435c3761d9019cf1ff2291210bdce069b68b2 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/Label.qml @@ -0,0 +1,47 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Universal 2.12 + +T.Label { + id: control + + opacity: enabled ? 1.0 : 0.2 + color: control.Universal.foreground + linkColor: Universal.accent +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/Menu.qml b/deployment_test/QtQuick/Controls.2/Universal/Menu.qml new file mode 100644 index 0000000000000000000000000000000000000000..4814d006558181007d93af147000ad41534d4bb4 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/Menu.qml @@ -0,0 +1,83 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Universal 2.12 +import QtQuick.Window 2.12 + +T.Menu { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + margins: 0 + overlap: 1 + + delegate: MenuItem { } + + contentItem: ListView { + implicitHeight: contentHeight + model: control.contentModel + interactive: Window.window + ? contentHeight + control.topPadding + control.bottomPadding > Window.window.height + : false + clip: true + currentIndex: control.currentIndex + + ScrollIndicator.vertical: ScrollIndicator {} + } + + background: Rectangle { + implicitWidth: 200 + implicitHeight: 40 + color: control.Universal.chromeMediumLowColor + border.color: control.Universal.chromeHighColor + border.width: 1 // FlyoutBorderThemeThickness + } + + T.Overlay.modal: Rectangle { + color: control.Universal.baseLowColor + } + + T.Overlay.modeless: Rectangle { + color: control.Universal.baseLowColor + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/MenuBar.qml b/deployment_test/QtQuick/Controls.2/Universal/MenuBar.qml new file mode 100644 index 0000000000000000000000000000000000000000..2317f50581282b58d509054eb705a72db8fb8576 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/MenuBar.qml @@ -0,0 +1,64 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Universal 2.12 + +T.MenuBar { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + delegate: MenuBarItem { } + + contentItem: Row { + spacing: control.spacing + Repeater { + model: control.contentModel + } + } + + background: Rectangle { + implicitHeight: 40 + color: control.Universal.chromeMediumColor + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/MenuBarItem.qml b/deployment_test/QtQuick/Controls.2/Universal/MenuBarItem.qml new file mode 100644 index 0000000000000000000000000000000000000000..30f1fc57f7d68a0a004576a989fa55f1f3054459 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/MenuBarItem.qml @@ -0,0 +1,91 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Universal 2.12 + +T.MenuBarItem { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + padding: 12 + topPadding: padding - 1 + bottomPadding: padding + 1 + spacing: 12 + + icon.width: 20 + icon.height: 20 + icon.color: !enabled ? Universal.baseLowColor : Universal.baseHighColor + + contentItem: IconLabel { + spacing: control.spacing + mirrored: control.mirrored + display: control.display + alignment: Qt.AlignLeft + + icon: control.icon + text: control.text + font: control.font + color: !control.enabled ? control.Universal.baseLowColor : control.Universal.baseHighColor + } + + background: Rectangle { + implicitWidth: 40 + implicitHeight: 40 + + color: !control.enabled ? control.Universal.baseLowColor : + control.down ? control.Universal.listMediumColor : + control.highlighted ? control.Universal.listLowColor : "transparent" + + Rectangle { + x: 1; y: 1 + width: parent.width - 2 + height: parent.height - 2 + + visible: control.visualFocus + color: control.Universal.accent + opacity: control.Universal.theme === Universal.Light ? 0.4 : 0.6 + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/MenuItem.qml b/deployment_test/QtQuick/Controls.2/Universal/MenuItem.qml new file mode 100644 index 0000000000000000000000000000000000000000..23d0ee3c528870435639eb98881ab2935f0f6492 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/MenuItem.qml @@ -0,0 +1,115 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Universal 2.12 + +T.MenuItem { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + padding: 12 + topPadding: padding - 1 + bottomPadding: padding + 1 + spacing: 12 + + icon.width: 20 + icon.height: 20 + icon.color: !enabled ? Universal.baseLowColor : Universal.baseHighColor + + contentItem: IconLabel { + readonly property real arrowPadding: control.subMenu && control.arrow ? control.arrow.width + control.spacing : 0 + readonly property real indicatorPadding: control.checkable && control.indicator ? control.indicator.width + control.spacing : 0 + leftPadding: !control.mirrored ? indicatorPadding : arrowPadding + rightPadding: control.mirrored ? indicatorPadding : arrowPadding + + spacing: control.spacing + mirrored: control.mirrored + display: control.display + alignment: Qt.AlignLeft + + icon: control.icon + text: control.text + font: control.font + color: !control.enabled ? control.Universal.baseLowColor : control.Universal.baseHighColor + } + + arrow: ColorImage { + x: control.mirrored ? control.leftPadding : control.width - width - control.rightPadding + y: control.topPadding + (control.availableHeight - height) / 2 + + visible: control.subMenu + mirror: control.mirrored + color: !enabled ? control.Universal.baseLowColor : control.Universal.baseHighColor + source: "qrc:/qt-project.org/imports/QtQuick/Controls.2/Universal/images/rightarrow.png" + } + + indicator: ColorImage { + x: control.text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + + visible: control.checked + color: !control.enabled ? control.Universal.baseLowColor : control.down ? control.Universal.baseHighColor : control.Universal.baseMediumHighColor + source: !control.checkable ? "" : "qrc:/qt-project.org/imports/QtQuick/Controls.2/Universal/images/checkmark.png" + } + + background: Rectangle { + implicitWidth: 200 + implicitHeight: 40 + + color: !control.enabled ? control.Universal.baseLowColor : + control.down ? control.Universal.listMediumColor : + control.highlighted ? control.Universal.listLowColor : control.Universal.altMediumLowColor + + Rectangle { + x: 1; y: 1 + width: parent.width - 2 + height: parent.height - 2 + + visible: control.visualFocus + color: control.Universal.accent + opacity: control.Universal.theme === Universal.Light ? 0.4 : 0.6 + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/MenuSeparator.qml b/deployment_test/QtQuick/Controls.2/Universal/MenuSeparator.qml new file mode 100644 index 0000000000000000000000000000000000000000..72f9f6f7f20365c08417b6db49eaaee29b6c1af3 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/MenuSeparator.qml @@ -0,0 +1,62 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Universal 2.12 + +T.MenuSeparator { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + padding: 12 + topPadding: 9 + bottomPadding: 10 + + contentItem: Rectangle { + implicitWidth: 188 + implicitHeight: 1 + color: control.Universal.baseMediumLowColor + } + + background: Rectangle { + color: control.Universal.altMediumLowColor + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/Page.qml b/deployment_test/QtQuick/Controls.2/Universal/Page.qml new file mode 100644 index 0000000000000000000000000000000000000000..347d6d9a82ba2fc5298015bcbef1c92e2d949f31 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/Page.qml @@ -0,0 +1,56 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Universal 2.12 + +T.Page { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding, + implicitHeaderWidth, + implicitFooterWidth) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding + + (implicitHeaderHeight > 0 ? implicitHeaderHeight + spacing : 0) + + (implicitFooterHeight > 0 ? implicitFooterHeight + spacing : 0)) + + background: Rectangle { + color: control.Universal.background + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/PageIndicator.qml b/deployment_test/QtQuick/Controls.2/Universal/PageIndicator.qml new file mode 100644 index 0000000000000000000000000000000000000000..3dcc84ab4a5330e4343cae41596ffef758c956e3 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/PageIndicator.qml @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Universal 2.12 + +T.PageIndicator { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + padding: 6 + spacing: 7 + + delegate: Rectangle { + implicitWidth: 5 + implicitHeight: 5 + + radius: width / 2 + color: index === control.currentIndex ? control.Universal.baseMediumHighColor : + pressed ? control.Universal.baseMediumLowColor : control.Universal.baseLowColor + } + + contentItem: Row { + spacing: control.spacing + + Repeater { + model: control.count + delegate: control.delegate + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/Pane.qml b/deployment_test/QtQuick/Controls.2/Universal/Pane.qml new file mode 100644 index 0000000000000000000000000000000000000000..63a5ecec455ed5df8de6260e6da60fd6ee0d5f9d --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/Pane.qml @@ -0,0 +1,54 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Universal 2.12 + +T.Pane { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + padding: 12 + + background: Rectangle { + color: control.Universal.background + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/Popup.qml b/deployment_test/QtQuick/Controls.2/Universal/Popup.qml new file mode 100644 index 0000000000000000000000000000000000000000..e39134e12fb7569dce9af410fe4023d154f51b30 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/Popup.qml @@ -0,0 +1,64 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Universal 2.12 + +T.Popup { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + padding: 12 + + background: Rectangle { + color: control.Universal.chromeMediumLowColor + border.color: control.Universal.chromeHighColor + border.width: 1 // FlyoutBorderThemeThickness + } + + T.Overlay.modal: Rectangle { + color: control.Universal.baseLowColor + } + + T.Overlay.modeless: Rectangle { + color: control.Universal.baseLowColor + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/ProgressBar.qml b/deployment_test/QtQuick/Controls.2/Universal/ProgressBar.qml new file mode 100644 index 0000000000000000000000000000000000000000..ce79bd5470c3944e73c6e463f3d045e70d3f6cfa --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/ProgressBar.qml @@ -0,0 +1,68 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Universal 2.12 +import QtQuick.Controls.Universal.impl 2.12 + +T.ProgressBar { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + contentItem: ProgressBarImpl { + implicitHeight: 10 + + scale: control.mirrored ? -1 : 1 + color: control.Universal.accent + progress: control.position + indeterminate: control.visible && control.indeterminate + } + + background: Rectangle { + implicitWidth: 100 + implicitHeight: 10 + y: (control.height - height) / 2 + height: 10 + + visible: !control.indeterminate + color: control.Universal.baseLowColor + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/RadioButton.qml b/deployment_test/QtQuick/Controls.2/Universal/RadioButton.qml new file mode 100644 index 0000000000000000000000000000000000000000..a50cdf9bcc1690f59facf0c0004c3dcbddfb5063 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/RadioButton.qml @@ -0,0 +1,74 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Universal 2.12 +import QtQuick.Controls.Universal.impl 2.12 + +T.RadioButton { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + padding: 6 + spacing: 8 + + property bool useSystemFocusVisuals: true + + indicator: RadioIndicator { + x: control.text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + control: control + } + + contentItem: Text { + leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 + + text: control.text + font: control.font + elide: Text.ElideRight + verticalAlignment: Text.AlignVCenter + + opacity: enabled ? 1.0 : 0.2 + color: control.Universal.foreground + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/RadioDelegate.qml b/deployment_test/QtQuick/Controls.2/Universal/RadioDelegate.qml new file mode 100644 index 0000000000000000000000000000000000000000..9fc910f3454287af14483b680093ff8f3be291c8 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/RadioDelegate.qml @@ -0,0 +1,97 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Universal 2.12 +import QtQuick.Controls.Universal.impl 2.12 + +T.RadioDelegate { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + spacing: 12 + + padding: 12 + topPadding: padding - 1 + bottomPadding: padding + 1 + + icon.width: 20 + icon.height: 20 + icon.color: Color.transparent(Universal.foreground, enabled ? 1.0 : 0.2) + + indicator: RadioIndicator { + x: control.text ? (control.mirrored ? control.leftPadding : control.width - width - control.rightPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + control: control + } + + contentItem: IconLabel { + leftPadding: !control.mirrored ? 0 : control.indicator.width + control.spacing + rightPadding: control.mirrored ? 0 : control.indicator.width + control.spacing + + spacing: control.spacing + mirrored: control.mirrored + display: control.display + alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft + + icon: control.icon + text: control.text + font: control.font + color: Color.transparent(control.Universal.foreground, enabled ? 1.0 : 0.2) + } + + background: Rectangle { + visible: control.down || control.highlighted || control.visualFocus || control.hovered + color: control.down ? control.Universal.listMediumColor : + control.hovered ? control.Universal.listLowColor : control.Universal.altMediumLowColor + Rectangle { + width: parent.width + height: parent.height + visible: control.visualFocus || control.highlighted + color: control.Universal.accent + opacity: control.Universal.theme === Universal.Light ? 0.4 : 0.6 + } + + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/RadioIndicator.qml b/deployment_test/QtQuick/Controls.2/Universal/RadioIndicator.qml new file mode 100644 index 0000000000000000000000000000000000000000..1a32decbbedf2aca51707ce7f17fa0bc55f6f907 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/RadioIndicator.qml @@ -0,0 +1,80 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Controls.Universal 2.12 + +Rectangle { + id: indicator + implicitWidth: 20 + implicitHeight: 20 + radius: width / 2 + color: "transparent" + border.width: 2 // RadioButtonBorderThemeThickness + border.color: control.checked ? "transparent" : + !control.enabled ? control.Universal.baseLowColor : + control.down ? control.Universal.baseMediumColor : + control.hovered ? control.Universal.baseHighColor : control.Universal.baseMediumHighColor + + property var control + + Rectangle { + id: checkOuterEllipse + width: parent.width + height: parent.height + + radius: width / 2 + opacity: indicator.control.checked ? 1 : 0 + color: "transparent" + border.width: 2 // RadioButtonBorderThemeThickness + border.color: !indicator.control.enabled ? indicator.control.Universal.baseLowColor : + indicator.control.down ? indicator.control.Universal.baseMediumColor : indicator.control.Universal.accent + } + + Rectangle { + id: checkGlyph + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + width: parent.width / 2 + height: parent.height / 2 + + radius: width / 2 + opacity: indicator.control.checked ? 1 : 0 + color: !indicator.control.enabled ? indicator.control.Universal.baseLowColor : + indicator.control.down ? indicator.control.Universal.baseMediumColor : + indicator.control.hovered ? indicator.control.Universal.baseHighColor : indicator.control.Universal.baseMediumHighColor + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/RangeSlider.qml b/deployment_test/QtQuick/Controls.2/Universal/RangeSlider.qml new file mode 100644 index 0000000000000000000000000000000000000000..f2e4d71e9fc2f67f12123eb3cfab4d8b1e98fa50 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/RangeSlider.qml @@ -0,0 +1,109 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Universal 2.12 + +T.RangeSlider { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + first.implicitHandleWidth + leftPadding + rightPadding, + second.implicitHandleWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + first.implicitHandleHeight + topPadding + bottomPadding, + second.implicitHandleHeight + topPadding + bottomPadding) + + padding: 6 + + first.handle: Rectangle { + implicitWidth: control.horizontal ? 8 : 24 + implicitHeight: control.horizontal ? 24 : 8 + + x: control.leftPadding + (control.horizontal ? control.first.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) + y: control.topPadding + (control.horizontal ? (control.availableHeight - height) / 2 : control.first.visualPosition * (control.availableHeight - height)) + + radius: 4 + color: control.first.pressed ? control.Universal.chromeHighColor : + control.first.hovered ? control.Universal.chromeAltLowColor : + control.enabled ? control.Universal.accent : control.Universal.chromeDisabledHighColor + } + + second.handle: Rectangle { + implicitWidth: control.horizontal ? 8 : 24 + implicitHeight: control.horizontal ? 24 : 8 + + x: control.leftPadding + (control.horizontal ? control.second.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) + y: control.topPadding + (control.horizontal ? (control.availableHeight - height) / 2 : control.second.visualPosition * (control.availableHeight - height)) + + radius: 4 + color: control.second.pressed ? control.Universal.chromeHighColor : + control.second.hovered ? control.Universal.chromeAltLowColor : + control.enabled ? control.Universal.accent : control.Universal.chromeDisabledHighColor + } + + background: Item { + implicitWidth: control.horizontal ? 200 : 18 + implicitHeight: control.horizontal ? 18 : 200 + + x: control.leftPadding + (control.horizontal ? 0 : (control.availableWidth - width) / 2) + y: control.topPadding + (control.horizontal ? (control.availableHeight - height) / 2 : 0) + width: control.horizontal ? control.availableWidth : implicitWidth + height: control.horizontal ? implicitHeight : control.availableHeight + + scale: control.horizontal && control.mirrored ? -1 : 1 + + Rectangle { + x: control.horizontal ? 0 : (parent.width - width) / 2 + y: control.horizontal ? (parent.height - height) / 2 : 0 + width: control.horizontal ? parent.width : 2 // SliderBackgroundThemeHeight + height: control.vertical ? parent.height : 2 // SliderBackgroundThemeHeight + + color: control.hovered && !control.pressed ? control.Universal.baseMediumColor : + control.enabled ? control.Universal.baseMediumLowColor : control.Universal.chromeDisabledHighColor + } + + Rectangle { + x: control.horizontal ? control.first.position * parent.width : (parent.width - width) / 2 + y: control.horizontal ? (parent.height - height) / 2 : control.second.visualPosition * parent.height + width: control.horizontal ? control.second.position * parent.width - control.first.position * parent.width : 2 // SliderBackgroundThemeHeight + height: control.vertical ? control.second.position * parent.height - control.first.position * parent.height : 2 // SliderBackgroundThemeHeight + + color: control.enabled ? control.Universal.accent : control.Universal.chromeDisabledHighColor + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/RoundButton.qml b/deployment_test/QtQuick/Controls.2/Universal/RoundButton.qml new file mode 100644 index 0000000000000000000000000000000000000000..2eedf96eaea3d3f53932b875cf9f5b17eb81b5fe --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/RoundButton.qml @@ -0,0 +1,91 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Universal 2.12 + +T.RoundButton { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + padding: 8 + spacing: 8 + + icon.width: 20 + icon.height: 20 + icon.color: Color.transparent(Universal.foreground, enabled ? 1.0 : 0.2) + + property bool useSystemFocusVisuals: true + + contentItem: IconLabel { + spacing: control.spacing + mirrored: control.mirrored + display: control.display + + icon: control.icon + text: control.text + font: control.font + color: Color.transparent(control.Universal.foreground, enabled ? 1.0 : 0.2) + } + + background: Rectangle { + implicitWidth: 32 + implicitHeight: 32 + + radius: control.radius + visible: !control.flat || control.down || control.checked || control.highlighted + color: control.down ? control.Universal.baseMediumLowColor : + control.enabled && (control.highlighted || control.checked) ? control.Universal.accent : + control.Universal.baseLowColor + + Rectangle { + width: parent.width + height: parent.height + radius: control.radius + color: "transparent" + visible: control.hovered + border.width: 2 // ButtonBorderThemeThickness + border.color: control.Universal.baseMediumLowColor + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/ScrollBar.qml b/deployment_test/QtQuick/Controls.2/Universal/ScrollBar.qml new file mode 100644 index 0000000000000000000000000000000000000000..8b8e325d955347ec0fee8971777d26dc7c87a3dc --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/ScrollBar.qml @@ -0,0 +1,93 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Universal 2.12 + +T.ScrollBar { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + visible: control.policy !== T.ScrollBar.AlwaysOff + minimumSize: orientation == Qt.Horizontal ? height / width : width / height + + // TODO: arrows + + contentItem: Rectangle { + implicitWidth: control.interactive ? 12 : 6 + implicitHeight: control.interactive ? 12: 6 + + color: control.pressed ? control.Universal.baseMediumColor : + control.interactive && control.hovered ? control.Universal.baseMediumLowColor : control.Universal.chromeHighColor + opacity: 0.0 + } + + background: Rectangle { + implicitWidth: control.interactive ? 12 : 6 + implicitHeight: control.interactive ? 12: 6 + + color: control.Universal.chromeLowColor + visible: control.size < 1.0 + opacity: 0.0 + } + + states: [ + State { + name: "active" + when: control.policy === T.ScrollBar.AlwaysOn || (control.active && control.size < 1.0) + } + ] + + transitions: [ + Transition { + to: "active" + NumberAnimation { targets: [control.contentItem, control.background]; property: "opacity"; to: 1.0 } + }, + Transition { + from: "active" + SequentialAnimation { + PropertyAction{ targets: [control.contentItem, control.background]; property: "opacity"; value: 1.0 } + PauseAnimation { duration: 3000 } + NumberAnimation { targets: [control.contentItem, control.background]; property: "opacity"; to: 0.0 } + } + } + ] +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/ScrollIndicator.qml b/deployment_test/QtQuick/Controls.2/Universal/ScrollIndicator.qml new file mode 100644 index 0000000000000000000000000000000000000000..ab66ee7c97ec60a9e73ce66b5ad7d5e9f4d38c08 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/ScrollIndicator.qml @@ -0,0 +1,78 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Universal 2.12 + +T.ScrollIndicator { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + contentItem: Rectangle { + implicitWidth: 6 + implicitHeight: 6 + + color: control.Universal.baseMediumLowColor + visible: control.size < 1.0 + opacity: 0.0 + + states: [ + State { + name: "active" + when: control.active + } + ] + + transitions: [ + Transition { + to: "active" + NumberAnimation { target: control.contentItem; property: "opacity"; to: 1.0 } + }, + Transition { + from: "active" + SequentialAnimation { + PauseAnimation { duration: 5000 } + NumberAnimation { target: control.contentItem; property: "opacity"; to: 0.0 } + } + } + ] + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/Slider.qml b/deployment_test/QtQuick/Controls.2/Universal/Slider.qml new file mode 100644 index 0000000000000000000000000000000000000000..8f427b1ed391b795195dab02e8e310898db6400f --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/Slider.qml @@ -0,0 +1,96 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Universal 2.12 + +T.Slider { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitHandleWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitHandleHeight + topPadding + bottomPadding) + + padding: 6 + + property bool useSystemFocusVisuals: true + + handle: Rectangle { + implicitWidth: control.horizontal ? 8 : 24 + implicitHeight: control.horizontal ? 24 : 8 + + x: control.leftPadding + (control.horizontal ? control.visualPosition * (control.availableWidth - width) : (control.availableWidth - width) / 2) + y: control.topPadding + (control.horizontal ? (control.availableHeight - height) / 2 : control.visualPosition * (control.availableHeight - height)) + + radius: 4 + color: control.pressed ? control.Universal.chromeHighColor : + control.hovered ? control.Universal.chromeAltLowColor : + control.enabled ? control.Universal.accent : control.Universal.chromeDisabledHighColor + } + + background: Item { + implicitWidth: control.horizontal ? 200 : 18 + implicitHeight: control.horizontal ? 18 : 200 + + x: control.leftPadding + (control.horizontal ? 0 : (control.availableWidth - width) / 2) + y: control.topPadding + (control.horizontal ? (control.availableHeight - height) / 2 : 0) + width: control.horizontal ? control.availableWidth : implicitWidth + height: control.horizontal ? implicitHeight : control.availableHeight + + scale: control.horizontal && control.mirrored ? -1 : 1 + + Rectangle { + x: control.horizontal ? 0 : (parent.width - width) / 2 + y: control.horizontal ? (parent.height - height) / 2 : 0 + width: control.horizontal ? parent.width : 2 // SliderTrackThemeHeight + height: !control.horizontal ? parent.height : 2 // SliderTrackThemeHeight + + color: control.hovered && !control.pressed ? control.Universal.baseMediumColor : + control.enabled ? control.Universal.baseMediumLowColor : control.Universal.chromeDisabledHighColor + } + + Rectangle { + x: control.horizontal ? 0 : (parent.width - width) / 2 + y: control.horizontal ? (parent.height - height) / 2 : control.visualPosition * parent.height + width: control.horizontal ? control.position * parent.width : 2 // SliderTrackThemeHeight + height: !control.horizontal ? control.position * parent.height : 2 // SliderTrackThemeHeight + + color: control.enabled ? control.Universal.accent : control.Universal.chromeDisabledHighColor + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/SpinBox.qml b/deployment_test/QtQuick/Controls.2/Universal/SpinBox.qml new file mode 100644 index 0000000000000000000000000000000000000000..dfe927f5829ac453ddfc33773f3506fe7ac3fdc3 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/SpinBox.qml @@ -0,0 +1,148 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Universal 2.12 + +T.SpinBox { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentItem.implicitWidth + 16 + + up.implicitIndicatorWidth + + down.implicitIndicatorWidth) + implicitHeight: Math.max(implicitContentHeight + topPadding + bottomPadding, + implicitBackgroundHeight, + up.implicitIndicatorHeight, + down.implicitIndicatorHeight) + + // TextControlThemePadding + 2 (border) + padding: 12 + topPadding: padding - 7 + leftPadding: padding + (control.mirrored ? (up.indicator ? up.indicator.width : 0) : (down.indicator ? down.indicator.width : 0)) + rightPadding: padding - 4 + (control.mirrored ? (down.indicator ? down.indicator.width : 0) : (up.indicator ? up.indicator.width : 0)) + bottomPadding: padding - 5 + + Universal.theme: activeFocus ? Universal.Light : undefined + + validator: IntValidator { + locale: control.locale.name + bottom: Math.min(control.from, control.to) + top: Math.max(control.from, control.to) + } + + contentItem: TextInput { + text: control.displayText + + font: control.font + color: !enabled ? control.Universal.chromeDisabledLowColor : + activeFocus ? control.Universal.chromeBlackHighColor : control.Universal.foreground + selectionColor: control.Universal.accent + selectedTextColor: control.Universal.chromeWhiteColor + horizontalAlignment: Qt.AlignHCenter + verticalAlignment: TextInput.AlignVCenter + + readOnly: !control.editable + validator: control.validator + inputMethodHints: control.inputMethodHints + } + + up.indicator: Item { + implicitWidth: 28 + height: parent.height + 4 + y: -2 + x: control.mirrored ? 0 : parent.width - width + + Rectangle { + x: 2; y: 4 + width: parent.width - 4 + height: parent.height - 8 + color: control.activeFocus ? control.Universal.accent : + control.up.pressed ? control.Universal.baseMediumLowColor : + control.up.hovered ? control.Universal.baseLowColor : "transparent" + visible: control.up.pressed || control.up.hovered + opacity: control.activeFocus && !control.up.pressed ? 0.4 : 1.0 + } + + ColorImage { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + color: !enabled ? control.Universal.chromeDisabledLowColor : + control.activeFocus ? control.Universal.chromeBlackHighColor : control.Universal.baseHighColor + source: "qrc:/qt-project.org/imports/QtQuick/Controls.2/Universal/images/" + (control.mirrored ? "left" : "right") + "arrow.png" + } + } + + down.indicator: Item { + implicitWidth: 28 + height: parent.height + 4 + y: -2 + x: control.mirrored ? parent.width - width : 0 + + Rectangle { + x: 2; y: 4 + width: parent.width - 4 + height: parent.height - 8 + color: control.activeFocus ? control.Universal.accent : + control.down.pressed ? control.Universal.baseMediumLowColor : + control.down.hovered ? control.Universal.baseLowColor : "transparent" + visible: control.down.pressed || control.down.hovered + opacity: control.activeFocus && !control.down.pressed ? 0.4 : 1.0 + } + + ColorImage { + x: (parent.width - width) / 2 + y: (parent.height - height) / 2 + color: !enabled ? control.Universal.chromeDisabledLowColor : + control.activeFocus ? control.Universal.chromeBlackHighColor : control.Universal.baseHighColor + source: "qrc:/qt-project.org/imports/QtQuick/Controls.2/Universal/images/" + (control.mirrored ? "right" : "left") + "arrow.png" + } + } + + background: Rectangle { + implicitWidth: 60 + 28 // TextControlThemeMinWidth - 4 (border) + implicitHeight: 28 // TextControlThemeMinHeight - 4 (border) + + border.width: 2 // TextControlBorderThemeThickness + border.color: !control.enabled ? control.Universal.baseLowColor : + control.activeFocus ? control.Universal.accent : + control.hovered ? control.Universal.baseMediumColor : control.Universal.chromeDisabledLowColor + color: control.enabled ? control.Universal.background : control.Universal.baseLowColor + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/SplitView.qml b/deployment_test/QtQuick/Controls.2/Universal/SplitView.qml new file mode 100644 index 0000000000000000000000000000000000000000..a4ed22ddc0c101be87e7aca3a44b38cd69878808 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/SplitView.qml @@ -0,0 +1,56 @@ +/**************************************************************************** +** +** Copyright (C) 2018 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.13 +import QtQuick.Templates 2.13 as T +import QtQuick.Controls 2.13 +import QtQuick.Controls.impl 2.13 +import QtQuick.Controls.Universal 2.13 + +T.SplitView { + id: control + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + handle: Rectangle { + implicitWidth: control.orientation === Qt.Horizontal ? 6 : control.width + implicitHeight: control.orientation === Qt.Horizontal ? control.height : 6 + color: T.SplitHandle.pressed ? control.Universal.baseMediumColor + : (T.SplitHandle.hovered ? control.Universal.baseMediumLowColor : control.Universal.chromeHighColor) + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/StackView.qml b/deployment_test/QtQuick/Controls.2/Universal/StackView.qml new file mode 100644 index 0000000000000000000000000000000000000000..5a3f7751eaa0791ea9eb1477ff043c1e13b4b759 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/StackView.qml @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Universal 2.12 + +T.StackView { + id: control + + popEnter: Transition { + ParallelAnimation { + NumberAnimation { property: "opacity"; from: 0; to: 1; duration: 200; easing.type: Easing.InQuint } + NumberAnimation { property: "x"; from: (control.mirrored ? -0.3 : 0.3) * -control.width; to: 0; duration: 400; easing.type: Easing.OutCubic } + } + } + + popExit: Transition { + NumberAnimation { property: "opacity"; from: 1; to: 0; duration: 200; easing.type: Easing.OutQuint } + } + + pushEnter: Transition { + ParallelAnimation { + NumberAnimation { property: "opacity"; from: 0; to: 1; duration: 200; easing.type: Easing.InQuint } + NumberAnimation { property: "x"; from: (control.mirrored ? -0.3 : 0.3) * control.width; to: 0; duration: 400; easing.type: Easing.OutCubic } + } + } + + pushExit: Transition { + NumberAnimation { property: "opacity"; from: 1; to: 0; duration: 200; easing.type: Easing.OutQuint } + } + + replaceEnter: Transition { + ParallelAnimation { + NumberAnimation { property: "opacity"; from: 0; to: 1; duration: 200; easing.type: Easing.InQuint } + NumberAnimation { property: "x"; from: (control.mirrored ? -0.3 : 0.3) * control.width; to: 0; duration: 400; easing.type: Easing.OutCubic } + } + } + + replaceExit: Transition { + NumberAnimation { property: "opacity"; from: 1; to: 0; duration: 200; easing.type: Easing.OutQuint } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/SwipeDelegate.qml b/deployment_test/QtQuick/Controls.2/Universal/SwipeDelegate.qml new file mode 100644 index 0000000000000000000000000000000000000000..066049a789759d2028737987bb019f75a225e44f --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/SwipeDelegate.qml @@ -0,0 +1,93 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Universal 2.12 + +T.SwipeDelegate { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + spacing: 12 + + padding: 12 + topPadding: padding - 1 + bottomPadding: padding + 1 + + icon.width: 20 + icon.height: 20 + icon.color: Color.transparent(Universal.foreground, enabled ? 1.0 : 0.2) + + swipe.transition: Transition { SmoothedAnimation { velocity: 3; easing.type: Easing.InOutCubic } } + + contentItem: IconLabel { + spacing: control.spacing + mirrored: control.mirrored + display: control.display + alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft + + icon: control.icon + text: control.text + font: control.font + color: Color.transparent(control.Universal.foreground, enabled ? 1.0 : 0.2) + } + + background: Rectangle { + color: control.Universal.background + + Rectangle { + width: parent.width + height: parent.height + color: control.down ? control.Universal.listMediumColor : + control.hovered ? control.Universal.listLowColor : control.Universal.altMediumLowColor + Rectangle { + width: parent.width + height: parent.height + visible: control.visualFocus || control.highlighted + color: control.Universal.accent + opacity: control.Universal.theme === Universal.Light ? 0.4 : 0.6 + } + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/Switch.qml b/deployment_test/QtQuick/Controls.2/Universal/Switch.qml new file mode 100644 index 0000000000000000000000000000000000000000..284b122913508ddb5187163c49ab60eacee1ff36 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/Switch.qml @@ -0,0 +1,74 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Universal 2.12 +import QtQuick.Controls.Universal.impl 2.12 + +T.Switch { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + padding: 5 + spacing: 8 + + property bool useSystemFocusVisuals: true + + indicator: SwitchIndicator { + x: control.text ? (control.mirrored ? control.width - width - control.rightPadding : control.leftPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + control: control + } + + contentItem: Text { + leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0 + rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0 + + text: control.text + font: control.font + elide: Text.ElideRight + verticalAlignment: Text.AlignVCenter + + opacity: enabled ? 1.0 : 0.2 + color: control.Universal.foreground + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/SwitchDelegate.qml b/deployment_test/QtQuick/Controls.2/Universal/SwitchDelegate.qml new file mode 100644 index 0000000000000000000000000000000000000000..56ba849436f383254d10f1c103eff71d517be02c --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/SwitchDelegate.qml @@ -0,0 +1,97 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Universal 2.12 +import QtQuick.Controls.Universal.impl 2.12 + +T.SwitchDelegate { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding, + implicitIndicatorHeight + topPadding + bottomPadding) + + spacing: 12 + + padding: 12 + topPadding: padding - 1 + bottomPadding: padding + 1 + + icon.width: 20 + icon.height: 20 + icon.color: Color.transparent(Universal.foreground, enabled ? 1.0 : 0.2) + + indicator: SwitchIndicator { + x: control.text ? (control.mirrored ? control.leftPadding : control.width - width - control.rightPadding) : control.leftPadding + (control.availableWidth - width) / 2 + y: control.topPadding + (control.availableHeight - height) / 2 + control: control + } + + contentItem: IconLabel { + leftPadding: !control.mirrored ? 0 : control.indicator.width + control.spacing + rightPadding: control.mirrored ? 0 : control.indicator.width + control.spacing + + spacing: control.spacing + mirrored: control.mirrored + display: control.display + alignment: control.display === IconLabel.IconOnly || control.display === IconLabel.TextUnderIcon ? Qt.AlignCenter : Qt.AlignLeft + + icon: control.icon + text: control.text + font: control.font + color: Color.transparent(control.Universal.foreground, enabled ? 1.0 : 0.2) + } + + background: Rectangle { + visible: control.down || control.highlighted || control.visualFocus || control.hovered + color: control.down ? control.Universal.listMediumColor : + control.hovered ? control.Universal.listLowColor : control.Universal.altMediumLowColor + Rectangle { + width: parent.width + height: parent.height + visible: control.visualFocus || control.highlighted + color: control.Universal.accent + opacity: control.Universal.theme === Universal.Light ? 0.4 : 0.6 + } + + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/SwitchIndicator.qml b/deployment_test/QtQuick/Controls.2/Universal/SwitchIndicator.qml new file mode 100644 index 0000000000000000000000000000000000000000..10f39515bdde4a791baad4ed1c89620a257a77a3 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/SwitchIndicator.qml @@ -0,0 +1,81 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Universal 2.12 + +Item { + id: indicator + implicitWidth: 44 + implicitHeight: 20 + + Rectangle { + width: parent.width + height: parent.height + + radius: 10 + color: !indicator.control.enabled ? "transparent" : + indicator.control.pressed ? indicator.control.Universal.baseMediumColor : + indicator.control.checked ? indicator.control.Universal.accent : "transparent" + border.color: !indicator.control.enabled ? indicator.control.Universal.baseLowColor : + indicator.control.checked && !indicator.control.pressed ? indicator.control.Universal.accent : + indicator.control.hovered && !indicator.control.checked && !indicator.control.pressed ? indicator.control.Universal.baseHighColor : indicator.control.Universal.baseMediumColor + opacity: indicator.control.hovered && indicator.control.checked && !indicator.control.pressed ? (indicator.control.Universal.theme === Universal.Light ? 0.7 : 0.9) : 1.0 + border.width: 2 + } + + property Item control + + Rectangle { + width: 10 + height: 10 + radius: 5 + + color: !indicator.control.enabled ? indicator.control.Universal.baseLowColor : + indicator.control.pressed || indicator.control.checked ? indicator.control.Universal.chromeWhiteColor : + indicator.control.hovered && !indicator.control.checked ? indicator.control.Universal.baseHighColor : indicator.control.Universal.baseMediumHighColor + + x: Math.max(5, Math.min(parent.width - width - 5, + indicator.control.visualPosition * parent.width - (width / 2))) + y: (parent.height - height) / 2 + + Behavior on x { + enabled: !indicator.control.pressed + SmoothedAnimation { velocity: 200 } + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/TabBar.qml b/deployment_test/QtQuick/Controls.2/Universal/TabBar.qml new file mode 100644 index 0000000000000000000000000000000000000000..c7d27cbd21329dcf687e5849bf8323628042b82f --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/TabBar.qml @@ -0,0 +1,70 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Universal 2.12 + +T.TabBar { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + contentItem: ListView { + model: control.contentModel + currentIndex: control.currentIndex + + spacing: control.spacing + orientation: ListView.Horizontal + boundsBehavior: Flickable.StopAtBounds + flickableDirection: Flickable.AutoFlickIfNeeded + snapMode: ListView.SnapToItem + + highlightMoveDuration: 100 + highlightRangeMode: ListView.ApplyRange + preferredHighlightBegin: 48 + preferredHighlightEnd: width - 48 + } + + background: Rectangle { + implicitWidth: 200 + implicitHeight: 48 + color: control.Universal.background + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/TabButton.qml b/deployment_test/QtQuick/Controls.2/Universal/TabButton.qml new file mode 100644 index 0000000000000000000000000000000000000000..66e3d7255687c9b48045ed1ec5d693dad8be8b03 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/TabButton.qml @@ -0,0 +1,70 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Universal 2.12 + +T.TabButton { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + padding: 12 // PivotItemMargin + spacing: 8 + + icon.width: 20 + icon.height: 20 + icon.color: Color.transparent(control.hovered ? control.Universal.baseMediumHighColor : control.Universal.foreground, + control.checked || control.down || control.hovered ? 1.0 : 0.2) + + contentItem: IconLabel { + spacing: control.spacing + mirrored: control.mirrored + display: control.display + + icon: control.icon + text: control.text + font: control.font + color: Color.transparent(control.hovered ? control.Universal.baseMediumHighColor : control.Universal.foreground, + control.checked || control.down || control.hovered ? 1.0 : 0.2) + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/TextArea.qml b/deployment_test/QtQuick/Controls.2/Universal/TextArea.qml new file mode 100644 index 0000000000000000000000000000000000000000..03ad4a89ea9744f1184db357858195b381ddb84c --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/TextArea.qml @@ -0,0 +1,94 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Universal 2.12 + +T.TextArea { + id: control + + implicitWidth: Math.max(contentWidth + leftPadding + rightPadding, + implicitBackgroundWidth + leftInset + rightInset, + placeholder.implicitWidth + leftPadding + rightPadding) + implicitHeight: Math.max(contentHeight + topPadding + bottomPadding, + implicitBackgroundHeight + topInset + bottomInset, + placeholder.implicitHeight + topPadding + bottomPadding) + + // TextControlThemePadding + 2 (border) + padding: 12 + topPadding: padding - 7 + rightPadding: padding - 4 + bottomPadding: padding - 5 + + Universal.theme: activeFocus ? Universal.Light : undefined + + color: !enabled ? Universal.chromeDisabledLowColor : Universal.foreground + selectionColor: Universal.accent + selectedTextColor: Universal.chromeWhiteColor + placeholderTextColor: !enabled ? Universal.chromeDisabledLowColor : + activeFocus ? Universal.chromeBlackMediumLowColor : + Universal.baseMediumColor + + PlaceholderText { + id: placeholder + x: control.leftPadding + y: control.topPadding + width: control.width - (control.leftPadding + control.rightPadding) + height: control.height - (control.topPadding + control.bottomPadding) + + text: control.placeholderText + font: control.font + color: control.placeholderTextColor + visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter) + verticalAlignment: control.verticalAlignment + elide: Text.ElideRight + renderType: control.renderType + } + + background: Rectangle { + implicitWidth: 60 // TextControlThemeMinWidth - 4 (border) + implicitHeight: 28 // TextControlThemeMinHeight - 4 (border) + + border.width: 2 // TextControlBorderThemeThickness + border.color: !control.enabled ? control.Universal.baseLowColor : + control.activeFocus ? control.Universal.accent : + control.hovered ? control.Universal.baseMediumColor : control.Universal.chromeDisabledLowColor + color: control.enabled ? control.Universal.background : control.Universal.baseLowColor + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/TextField.qml b/deployment_test/QtQuick/Controls.2/Universal/TextField.qml new file mode 100644 index 0000000000000000000000000000000000000000..ba5bf685f8d68496509e7ee5f309ff90cae0a76f --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/TextField.qml @@ -0,0 +1,94 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Universal 2.12 + +T.TextField { + id: control + + implicitWidth: implicitBackgroundWidth + leftInset + rightInset + || Math.max(contentWidth, placeholder.implicitWidth) + leftPadding + rightPadding + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding, + placeholder.implicitHeight + topPadding + bottomPadding) + + // TextControlThemePadding + 2 (border) + padding: 12 + topPadding: padding - 7 + rightPadding: padding - 4 + bottomPadding: padding - 5 + + Universal.theme: activeFocus ? Universal.Light : undefined + + color: !enabled ? Universal.chromeDisabledLowColor : Universal.foreground + selectionColor: Universal.accent + selectedTextColor: Universal.chromeWhiteColor + placeholderTextColor: !enabled ? Universal.chromeDisabledLowColor : + activeFocus ? Universal.chromeBlackMediumLowColor : + Universal.baseMediumColor + verticalAlignment: TextInput.AlignVCenter + + PlaceholderText { + id: placeholder + x: control.leftPadding + y: control.topPadding + width: control.width - (control.leftPadding + control.rightPadding) + height: control.height - (control.topPadding + control.bottomPadding) + + text: control.placeholderText + font: control.font + color: control.placeholderTextColor + visible: !control.length && !control.preeditText && (!control.activeFocus || control.horizontalAlignment !== Qt.AlignHCenter) + verticalAlignment: control.verticalAlignment + elide: Text.ElideRight + renderType: control.renderType + } + + background: Rectangle { + implicitWidth: 60 // TextControlThemeMinWidth - 4 (border) + implicitHeight: 28 // TextControlThemeMinHeight - 4 (border) + + border.width: 2 // TextControlBorderThemeThickness + border.color: !control.enabled ? control.Universal.baseLowColor : + control.activeFocus ? control.Universal.accent : + control.hovered ? control.Universal.baseMediumColor : control.Universal.chromeDisabledLowColor + color: control.enabled ? control.Universal.background : control.Universal.baseLowColor + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/ToolBar.qml b/deployment_test/QtQuick/Controls.2/Universal/ToolBar.qml new file mode 100644 index 0000000000000000000000000000000000000000..5a385e8e4482cdd463ef58c5ac33062f7cf77fed --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/ToolBar.qml @@ -0,0 +1,53 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Universal 2.12 + +T.ToolBar { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + background: Rectangle { + implicitHeight: 48 // AppBarThemeCompactHeight + color: control.Universal.chromeMediumColor + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/ToolButton.qml b/deployment_test/QtQuick/Controls.2/Universal/ToolButton.qml new file mode 100644 index 0000000000000000000000000000000000000000..f36dac2286a8cc22775ebd065d99f43aaec16996 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/ToolButton.qml @@ -0,0 +1,84 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 +import QtQuick.Controls.Universal 2.12 + +T.ToolButton { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + padding: 6 + spacing: 8 + + icon.width: 20 + icon.height: 20 + icon.color: Color.transparent(Universal.foreground, enabled ? 1.0 : 0.2) + + property bool useSystemFocusVisuals: true + + contentItem: IconLabel { + spacing: control.spacing + mirrored: control.mirrored + display: control.display + + icon: control.icon + text: control.text + font: control.font + color: Color.transparent(control.Universal.foreground, enabled ? 1.0 : 0.2) + } + + background: Rectangle { + implicitWidth: 68 + implicitHeight: 48 // AppBarThemeCompactHeight + + color: control.enabled && (control.highlighted || control.checked) ? control.Universal.accent : "transparent" + + Rectangle { + width: parent.width + height: parent.height + visible: control.down || control.hovered + color: control.down ? control.Universal.listMediumColor : control.Universal.listLowColor + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/ToolSeparator.qml b/deployment_test/QtQuick/Controls.2/Universal/ToolSeparator.qml new file mode 100644 index 0000000000000000000000000000000000000000..ee8e6e1cbd052d9bcad14940957037a4deb56914 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/ToolSeparator.qml @@ -0,0 +1,59 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Universal 2.12 + +T.ToolSeparator { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) + + leftPadding: vertical ? 16 : 12 + rightPadding: vertical ? 15 : 12 + topPadding: vertical ? 12 : 16 + bottomPadding: vertical ? 12 : 15 + + contentItem: Rectangle { + implicitWidth: vertical ? 1 : 20 + implicitHeight: vertical ? 20 : 1 + color: control.Universal.baseMediumLowColor + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/ToolTip.qml b/deployment_test/QtQuick/Controls.2/Universal/ToolTip.qml new file mode 100644 index 0000000000000000000000000000000000000000..431cdf7c18770fd44e5535f360be739d4bce70e4 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/ToolTip.qml @@ -0,0 +1,72 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Universal 2.12 + +T.ToolTip { + id: control + + x: parent ? (parent.width - implicitWidth) / 2 : 0 + y: -implicitHeight - 16 + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + contentWidth + leftPadding + rightPadding) + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + contentHeight + topPadding + bottomPadding) + + margins: 8 + padding: 8 + topPadding: padding - 3 + bottomPadding: padding - 1 + + closePolicy: T.Popup.CloseOnEscape | T.Popup.CloseOnPressOutsideParent | T.Popup.CloseOnReleaseOutsideParent + + contentItem: Text { + text: control.text + font: control.font + wrapMode: Text.Wrap + opacity: enabled ? 1.0 : 0.2 + color: control.Universal.foreground + } + + background: Rectangle { + color: control.Universal.chromeMediumLowColor + border.color: control.Universal.chromeHighColor + border.width: 1 // ToolTipBorderThemeThickness + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/Tumbler.qml b/deployment_test/QtQuick/Controls.2/Universal/Tumbler.qml new file mode 100644 index 0000000000000000000000000000000000000000..d0e7b12fdbd8f33a2ba53dd12540cf57d495aec4 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/Tumbler.qml @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2017 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.12 +import QtQuick.Templates 2.12 as T +import QtQuick.Controls.Universal 2.12 +import QtQuick.Controls 2.12 +import QtQuick.Controls.impl 2.12 + +T.Tumbler { + id: control + + implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, + implicitContentWidth + leftPadding + rightPadding) || 60 // ### remove 60 in Qt 6 + implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, + implicitContentHeight + topPadding + bottomPadding) || 200 // ### remove 200 in Qt 6 + + delegate: Text { + text: modelData + font: control.font + color: control.Universal.foreground + opacity: (1.0 - Math.abs(Tumbler.displacement) / (control.visibleItemCount / 2)) * (control.enabled ? 1 : 0.6) + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + } + + contentItem: TumblerView { + implicitWidth: 60 + implicitHeight: 200 + model: control.model + delegate: control.delegate + path: Path { + startX: control.contentItem.width / 2 + startY: -control.contentItem.delegateHeight / 2 + PathLine { + x: control.contentItem.width / 2 + y: (control.visibleItemCount + 1) * control.contentItem.delegateHeight - control.contentItem.delegateHeight / 2 + } + } + + property real delegateHeight: control.availableHeight / control.visibleItemCount + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/VerticalHeaderView.qml b/deployment_test/QtQuick/Controls.2/Universal/VerticalHeaderView.qml new file mode 100644 index 0000000000000000000000000000000000000000..04408d68a338b9660bc1b5831fd8ab5949620308 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/VerticalHeaderView.qml @@ -0,0 +1,70 @@ +/**************************************************************************** +** +** Copyright (C) 2020 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.15 +import QtQuick.Controls 2.15 +import QtQuick.Controls.impl 2.15 +import QtQuick.Templates 2.15 as T +import QtQuick.Controls.Universal 2.15 +import QtQuick.Controls.Universal.impl 2.15 + +T.VerticalHeaderView { + id: control + + implicitWidth: contentWidth + implicitHeight: syncView ? syncView.height : 0 + + delegate: Rectangle { + // Qt6: add cellPadding (and font etc) as public API in headerview + readonly property real cellPadding: 8 + + implicitWidth: Math.max(control.width, text.implicitWidth + (cellPadding * 2)) + implicitHeight: text.implicitHeight + (cellPadding * 2) + color: control.Universal.background + + Text { + id: text + text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] + : model[control.textRole]) + : modelData + width: parent.width + height: parent.height + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + color: Color.transparent(control.Universal.foreground, enabled ? 1.0 : 0.2) + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/plugins.qmltypes b/deployment_test/QtQuick/Controls.2/Universal/plugins.qmltypes new file mode 100644 index 0000000000000000000000000000000000000000..c38e39e1aa268688ea3e67ccfab62acd529d58fe --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/plugins.qmltypes @@ -0,0 +1,340 @@ +import QtQuick.tooling 1.2 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. +// +// This file was auto-generated by: +// 'qmlplugindump -nonrelocatable -dependencies dependencies.json QtQuick.Controls.Universal 2.15' + +Module { + dependencies: ["QtQuick.Controls 2.0"] + Component { name: "QQuickAttachedObject"; prototype: "QObject" } + Component { + name: "QQuickItem" + defaultProperty: "data" + prototype: "QObject" + Enum { + name: "Flags" + values: { + "ItemClipsChildrenToShape": 1, + "ItemAcceptsInputMethod": 2, + "ItemIsFocusScope": 4, + "ItemHasContents": 8, + "ItemAcceptsDrops": 16 + } + } + Enum { + name: "TransformOrigin" + values: { + "TopLeft": 0, + "Top": 1, + "TopRight": 2, + "Left": 3, + "Center": 4, + "Right": 5, + "BottomLeft": 6, + "Bottom": 7, + "BottomRight": 8 + } + } + Property { name: "parent"; type: "QQuickItem"; isPointer: true } + Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "resources"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "children"; type: "QQuickItem"; isList: true; isReadonly: true } + Property { name: "x"; type: "double" } + Property { name: "y"; type: "double" } + Property { name: "z"; type: "double" } + Property { name: "width"; type: "double" } + Property { name: "height"; type: "double" } + Property { name: "opacity"; type: "double" } + Property { name: "enabled"; type: "bool" } + Property { name: "visible"; type: "bool" } + Property { name: "visibleChildren"; type: "QQuickItem"; isList: true; isReadonly: true } + Property { name: "states"; type: "QQuickState"; isList: true; isReadonly: true } + Property { name: "transitions"; type: "QQuickTransition"; isList: true; isReadonly: true } + Property { name: "state"; type: "string" } + Property { name: "childrenRect"; type: "QRectF"; isReadonly: true } + Property { name: "anchors"; type: "QQuickAnchors"; isReadonly: true; isPointer: true } + Property { name: "left"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "right"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "horizontalCenter"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "top"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "bottom"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "verticalCenter"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "baseline"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "baselineOffset"; type: "double" } + Property { name: "clip"; type: "bool" } + Property { name: "focus"; type: "bool" } + Property { name: "activeFocus"; type: "bool"; isReadonly: true } + Property { name: "activeFocusOnTab"; revision: 1; type: "bool" } + Property { name: "rotation"; type: "double" } + Property { name: "scale"; type: "double" } + Property { name: "transformOrigin"; type: "TransformOrigin" } + Property { name: "transformOriginPoint"; type: "QPointF"; isReadonly: true } + Property { name: "transform"; type: "QQuickTransform"; isList: true; isReadonly: true } + Property { name: "smooth"; type: "bool" } + Property { name: "antialiasing"; type: "bool" } + Property { name: "implicitWidth"; type: "double" } + Property { name: "implicitHeight"; type: "double" } + Property { name: "containmentMask"; revision: 11; type: "QObject"; isPointer: true } + Property { name: "layer"; type: "QQuickItemLayer"; isReadonly: true; isPointer: true } + Signal { + name: "childrenRectChanged" + Parameter { type: "QRectF" } + } + Signal { + name: "baselineOffsetChanged" + Parameter { type: "double" } + } + Signal { + name: "stateChanged" + Parameter { type: "string" } + } + Signal { + name: "focusChanged" + Parameter { type: "bool" } + } + Signal { + name: "activeFocusChanged" + Parameter { type: "bool" } + } + Signal { + name: "activeFocusOnTabChanged" + revision: 1 + Parameter { type: "bool" } + } + Signal { + name: "parentChanged" + Parameter { type: "QQuickItem"; isPointer: true } + } + Signal { + name: "transformOriginChanged" + Parameter { type: "TransformOrigin" } + } + Signal { + name: "smoothChanged" + Parameter { type: "bool" } + } + Signal { + name: "antialiasingChanged" + Parameter { type: "bool" } + } + Signal { + name: "clipChanged" + Parameter { type: "bool" } + } + Signal { + name: "windowChanged" + revision: 1 + Parameter { name: "window"; type: "QQuickWindow"; isPointer: true } + } + Signal { name: "containmentMaskChanged"; revision: 11 } + Method { name: "update" } + Method { + name: "grabToImage" + revision: 4 + type: "bool" + Parameter { name: "callback"; type: "QJSValue" } + Parameter { name: "targetSize"; type: "QSize" } + } + Method { + name: "grabToImage" + revision: 4 + type: "bool" + Parameter { name: "callback"; type: "QJSValue" } + } + Method { + name: "contains" + type: "bool" + Parameter { name: "point"; type: "QPointF" } + } + Method { + name: "mapFromItem" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "mapToItem" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "mapFromGlobal" + revision: 7 + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "mapToGlobal" + revision: 7 + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { name: "forceActiveFocus" } + Method { + name: "forceActiveFocus" + Parameter { name: "reason"; type: "Qt::FocusReason" } + } + Method { + name: "nextItemInFocusChain" + revision: 1 + type: "QQuickItem*" + Parameter { name: "forward"; type: "bool" } + } + Method { name: "nextItemInFocusChain"; revision: 1; type: "QQuickItem*" } + Method { + name: "childAt" + type: "QQuickItem*" + Parameter { name: "x"; type: "double" } + Parameter { name: "y"; type: "double" } + } + } + Component { + name: "QQuickPaintedItem" + defaultProperty: "data" + prototype: "QQuickItem" + Enum { + name: "RenderTarget" + values: { + "Image": 0, + "FramebufferObject": 1, + "InvertedYFramebufferObject": 2 + } + } + Enum { + name: "PerformanceHints" + values: { + "FastFBOResizing": 1 + } + } + Property { name: "contentsSize"; type: "QSize" } + Property { name: "fillColor"; type: "QColor" } + Property { name: "contentsScale"; type: "double" } + Property { name: "renderTarget"; type: "RenderTarget" } + Property { name: "textureSize"; type: "QSize" } + } + Component { + name: "QQuickUniversalBusyIndicator" + defaultProperty: "data" + prototype: "QQuickItem" + exports: ["QtQuick.Controls.Universal.impl/BusyIndicatorImpl 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "count"; type: "int" } + Property { name: "color"; type: "QColor" } + } + Component { + name: "QQuickUniversalFocusRectangle" + defaultProperty: "data" + prototype: "QQuickPaintedItem" + exports: ["QtQuick.Controls.Universal.impl/FocusRectangle 2.0"] + exportMetaObjectRevisions: [0] + } + Component { + name: "QQuickUniversalProgressBar" + defaultProperty: "data" + prototype: "QQuickItem" + exports: ["QtQuick.Controls.Universal.impl/ProgressBarImpl 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "color"; type: "QColor" } + Property { name: "progress"; type: "double" } + Property { name: "indeterminate"; type: "bool" } + } + Component { + name: "QQuickUniversalStyle" + prototype: "QQuickAttachedObject" + exports: ["QtQuick.Controls.Universal/Universal 2.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Enum { + name: "Theme" + values: { + "Light": 0, + "Dark": 1, + "System": 2 + } + } + Enum { + name: "Color" + values: { + "Lime": 0, + "Green": 1, + "Emerald": 2, + "Teal": 3, + "Cyan": 4, + "Cobalt": 5, + "Indigo": 6, + "Violet": 7, + "Pink": 8, + "Magenta": 9, + "Crimson": 10, + "Red": 11, + "Orange": 12, + "Amber": 13, + "Yellow": 14, + "Brown": 15, + "Olive": 16, + "Steel": 17, + "Mauve": 18, + "Taupe": 19 + } + } + Property { name: "theme"; type: "Theme" } + Property { name: "accent"; type: "QVariant" } + Property { name: "foreground"; type: "QVariant" } + Property { name: "background"; type: "QVariant" } + Property { name: "altHighColor"; type: "QColor"; isReadonly: true } + Property { name: "altLowColor"; type: "QColor"; isReadonly: true } + Property { name: "altMediumColor"; type: "QColor"; isReadonly: true } + Property { name: "altMediumHighColor"; type: "QColor"; isReadonly: true } + Property { name: "altMediumLowColor"; type: "QColor"; isReadonly: true } + Property { name: "baseHighColor"; type: "QColor"; isReadonly: true } + Property { name: "baseLowColor"; type: "QColor"; isReadonly: true } + Property { name: "baseMediumColor"; type: "QColor"; isReadonly: true } + Property { name: "baseMediumHighColor"; type: "QColor"; isReadonly: true } + Property { name: "baseMediumLowColor"; type: "QColor"; isReadonly: true } + Property { name: "chromeAltLowColor"; type: "QColor"; isReadonly: true } + Property { name: "chromeBlackHighColor"; type: "QColor"; isReadonly: true } + Property { name: "chromeBlackLowColor"; type: "QColor"; isReadonly: true } + Property { name: "chromeBlackMediumLowColor"; type: "QColor"; isReadonly: true } + Property { name: "chromeBlackMediumColor"; type: "QColor"; isReadonly: true } + Property { name: "chromeDisabledHighColor"; type: "QColor"; isReadonly: true } + Property { name: "chromeDisabledLowColor"; type: "QColor"; isReadonly: true } + Property { name: "chromeHighColor"; type: "QColor"; isReadonly: true } + Property { name: "chromeLowColor"; type: "QColor"; isReadonly: true } + Property { name: "chromeMediumColor"; type: "QColor"; isReadonly: true } + Property { name: "chromeMediumLowColor"; type: "QColor"; isReadonly: true } + Property { name: "chromeWhiteColor"; type: "QColor"; isReadonly: true } + Property { name: "listLowColor"; type: "QColor"; isReadonly: true } + Property { name: "listMediumColor"; type: "QColor"; isReadonly: true } + Signal { name: "paletteChanged" } + Method { + name: "color" + type: "QColor" + Parameter { name: "color"; type: "Color" } + } + } + Component { + prototype: "QQuickRectangle" + name: "QtQuick.Controls.Universal.impl/CheckIndicator 2.0" + exports: ["QtQuick.Controls.Universal.impl/CheckIndicator 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "QQuickItem"; isPointer: true } + Property { name: "partiallyChecked"; type: "bool"; isReadonly: true } + } + Component { + prototype: "QQuickRectangle" + name: "QtQuick.Controls.Universal.impl/RadioIndicator 2.0" + exports: ["QtQuick.Controls.Universal.impl/RadioIndicator 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "QVariant" } + } + Component { + prototype: "QQuickItem" + name: "QtQuick.Controls.Universal.impl/SwitchIndicator 2.0" + exports: ["QtQuick.Controls.Universal.impl/SwitchIndicator 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "QQuickItem"; isPointer: true } + } +} diff --git a/deployment_test/QtQuick/Controls.2/Universal/qmldir b/deployment_test/QtQuick/Controls.2/Universal/qmldir new file mode 100644 index 0000000000000000000000000000000000000000..6870a4e10e1f1044229b53637b0d3ca65b11f085 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/Universal/qmldir @@ -0,0 +1,4 @@ +module QtQuick.Controls.Universal +plugin qtquickcontrols2universalstyleplugin +classname QtQuickControls2UniversalStylePlugin +depends QtQuick.Controls 2.5 diff --git a/deployment_test/QtQuick/Controls.2/Universal/qtquickcontrols2universalstyleplugin.dll b/deployment_test/QtQuick/Controls.2/Universal/qtquickcontrols2universalstyleplugin.dll new file mode 100644 index 0000000000000000000000000000000000000000..28f0ad2ee40bbdcf984f827b86e916d51e006c9b Binary files /dev/null and b/deployment_test/QtQuick/Controls.2/Universal/qtquickcontrols2universalstyleplugin.dll differ diff --git a/deployment_test/QtQuick/Controls.2/VerticalHeaderView.qml b/deployment_test/QtQuick/Controls.2/VerticalHeaderView.qml new file mode 100644 index 0000000000000000000000000000000000000000..3fc9ca5acea3b9059627fe2a71f9924db097876b --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/VerticalHeaderView.qml @@ -0,0 +1,68 @@ +/**************************************************************************** +** +** Copyright (C) 2020 The Qt Company Ltd. +** Contact: http://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls 2 module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL3$ +** 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 http://www.qt.io/terms-conditions. For further +** information use the contact form at http://www.qt.io/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPLv3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or later as published by the Free +** Software Foundation and appearing in the file LICENSE.GPL included in +** the packaging of this file. Please review the following information to +** ensure the GNU General Public License version 2.0 requirements will be +** met: http://www.gnu.org/licenses/gpl-2.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.15 +import QtQuick.Controls 2.15 +import QtQuick.Templates 2.15 as T + +T.VerticalHeaderView { + id: control + + implicitWidth: contentWidth + implicitHeight: syncView ? syncView.height : 0 + + delegate: Rectangle { + // Qt6: add cellPadding (and font etc) as public API in headerview + readonly property real cellPadding: 8 + + implicitWidth: Math.max(control.width, text.implicitWidth + (cellPadding * 2)) + implicitHeight: text.implicitHeight + (cellPadding * 2) + color: "#f6f6f6" + border.color: "#e4e4e4" + + Text { + id: text + text: control.textRole ? (Array.isArray(control.model) ? modelData[control.textRole] + : model[control.textRole]) + : modelData + width: parent.width + height: parent.height + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + color: "#ff26282a" + } + } +} diff --git a/deployment_test/QtQuick/Controls.2/plugins.qmltypes b/deployment_test/QtQuick/Controls.2/plugins.qmltypes new file mode 100644 index 0000000000000000000000000000000000000000..e8212c55f66ec5a035f0d8af58f42ad75a093530 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/plugins.qmltypes @@ -0,0 +1,895 @@ +import QtQuick.tooling 1.2 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. +// +// This file was auto-generated by: +// 'qmlplugindump -nonrelocatable -dependencies dependencies.json QtQuick.Controls 2.15' + +Module { + dependencies: [ + "QtQuick 2.11", + "QtQuick.Templates 2.5", + "QtQuick.Window 2.2" + ] + Component { + name: "QQuickCheckLabel" + defaultProperty: "data" + prototype: "QQuickText" + exports: ["QtQuick.Controls.impl/CheckLabel 2.3"] + exportMetaObjectRevisions: [0] + } + Component { + name: "QQuickClippedText" + defaultProperty: "data" + prototype: "QQuickText" + exports: ["QtQuick.Controls.impl/ClippedText 2.2"] + exportMetaObjectRevisions: [0] + Property { name: "clipX"; type: "double" } + Property { name: "clipY"; type: "double" } + Property { name: "clipWidth"; type: "double" } + Property { name: "clipHeight"; type: "double" } + } + Component { + name: "QQuickColor" + prototype: "QObject" + exports: ["QtQuick.Controls.impl/Color 2.3"] + isCreatable: false + isSingleton: true + exportMetaObjectRevisions: [0] + Method { + name: "transparent" + type: "QColor" + Parameter { name: "color"; type: "QColor" } + Parameter { name: "opacity"; type: "double" } + } + Method { + name: "blend" + type: "QColor" + Parameter { name: "a"; type: "QColor" } + Parameter { name: "b"; type: "QColor" } + Parameter { name: "factor"; type: "double" } + } + } + Component { + name: "QQuickColorImage" + defaultProperty: "data" + prototype: "QQuickImage" + exports: ["QtQuick.Controls.impl/ColorImage 2.3"] + exportMetaObjectRevisions: [0] + Property { name: "color"; type: "QColor" } + Property { name: "defaultColor"; type: "QColor" } + } + Component { + name: "QQuickDefaultBusyIndicator" + defaultProperty: "data" + prototype: "QQuickItem" + exports: ["QtQuick.Controls.impl/BusyIndicatorImpl 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "pen"; type: "QColor" } + Property { name: "fill"; type: "QColor" } + Property { name: "running"; type: "bool" } + } + Component { + name: "QQuickDefaultDial" + defaultProperty: "data" + prototype: "QQuickPaintedItem" + exports: ["QtQuick.Controls.impl/DialImpl 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "progress"; type: "double" } + Property { name: "color"; type: "QColor" } + } + Component { + name: "QQuickDefaultProgressBar" + defaultProperty: "data" + prototype: "QQuickItem" + exports: ["QtQuick.Controls.impl/ProgressBarImpl 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "indeterminate"; type: "bool" } + Property { name: "progress"; type: "double" } + Property { name: "color"; type: "QColor" } + } + Component { + name: "QQuickDefaultStyle" + prototype: "QObject" + exports: ["QtQuick.Controls.impl/Default 2.1"] + isCreatable: false + isSingleton: true + exportMetaObjectRevisions: [0] + Property { name: "backgroundColor"; type: "QColor"; isReadonly: true } + Property { name: "overlayModalColor"; type: "QColor"; isReadonly: true } + Property { name: "overlayDimColor"; type: "QColor"; isReadonly: true } + Property { name: "textColor"; type: "QColor"; isReadonly: true } + Property { name: "textDarkColor"; type: "QColor"; isReadonly: true } + Property { name: "textLightColor"; type: "QColor"; isReadonly: true } + Property { name: "textLinkColor"; type: "QColor"; isReadonly: true } + Property { name: "textSelectionColor"; type: "QColor"; isReadonly: true } + Property { name: "textDisabledColor"; type: "QColor"; isReadonly: true } + Property { name: "textDisabledLightColor"; type: "QColor"; isReadonly: true } + Property { name: "textPlaceholderColor"; type: "QColor"; isReadonly: true } + Property { name: "focusColor"; type: "QColor"; isReadonly: true } + Property { name: "focusLightColor"; type: "QColor"; isReadonly: true } + Property { name: "focusPressedColor"; type: "QColor"; isReadonly: true } + Property { name: "buttonColor"; type: "QColor"; isReadonly: true } + Property { name: "buttonPressedColor"; type: "QColor"; isReadonly: true } + Property { name: "buttonCheckedColor"; type: "QColor"; isReadonly: true } + Property { name: "buttonCheckedPressedColor"; type: "QColor"; isReadonly: true } + Property { name: "buttonCheckedFocusColor"; type: "QColor"; isReadonly: true } + Property { name: "toolButtonColor"; type: "QColor"; isReadonly: true } + Property { name: "tabButtonColor"; type: "QColor"; isReadonly: true } + Property { name: "tabButtonPressedColor"; type: "QColor"; isReadonly: true } + Property { name: "tabButtonCheckedPressedColor"; type: "QColor"; isReadonly: true } + Property { name: "delegateColor"; type: "QColor"; isReadonly: true } + Property { name: "delegatePressedColor"; type: "QColor"; isReadonly: true } + Property { name: "delegateFocusColor"; type: "QColor"; isReadonly: true } + Property { name: "indicatorPressedColor"; type: "QColor"; isReadonly: true } + Property { name: "indicatorDisabledColor"; type: "QColor"; isReadonly: true } + Property { name: "indicatorFrameColor"; type: "QColor"; isReadonly: true } + Property { name: "indicatorFramePressedColor"; type: "QColor"; isReadonly: true } + Property { name: "indicatorFrameDisabledColor"; type: "QColor"; isReadonly: true } + Property { name: "frameDarkColor"; type: "QColor"; isReadonly: true } + Property { name: "frameLightColor"; type: "QColor"; isReadonly: true } + Property { name: "scrollBarColor"; type: "QColor"; isReadonly: true } + Property { name: "scrollBarPressedColor"; type: "QColor"; isReadonly: true } + Property { name: "progressBarColor"; type: "QColor"; isReadonly: true } + Property { name: "pageIndicatorColor"; type: "QColor"; isReadonly: true } + Property { name: "separatorColor"; type: "QColor"; isReadonly: true } + Property { name: "disabledDarkColor"; type: "QColor"; isReadonly: true } + Property { name: "disabledLightColor"; type: "QColor"; isReadonly: true } + } + Component { + name: "QQuickIconImage" + defaultProperty: "data" + prototype: "QQuickImage" + exports: ["QtQuick.Controls.impl/IconImage 2.3"] + exportMetaObjectRevisions: [0] + Property { name: "name"; type: "string" } + Property { name: "color"; type: "QColor" } + } + Component { + name: "QQuickIconLabel" + defaultProperty: "data" + prototype: "QQuickItem" + exports: ["QtQuick.Controls.impl/IconLabel 2.3"] + exportMetaObjectRevisions: [0] + Enum { + name: "Display" + values: { + "IconOnly": 0, + "TextOnly": 1, + "TextBesideIcon": 2, + "TextUnderIcon": 3 + } + } + Property { name: "icon"; type: "QQuickIcon" } + Property { name: "text"; type: "string" } + Property { name: "font"; type: "QFont" } + Property { name: "color"; type: "QColor" } + Property { name: "display"; type: "Display" } + Property { name: "spacing"; type: "double" } + Property { name: "mirrored"; type: "bool" } + Property { name: "alignment"; type: "Qt::Alignment" } + Property { name: "topPadding"; type: "double" } + Property { name: "leftPadding"; type: "double" } + Property { name: "rightPadding"; type: "double" } + Property { name: "bottomPadding"; type: "double" } + } + Component { + name: "QQuickImplicitSizeItem" + defaultProperty: "data" + prototype: "QQuickItem" + Property { name: "implicitWidth"; type: "double"; isReadonly: true } + Property { name: "implicitHeight"; type: "double"; isReadonly: true } + } + Component { + name: "QQuickItemGroup" + defaultProperty: "data" + prototype: "QQuickImplicitSizeItem" + exports: ["QtQuick.Controls.impl/ItemGroup 2.2"] + exportMetaObjectRevisions: [0] + } + Component { + name: "QQuickMnemonicLabel" + defaultProperty: "data" + prototype: "QQuickText" + exports: ["QtQuick.Controls.impl/MnemonicLabel 2.3"] + exportMetaObjectRevisions: [0] + Property { name: "text"; type: "string" } + Property { name: "mnemonicVisible"; type: "bool" } + } + Component { + name: "QQuickOverlay" + defaultProperty: "data" + prototype: "QQuickItem" + exports: ["QtQuick.Controls/Overlay 2.3"] + isCreatable: false + exportMetaObjectRevisions: [0] + attachedType: "QQuickOverlayAttached" + Property { name: "modal"; type: "QQmlComponent"; isPointer: true } + Property { name: "modeless"; type: "QQmlComponent"; isPointer: true } + Signal { name: "pressed" } + Signal { name: "released" } + } + Component { + name: "QQuickPaddedRectangle" + defaultProperty: "data" + prototype: "QQuickRectangle" + exports: ["QtQuick.Controls.impl/PaddedRectangle 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "padding"; type: "double" } + Property { name: "topPadding"; type: "double" } + Property { name: "leftPadding"; type: "double" } + Property { name: "rightPadding"; type: "double" } + Property { name: "bottomPadding"; type: "double" } + } + Component { + name: "QQuickPlaceholderText" + defaultProperty: "data" + prototype: "QQuickText" + exports: ["QtQuick.Controls.impl/PlaceholderText 2.2"] + exportMetaObjectRevisions: [0] + } + Component { + name: "QQuickSplitHandleAttached" + prototype: "QObject" + exports: ["QtQuick.Controls/SplitHandle 2.13"] + isCreatable: false + exportMetaObjectRevisions: [0] + Property { name: "hovered"; type: "bool"; isReadonly: true } + Property { name: "pressed"; type: "bool"; isReadonly: true } + } + Component { + name: "QQuickText" + defaultProperty: "data" + prototype: "QQuickImplicitSizeItem" + Enum { + name: "HAlignment" + values: { + "AlignLeft": 1, + "AlignRight": 2, + "AlignHCenter": 4, + "AlignJustify": 8 + } + } + Enum { + name: "VAlignment" + values: { + "AlignTop": 32, + "AlignBottom": 64, + "AlignVCenter": 128 + } + } + Enum { + name: "TextStyle" + values: { + "Normal": 0, + "Outline": 1, + "Raised": 2, + "Sunken": 3 + } + } + Enum { + name: "TextFormat" + values: { + "PlainText": 0, + "RichText": 1, + "MarkdownText": 3, + "AutoText": 2, + "StyledText": 4 + } + } + Enum { + name: "TextElideMode" + values: { + "ElideLeft": 0, + "ElideRight": 1, + "ElideMiddle": 2, + "ElideNone": 3 + } + } + Enum { + name: "WrapMode" + values: { + "NoWrap": 0, + "WordWrap": 1, + "WrapAnywhere": 3, + "WrapAtWordBoundaryOrAnywhere": 4, + "Wrap": 4 + } + } + Enum { + name: "RenderType" + values: { + "QtRendering": 0, + "NativeRendering": 1 + } + } + Enum { + name: "LineHeightMode" + values: { + "ProportionalHeight": 0, + "FixedHeight": 1 + } + } + Enum { + name: "FontSizeMode" + values: { + "FixedSize": 0, + "HorizontalFit": 1, + "VerticalFit": 2, + "Fit": 3 + } + } + Property { name: "text"; type: "string" } + Property { name: "font"; type: "QFont" } + Property { name: "color"; type: "QColor" } + Property { name: "linkColor"; type: "QColor" } + Property { name: "style"; type: "TextStyle" } + Property { name: "styleColor"; type: "QColor" } + Property { name: "horizontalAlignment"; type: "HAlignment" } + Property { name: "effectiveHorizontalAlignment"; type: "HAlignment"; isReadonly: true } + Property { name: "verticalAlignment"; type: "VAlignment" } + Property { name: "wrapMode"; type: "WrapMode" } + Property { name: "lineCount"; type: "int"; isReadonly: true } + Property { name: "truncated"; type: "bool"; isReadonly: true } + Property { name: "maximumLineCount"; type: "int" } + Property { name: "textFormat"; type: "TextFormat" } + Property { name: "elide"; type: "TextElideMode" } + Property { name: "contentWidth"; type: "double"; isReadonly: true } + Property { name: "contentHeight"; type: "double"; isReadonly: true } + Property { name: "paintedWidth"; type: "double"; isReadonly: true } + Property { name: "paintedHeight"; type: "double"; isReadonly: true } + Property { name: "lineHeight"; type: "double" } + Property { name: "lineHeightMode"; type: "LineHeightMode" } + Property { name: "baseUrl"; type: "QUrl" } + Property { name: "minimumPixelSize"; type: "int" } + Property { name: "minimumPointSize"; type: "int" } + Property { name: "fontSizeMode"; type: "FontSizeMode" } + Property { name: "renderType"; type: "RenderType" } + Property { name: "hoveredLink"; revision: 2; type: "string"; isReadonly: true } + Property { name: "padding"; revision: 6; type: "double" } + Property { name: "topPadding"; revision: 6; type: "double" } + Property { name: "leftPadding"; revision: 6; type: "double" } + Property { name: "rightPadding"; revision: 6; type: "double" } + Property { name: "bottomPadding"; revision: 6; type: "double" } + Property { name: "fontInfo"; revision: 9; type: "QJSValue"; isReadonly: true } + Property { name: "advance"; revision: 10; type: "QSizeF"; isReadonly: true } + Signal { + name: "textChanged" + Parameter { name: "text"; type: "string" } + } + Signal { + name: "linkActivated" + Parameter { name: "link"; type: "string" } + } + Signal { + name: "linkHovered" + revision: 2 + Parameter { name: "link"; type: "string" } + } + Signal { + name: "fontChanged" + Parameter { name: "font"; type: "QFont" } + } + Signal { + name: "styleChanged" + Parameter { name: "style"; type: "QQuickText::TextStyle" } + } + Signal { + name: "horizontalAlignmentChanged" + Parameter { name: "alignment"; type: "QQuickText::HAlignment" } + } + Signal { + name: "verticalAlignmentChanged" + Parameter { name: "alignment"; type: "QQuickText::VAlignment" } + } + Signal { + name: "textFormatChanged" + Parameter { name: "textFormat"; type: "QQuickText::TextFormat" } + } + Signal { + name: "elideModeChanged" + Parameter { name: "mode"; type: "QQuickText::TextElideMode" } + } + Signal { name: "contentSizeChanged" } + Signal { + name: "contentWidthChanged" + Parameter { name: "contentWidth"; type: "double" } + } + Signal { + name: "contentHeightChanged" + Parameter { name: "contentHeight"; type: "double" } + } + Signal { + name: "lineHeightChanged" + Parameter { name: "lineHeight"; type: "double" } + } + Signal { + name: "lineHeightModeChanged" + Parameter { name: "mode"; type: "LineHeightMode" } + } + Signal { + name: "lineLaidOut" + Parameter { name: "line"; type: "QQuickTextLine"; isPointer: true } + } + Signal { name: "paddingChanged"; revision: 6 } + Signal { name: "topPaddingChanged"; revision: 6 } + Signal { name: "leftPaddingChanged"; revision: 6 } + Signal { name: "rightPaddingChanged"; revision: 6 } + Signal { name: "bottomPaddingChanged"; revision: 6 } + Signal { name: "fontInfoChanged"; revision: 9 } + Method { name: "doLayout" } + Method { name: "forceLayout"; revision: 9 } + Method { + name: "linkAt" + revision: 3 + type: "string" + Parameter { name: "x"; type: "double" } + Parameter { name: "y"; type: "double" } + } + } + Component { + name: "QQuickTumblerView" + defaultProperty: "data" + prototype: "QQuickItem" + exports: ["QtQuick.Controls.impl/TumblerView 2.1"] + exportMetaObjectRevisions: [0] + Property { name: "model"; type: "QVariant" } + Property { name: "delegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "path"; type: "QQuickPath"; isPointer: true } + } + Component { + prototype: "QQuickAbstractButton" + name: "QtQuick.Controls/AbstractButton 2.0" + exports: ["QtQuick.Controls/AbstractButton 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickAction" + name: "QtQuick.Controls/Action 2.3" + exports: ["QtQuick.Controls/Action 2.3"] + exportMetaObjectRevisions: [3] + isComposite: true + } + Component { + prototype: "QQuickActionGroup" + name: "QtQuick.Controls/ActionGroup 2.3" + exports: ["QtQuick.Controls/ActionGroup 2.3"] + exportMetaObjectRevisions: [3] + isComposite: true + defaultProperty: "actions" + } + Component { + prototype: "QQuickApplicationWindow" + name: "QtQuick.Controls/ApplicationWindow 2.0" + exports: ["QtQuick.Controls/ApplicationWindow 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "contentData" + } + Component { + prototype: "QQuickBusyIndicator" + name: "QtQuick.Controls/BusyIndicator 2.0" + exports: ["QtQuick.Controls/BusyIndicator 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickButton" + name: "QtQuick.Controls/Button 2.0" + exports: ["QtQuick.Controls/Button 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickButtonGroup" + name: "QtQuick.Controls/ButtonGroup 2.0" + exports: ["QtQuick.Controls/ButtonGroup 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + } + Component { + prototype: "QQuickCheckBox" + name: "QtQuick.Controls/CheckBox 2.0" + exports: ["QtQuick.Controls/CheckBox 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickCheckDelegate" + name: "QtQuick.Controls/CheckDelegate 2.0" + exports: ["QtQuick.Controls/CheckDelegate 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickComboBox" + name: "QtQuick.Controls/ComboBox 2.0" + exports: ["QtQuick.Controls/ComboBox 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickContainer" + name: "QtQuick.Controls/Container 2.0" + exports: ["QtQuick.Controls/Container 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "contentData" + } + Component { + prototype: "QQuickControl" + name: "QtQuick.Controls/Control 2.0" + exports: ["QtQuick.Controls/Control 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickDelayButton" + name: "QtQuick.Controls/DelayButton 2.2" + exports: ["QtQuick.Controls/DelayButton 2.2"] + exportMetaObjectRevisions: [2] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickDial" + name: "QtQuick.Controls/Dial 2.0" + exports: ["QtQuick.Controls/Dial 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickDialog" + name: "QtQuick.Controls/Dialog 2.1" + exports: ["QtQuick.Controls/Dialog 2.1"] + exportMetaObjectRevisions: [1] + isComposite: true + defaultProperty: "contentData" + } + Component { + prototype: "QQuickDialogButtonBox" + name: "QtQuick.Controls/DialogButtonBox 2.1" + exports: ["QtQuick.Controls/DialogButtonBox 2.1"] + exportMetaObjectRevisions: [1] + isComposite: true + defaultProperty: "contentData" + } + Component { + prototype: "QQuickDrawer" + name: "QtQuick.Controls/Drawer 2.0" + exports: ["QtQuick.Controls/Drawer 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "contentData" + } + Component { + prototype: "QQuickFrame" + name: "QtQuick.Controls/Frame 2.0" + exports: ["QtQuick.Controls/Frame 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "contentData" + } + Component { + prototype: "QQuickGroupBox" + name: "QtQuick.Controls/GroupBox 2.0" + exports: ["QtQuick.Controls/GroupBox 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "contentData" + } + Component { + prototype: "QQuickHorizontalHeaderView" + name: "QtQuick.Controls/HorizontalHeaderView 2.15" + exports: ["QtQuick.Controls/HorizontalHeaderView 2.15"] + exportMetaObjectRevisions: [15] + isComposite: true + defaultProperty: "flickableData" + } + Component { + prototype: "QQuickItemDelegate" + name: "QtQuick.Controls/ItemDelegate 2.0" + exports: ["QtQuick.Controls/ItemDelegate 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickLabel" + name: "QtQuick.Controls/Label 2.0" + exports: ["QtQuick.Controls/Label 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickMenu" + name: "QtQuick.Controls/Menu 2.0" + exports: ["QtQuick.Controls/Menu 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "contentData" + } + Component { + prototype: "QQuickMenuBar" + name: "QtQuick.Controls/MenuBar 2.3" + exports: ["QtQuick.Controls/MenuBar 2.3"] + exportMetaObjectRevisions: [3] + isComposite: true + defaultProperty: "contentData" + } + Component { + prototype: "QQuickMenuBarItem" + name: "QtQuick.Controls/MenuBarItem 2.3" + exports: ["QtQuick.Controls/MenuBarItem 2.3"] + exportMetaObjectRevisions: [3] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickMenuItem" + name: "QtQuick.Controls/MenuItem 2.0" + exports: ["QtQuick.Controls/MenuItem 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickMenuSeparator" + name: "QtQuick.Controls/MenuSeparator 2.1" + exports: ["QtQuick.Controls/MenuSeparator 2.1"] + exportMetaObjectRevisions: [1] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickPage" + name: "QtQuick.Controls/Page 2.0" + exports: ["QtQuick.Controls/Page 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "contentData" + } + Component { + prototype: "QQuickPageIndicator" + name: "QtQuick.Controls/PageIndicator 2.0" + exports: ["QtQuick.Controls/PageIndicator 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickPane" + name: "QtQuick.Controls/Pane 2.0" + exports: ["QtQuick.Controls/Pane 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "contentData" + } + Component { + prototype: "QQuickPopup" + name: "QtQuick.Controls/Popup 2.0" + exports: ["QtQuick.Controls/Popup 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "contentData" + } + Component { + prototype: "QQuickProgressBar" + name: "QtQuick.Controls/ProgressBar 2.0" + exports: ["QtQuick.Controls/ProgressBar 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickRadioButton" + name: "QtQuick.Controls/RadioButton 2.0" + exports: ["QtQuick.Controls/RadioButton 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickRadioDelegate" + name: "QtQuick.Controls/RadioDelegate 2.0" + exports: ["QtQuick.Controls/RadioDelegate 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickRangeSlider" + name: "QtQuick.Controls/RangeSlider 2.0" + exports: ["QtQuick.Controls/RangeSlider 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickRoundButton" + name: "QtQuick.Controls/RoundButton 2.1" + exports: ["QtQuick.Controls/RoundButton 2.1"] + exportMetaObjectRevisions: [1] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickScrollBar" + name: "QtQuick.Controls/ScrollBar 2.0" + exports: ["QtQuick.Controls/ScrollBar 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickScrollIndicator" + name: "QtQuick.Controls/ScrollIndicator 2.0" + exports: ["QtQuick.Controls/ScrollIndicator 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickScrollView" + name: "QtQuick.Controls/ScrollView 2.2" + exports: ["QtQuick.Controls/ScrollView 2.2"] + exportMetaObjectRevisions: [2] + isComposite: true + defaultProperty: "contentData" + } + Component { + prototype: "QQuickSlider" + name: "QtQuick.Controls/Slider 2.0" + exports: ["QtQuick.Controls/Slider 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickSpinBox" + name: "QtQuick.Controls/SpinBox 2.0" + exports: ["QtQuick.Controls/SpinBox 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickSplitView" + name: "QtQuick.Controls/SplitView 2.13" + exports: ["QtQuick.Controls/SplitView 2.13"] + exportMetaObjectRevisions: [13] + isComposite: true + defaultProperty: "contentData" + } + Component { + prototype: "QQuickStackView" + name: "QtQuick.Controls/StackView 2.0" + exports: ["QtQuick.Controls/StackView 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickSwipeDelegate" + name: "QtQuick.Controls/SwipeDelegate 2.0" + exports: ["QtQuick.Controls/SwipeDelegate 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickSwipeView" + name: "QtQuick.Controls/SwipeView 2.0" + exports: ["QtQuick.Controls/SwipeView 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "contentData" + } + Component { + prototype: "QQuickSwitch" + name: "QtQuick.Controls/Switch 2.0" + exports: ["QtQuick.Controls/Switch 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickSwitchDelegate" + name: "QtQuick.Controls/SwitchDelegate 2.0" + exports: ["QtQuick.Controls/SwitchDelegate 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickTabBar" + name: "QtQuick.Controls/TabBar 2.0" + exports: ["QtQuick.Controls/TabBar 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "contentData" + } + Component { + prototype: "QQuickTabButton" + name: "QtQuick.Controls/TabButton 2.0" + exports: ["QtQuick.Controls/TabButton 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickTextArea" + name: "QtQuick.Controls/TextArea 2.0" + exports: ["QtQuick.Controls/TextArea 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickTextField" + name: "QtQuick.Controls/TextField 2.0" + exports: ["QtQuick.Controls/TextField 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickToolBar" + name: "QtQuick.Controls/ToolBar 2.0" + exports: ["QtQuick.Controls/ToolBar 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "contentData" + } + Component { + prototype: "QQuickToolButton" + name: "QtQuick.Controls/ToolButton 2.0" + exports: ["QtQuick.Controls/ToolButton 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickToolSeparator" + name: "QtQuick.Controls/ToolSeparator 2.1" + exports: ["QtQuick.Controls/ToolSeparator 2.1"] + exportMetaObjectRevisions: [1] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickToolTip" + name: "QtQuick.Controls/ToolTip 2.0" + exports: ["QtQuick.Controls/ToolTip 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "contentData" + } + Component { + prototype: "QQuickTumbler" + name: "QtQuick.Controls/Tumbler 2.0" + exports: ["QtQuick.Controls/Tumbler 2.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickVerticalHeaderView" + name: "QtQuick.Controls/VerticalHeaderView 2.15" + exports: ["QtQuick.Controls/VerticalHeaderView 2.15"] + exportMetaObjectRevisions: [15] + isComposite: true + defaultProperty: "flickableData" + } +} diff --git a/deployment_test/QtQuick/Controls.2/qmldir b/deployment_test/QtQuick/Controls.2/qmldir new file mode 100644 index 0000000000000000000000000000000000000000..c9ccb8f9f1051327780db8d6bf4174f623ec4884 --- /dev/null +++ b/deployment_test/QtQuick/Controls.2/qmldir @@ -0,0 +1,5 @@ +module QtQuick.Controls +plugin qtquickcontrols2plugin +classname QtQuickControls2Plugin +depends QtQuick.Templates 2.5 +designersupported diff --git a/deployment_test/QtQuick/Controls.2/qtquickcontrols2plugin.dll b/deployment_test/QtQuick/Controls.2/qtquickcontrols2plugin.dll new file mode 100644 index 0000000000000000000000000000000000000000..b0fc113a8a485a2fd3b7cf0d8762d3bc3052ce84 Binary files /dev/null and b/deployment_test/QtQuick/Controls.2/qtquickcontrols2plugin.dll differ diff --git a/deployment_test/QtQuick/Controls/ApplicationWindow.qml b/deployment_test/QtQuick/Controls/ApplicationWindow.qml new file mode 100644 index 0000000000000000000000000000000000000000..7d215556e3e6bed4a0ae913dcb4da03beccae4d6 --- /dev/null +++ b/deployment_test/QtQuick/Controls/ApplicationWindow.qml @@ -0,0 +1,265 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQml 2.14 as Qml +import QtQuick.Window 2.2 +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Layouts 1.0 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype ApplicationWindow + \since 5.1 + \inqmlmodule QtQuick.Controls + \ingroup applicationwindow + \ingroup controls + \brief Provides a top-level application window. + + \image applicationwindow.png + + ApplicationWindow is a \l Window that adds convenience for positioning items, + such as \l MenuBar, \l ToolBar, and \l StatusBar in a platform independent + manner. + + \code + ApplicationWindow { + id: window + visible: true + + menuBar: MenuBar { + Menu { MenuItem {...} } + Menu { MenuItem {...} } + } + + toolBar: ToolBar { + RowLayout { + anchors.fill: parent + ToolButton {...} + } + } + + TabView { + id: myContent + anchors.fill: parent + ... + } + } + \endcode + + \note By default, an ApplicationWindow is not visible. + + The \l{Qt Quick Controls 1 - Gallery} example is a good starting + point to explore this type. +*/ + +Window { + id: root + + /*! + \qmlproperty MenuBar ApplicationWindow::menuBar + + This property holds the \l MenuBar. + + By default, this value is not set. + */ + property MenuBar menuBar: null + + /*! + \qmlproperty Item ApplicationWindow::toolBar + + This property holds the toolbar \l Item. + + It can be set to any Item type, but is generally used with \l ToolBar. + + By default, this value is not set. When you set the toolbar item, it will + be anchored automatically into the application window. + */ + property Item toolBar + + /*! + \qmlproperty Item ApplicationWindow::statusBar + + This property holds the status bar \l Item. + + It can be set to any Item type, but is generally used with \l StatusBar. + + By default, this value is not set. When you set the status bar item, it + will be anchored automatically into the application window. + */ + property Item statusBar + + // The below documentation was supposed to be written as a grouped property, but qdoc would + // not render it correctly due to a bug (QTBUG-34206) + /*! + \qmlproperty ContentItem ApplicationWindow::contentItem + + This group holds the size constraints of the content item. This is the area between the + \l ToolBar and the \l StatusBar. + The \l ApplicationWindow will use this as input when calculating the effective size + constraints of the actual window. + It holds these 6 properties for describing the minimum, implicit and maximum sizes: + \table + \header \li Grouped property \li Description + \row \li contentItem.minimumWidth \li The minimum width of the content item. + \row \li contentItem.minimumHeight \li The minimum height of the content item. + \row \li contentItem.implicitWidth \li The implicit width of the content item. + \row \li contentItem.implicitHeight \li The implicit height of the content item. + \row \li contentItem.maximumWidth \li The maximum width of the content item. + \row \li contentItem.maximumHeight \li The maximum height of the content item. + \endtable + */ + property alias contentItem : contentArea + + /*! The style Component for the window. + \sa {Qt Quick Controls 1 Styles QML Types} + */ + property Component style: Settings.styleComponent(Settings.style, "ApplicationWindowStyle.qml", root) + + /*! \internal */ + property alias __style: styleLoader.item + + /*! \internal */ + property alias __panel: panelLoader.item + + /*! \internal */ + property real __topBottomMargins: __panel.contentArea.y + __panel.statusBarArea.height + /*! \internal + There is a similar macro QWINDOWSIZE_MAX in qwindow_p.h that is used to limit the + range of QWindow::maximum{Width,Height} + However, in case we have a very big number (> 2^31) conversion will fail, and it will be + converted to 0, resulting in that we will call setMaximumWidth(0).... + We therefore need to enforce the limit at a level where we are still operating on + floating point values. + */ + readonly property real __qwindowsize_max: (1 << 24) - 1 + + /*! \internal */ + property real __width: 0 + Qml.Binding { + target: root + property: "__width" + when: (root.minimumWidth <= root.maximumWidth) && !contentArea.__noImplicitWidthGiven + value: Math.max(Math.min(root.maximumWidth, contentArea.implicitWidth), root.minimumWidth) + restoreMode: Binding.RestoreBinding + } + /*! \internal */ + property real __height: 0 + Qml.Binding { + target: root + property: "__height" + when: (root.minimumHeight <= root.maximumHeight) && !contentArea.__noImplicitHeightGiven + value: Math.max(Math.min(root.maximumHeight, contentArea.implicitHeight + __topBottomMargins), root.minimumHeight) + restoreMode: Binding.RestoreBinding + } + /* As soon as an application developer writes + width: 200 + this binding will be broken. This is the reason for this indirection + via __width (and __height) + */ + width: __width + height: __height + + minimumWidth: contentArea.__noMinimumWidthGiven ? 0 : contentArea.minimumWidth + minimumHeight: contentArea.__noMinimumHeightGiven ? 0 : (contentArea.minimumHeight + __topBottomMargins) + + maximumWidth: Math.min(__qwindowsize_max, contentArea.maximumWidth) + maximumHeight: Math.min(__qwindowsize_max, contentArea.maximumHeight + __topBottomMargins) + + /*! \internal */ + default property alias data: contentArea.data + + flags: Qt.Window | Qt.WindowFullscreenButtonHint | + Qt.WindowTitleHint | Qt.WindowSystemMenuHint | Qt.WindowMinMaxButtonsHint | + Qt.WindowCloseButtonHint | Qt.WindowFullscreenButtonHint + // QTBUG-35049: Windows is removing features we didn't ask for, even though Qt::CustomizeWindowHint is not set + // Otherwise Qt.Window | Qt.WindowFullscreenButtonHint would be enough + + Loader { + id: panelLoader + anchors.fill: parent + sourceComponent: __style ? __style.panel : null + onStatusChanged: if (status === Loader.Error) console.error("Failed to load Style for", root) + focus: true + Loader { + id: styleLoader + sourceComponent: style + property var __control: root + property QtObject styleData: QtObject { + readonly property bool hasColor: root.color != "#ffffff" + } + onStatusChanged: if (status === Loader.Error) console.error("Failed to load Style for", root) + } + + Qml.Binding { + target: toolBar + property: "parent" + value: __panel.toolBarArea + restoreMode: Binding.RestoreBinding + } + Qml.Binding { + target: statusBar + property: "parent" + value: __panel.statusBarArea + restoreMode: Binding.RestoreBinding + } + + Qml.Binding { + property: "parent" + target: menuBar ? menuBar.__contentItem : null + when: menuBar && !menuBar.__isNative + value: __panel.menuBarArea + restoreMode: Binding.RestoreBinding + } + Qml.Binding { + target: menuBar + property: "__parentWindow" + value: root + restoreMode: Binding.RestoreBinding + } + + Keys.forwardTo: menuBar ? [menuBar.__contentItem, __panel] : [] + + ContentItem { + id: contentArea + anchors.fill: parent + parent: __panel.contentArea + } + } +} diff --git a/deployment_test/QtQuick/Controls/ApplicationWindow.qmlc b/deployment_test/QtQuick/Controls/ApplicationWindow.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..1d62e59f5dc0dbb365effcd90720283c9e5edb19 Binary files /dev/null and b/deployment_test/QtQuick/Controls/ApplicationWindow.qmlc differ diff --git a/deployment_test/QtQuick/Controls/BusyIndicator.qml b/deployment_test/QtQuick/Controls/BusyIndicator.qml new file mode 100644 index 0000000000000000000000000000000000000000..6c9972ad5636944fbb56e073668b9cd42520c746 --- /dev/null +++ b/deployment_test/QtQuick/Controls/BusyIndicator.qml @@ -0,0 +1,85 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype BusyIndicator + \inqmlmodule QtQuick.Controls + \since 5.2 + \ingroup controls + \brief A busy indicator. + + \image busyindicator.png + + The busy indicator should be used to indicate activity while content is + being loaded or the UI is blocked waiting for a resource to become available. + + The following snippet shows how to use the BusyIndicator: + + \qml + BusyIndicator { + running: image.status === Image.Loading + } + \endqml + + You can create a custom appearance for a Busy Indicator by + assigning a \l {BusyIndicatorStyle}. + */ +Control { + id: indicator + + /*! \qmlproperty bool BusyIndicator::running + + This property holds whether the busy indicator is currently indicating + activity. + + \note The indicator is only visible when this property is set to \c true. + + The default value is \c true. + */ + property bool running: true + + Accessible.role: Accessible.Indicator + Accessible.name: "busy" + + style: Settings.styleComponent(Settings.style, "BusyIndicatorStyle.qml", indicator) +} diff --git a/deployment_test/QtQuick/Controls/BusyIndicator.qmlc b/deployment_test/QtQuick/Controls/BusyIndicator.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..7d8ba9f56c828c9a1f7ab4d1dc987d8968547d2c Binary files /dev/null and b/deployment_test/QtQuick/Controls/BusyIndicator.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Button.qml b/deployment_test/QtQuick/Controls/Button.qml new file mode 100644 index 0000000000000000000000000000000000000000..c3f292381b25b36b795ef2d605ef0d693175a271 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Button.qml @@ -0,0 +1,134 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQml 2.14 as Qml +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype Button + \inqmlmodule QtQuick.Controls + \since 5.1 + \ingroup controls + \brief A push button with a text label. + + \image button.png + + The push button is perhaps the most commonly used widget in any graphical + user interface. Pushing (or clicking) a button commands the computer to + perform some action or answer a question. Common examples of buttons are + OK, Apply, Cancel, Close, Yes, No, and Help buttons. + + \qml + Button { + text: "Button" + } + \endqml + + Button is similar to the QPushButton widget. + + You can create a custom appearance for a Button by + assigning a \l {ButtonStyle}. + */ +BasicButton { + id: button + + /*! This property holds whether the push button is the default button. + Default buttons decide what happens when the user presses enter in a + dialog without giving a button explicit focus. \note This property only + changes the appearance of the button. The expected behavior needs to be + implemented by the user. + + The default value is \c false. + */ + property bool isDefault: false + + /*! Assign a \l Menu to this property to get a pull-down menu button. + + The default value is \c null. + */ + property Menu menu: null + + __effectivePressed: __behavior.effectivePressed || menu && menu.__popupVisible + + activeFocusOnTab: true + + Accessible.name: text + + style: Settings.styleComponent(Settings.style, "ButtonStyle.qml", button) + + Qml.Binding { + target: menu + property: "__minimumWidth" + value: button.__panel.width + restoreMode: Binding.RestoreBinding + } + + Qml.Binding { + target: menu + property: "__visualItem" + value: button + restoreMode: Binding.RestoreBinding + } + + Connections { + target: __behavior + function onEffectivePressedChanged() { + if (!Settings.hasTouchScreen && __behavior.effectivePressed && menu) + popupMenuTimer.start() + } + function onReleased() { + if (Settings.hasTouchScreen && __behavior.containsMouse && menu) + popupMenuTimer.start() + } + } + + Timer { + id: popupMenuTimer + interval: 10 + onTriggered: { + __behavior.keyPressed = false + if (Qt.application.layoutDirection === Qt.RightToLeft) + menu.__popup(Qt.rect(button.width, button.height, 0, 0), 0) + else + menu.__popup(Qt.rect(0, button.height, 0, 0), 0) + } + } +} diff --git a/deployment_test/QtQuick/Controls/Button.qmlc b/deployment_test/QtQuick/Controls/Button.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..eead900b461574b063d0fcb5114364aced6fd77e Binary files /dev/null and b/deployment_test/QtQuick/Controls/Button.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Calendar.qml b/deployment_test/QtQuick/Controls/Calendar.qml new file mode 100644 index 0000000000000000000000000000000000000000..bf3d6737deee359509338b93a473355c889f6250 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Calendar.qml @@ -0,0 +1,456 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.9 +import QtQuick.Controls 1.5 +import QtQuick.Controls.Styles 1.1 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype Calendar + \inqmlmodule QtQuick.Controls + \since 5.3 + \ingroup controls + \brief Provides a way to select dates from a calendar. + + \image calendar.png + + Calendar allows selection of dates from a grid of days, similar to + QCalendarWidget. + + The dates on the calendar can be selected with the mouse, or navigated + with the keyboard. + + The selected date can be set through \l selectedDate. + A minimum and maximum date can be set through \l minimumDate and + \l maximumDate. The earliest minimum date that can be set is 1 January, 1 + AD. The latest maximum date that can be set is 25 October, 275759 AD. + + \code + Calendar { + minimumDate: new Date(2017, 0, 1) + maximumDate: new Date(2018, 0, 1) + } + \endcode + + The selected date is displayed using the format in the application's + default locale. + + Week numbers can be displayed by setting the weekNumbersVisible property to + \c true. + + \qml + Calendar { + weekNumbersVisible: true + } + \endqml + + You can create a custom appearance for Calendar by assigning a + \l {CalendarStyle}. +*/ + +Control { + id: calendar + + /*! + \qmlproperty date Calendar::selectedDate + + The date that has been selected by the user. + + This property is subject to the following validation: + + \list + \li If selectedDate is outside the range of \l minimumDate and + \l maximumDate, it will be clamped to be within that range. + + \li selectedDate will not be changed if \c undefined or some other + invalid value is assigned. + + \li If there are hours, minutes, seconds or milliseconds set, they + will be removed. + \endlist + + The default value is the current date, which is equivalent to: + + \code + new Date() + \endcode + */ + property alias selectedDate: rangedDate.date + + /*! + \qmlproperty date Calendar::minimumDate + + The earliest date that this calendar will accept. + + By default, this property is set to the earliest minimum date + (1 January, 1 AD). + */ + property alias minimumDate: rangedDate.minimumDate + + /*! + \qmlproperty date Calendar::maximumDate + + The latest date that this calendar will accept. + + By default, this property is set to the latest maximum date + (25 October, 275759 AD). + */ + property alias maximumDate: rangedDate.maximumDate + + /*! + This property determines which month in visibleYear is shown on the + calendar. + + The month is from \c 0 to \c 11 to be consistent with the JavaScript + Date object. + + \sa visibleYear + */ + property int visibleMonth: selectedDate.getMonth() + + /*! + This property determines which year is shown on the + calendar. + + \sa visibleMonth + */ + property int visibleYear: selectedDate.getFullYear() + + onSelectedDateChanged: { + // When the selected date changes, the view should move back to that date. + visibleMonth = selectedDate.getMonth(); + visibleYear = selectedDate.getFullYear(); + } + + RangedDate { + id: rangedDate + date: new Date() + minimumDate: CalendarUtils.minimumCalendarDate + maximumDate: CalendarUtils.maximumCalendarDate + } + + /*! + This property determines the visibility of the frame + surrounding the calendar. + + The default value is \c true. + */ + property bool frameVisible: true + + /*! + This property determines the visibility of week numbers. + + The default value is \c false. + */ + property bool weekNumbersVisible: false + + /*! + This property determines the visibility of the navigation bar. + \since QtQuick.Controls 1.3 + + The default value is \c true. + */ + property bool navigationBarVisible: true + + /*! + \qmlproperty enum Calendar::dayOfWeekFormat + + The format in which the days of the week (in the header) are displayed. + + \c Locale.ShortFormat is the default and recommended format, as + \c Locale.NarrowFormat may not be fully supported by each locale (see + \l {Locale String Format Types}) and + \c Locale.LongFormat may not fit within the header cells. + */ + property int dayOfWeekFormat: Locale.ShortFormat + + /*! + \qmlproperty object Calendar::locale + \since QtQuick.Controls 1.6 + + This property controls the locale that this calendar uses to display + itself. + + The locale affects how dates and day names are localized, as well as + which day is considered the first in a week. + + The following example sets an Australian locale: + + \code + locale: Qt.locale("en_AU") + \endcode + + The default value is equivalent to \c Qt.locale(). + */ + property var locale: Qt.locale() + + // left for compatibility reasons; can be removed in next minor version/Qt 6 + property alias __locale: calendar.locale + + /*! + \internal + + This property holds the model that will be used by the Calendar to + populate the dates available to the user. + */ + property CalendarModel __model: CalendarModel { + locale: calendar.locale + + // TODO: don't set the hour when QTBUG-56787 is fixed + visibleDate: new Date(visibleYear, visibleMonth, 1, 12) + } + + style: Settings.styleComponent(Settings.style, "CalendarStyle.qml", calendar) + + /*! + \qmlsignal Calendar::hovered(date date) + + Emitted when the mouse hovers over a valid date in the calendar. + + \e date is the date that was hovered over. + + The corresponding handler is \c onHovered. + */ + signal hovered(date date) + + /*! + \qmlsignal Calendar::pressed(date date) + + Emitted when the mouse is pressed on a valid date in the calendar. + + This is also emitted when dragging the mouse to another date while it is pressed. + + \e date is the date that the mouse was pressed on. + + The corresponding handler is \c onPressed. + */ + signal pressed(date date) + + /*! + \qmlsignal Calendar::released(date date) + + Emitted when the mouse is released over a valid date in the calendar. + + \e date is the date that the mouse was released over. + + The corresponding handler is \c onReleased. + */ + signal released(date date) + + /*! + \qmlsignal Calendar::clicked(date date) + + Emitted when the mouse is clicked on a valid date in the calendar. + + \e date is the date that the mouse was clicked on. + + The corresponding handler is \c onClicked. + */ + signal clicked(date date) + + /*! + \qmlsignal Calendar::doubleClicked(date date) + + Emitted when the mouse is double-clicked on a valid date in the calendar. + + \e date is the date that the mouse was double-clicked on. + + The corresponding handler is \c onDoubleClicked. + */ + signal doubleClicked(date date) + + /*! + \qmlsignal Calendar::pressAndHold(date date) + \since QtQuick.Controls 1.3 + + Emitted when the mouse is pressed and held on a valid date in the calendar. + + \e date is the date that the mouse was pressed on. + + The corresponding handler is \c onPressAndHold. + */ + signal pressAndHold(date date) + + /*! + \qmlmethod void Calendar::showPreviousMonth() + Sets visibleMonth to the previous month. + */ + function showPreviousMonth() { + if (visibleMonth === 0) { + visibleMonth = CalendarUtils.monthsInAYear - 1; + --visibleYear; + } else { + --visibleMonth; + } + } + + /*! + \qmlmethod void Calendar::showNextMonth() + Sets visibleMonth to the next month. + */ + function showNextMonth() { + if (visibleMonth === CalendarUtils.monthsInAYear - 1) { + visibleMonth = 0; + ++visibleYear; + } else { + ++visibleMonth; + } + } + + /*! + \qmlmethod void Calendar::showPreviousYear() + Sets visibleYear to the previous year. + */ + function showPreviousYear() { + if (visibleYear - 1 >= minimumDate.getFullYear()) { + --visibleYear; + } + } + + /*! + \qmlmethod void Calendar::showNextYear() + Sets visibleYear to the next year. + */ + function showNextYear() { + if (visibleYear + 1 <= maximumDate.getFullYear()) { + ++visibleYear; + } + } + + /*! + Selects the month before the current month in \l selectedDate. + */ + function __selectPreviousMonth() { + calendar.selectedDate = CalendarUtils.setMonth(calendar.selectedDate, calendar.selectedDate.getMonth() - 1); + } + + /*! + Selects the month after the current month in \l selectedDate. + */ + function __selectNextMonth() { + calendar.selectedDate = CalendarUtils.setMonth(calendar.selectedDate, calendar.selectedDate.getMonth() + 1); + } + + /*! + Selects the week before the current week in \l selectedDate. + */ + function __selectPreviousWeek() { + var newDate = new Date(calendar.selectedDate); + newDate.setDate(newDate.getDate() - CalendarUtils.daysInAWeek); + calendar.selectedDate = newDate; + } + + /*! + Selects the week after the current week in \l selectedDate. + */ + function __selectNextWeek() { + var newDate = new Date(calendar.selectedDate); + newDate.setDate(newDate.getDate() + CalendarUtils.daysInAWeek); + calendar.selectedDate = newDate; + } + + /*! + Selects the first day of the current month in \l selectedDate. + */ + function __selectFirstDayOfMonth() { + var newDate = new Date(calendar.selectedDate); + newDate.setDate(1); + calendar.selectedDate = newDate; + } + + /*! + Selects the last day of the current month in \l selectedDate. + */ + function __selectLastDayOfMonth() { + var newDate = new Date(calendar.selectedDate); + newDate.setDate(CalendarUtils.daysInMonth(newDate)); + calendar.selectedDate = newDate; + } + + /*! + Selects the day before the current day in \l selectedDate. + */ + function __selectPreviousDay() { + var newDate = new Date(calendar.selectedDate); + newDate.setDate(newDate.getDate() - 1); + calendar.selectedDate = newDate; + } + + /*! + Selects the day after the current day in \l selectedDate. + */ + function __selectNextDay() { + var newDate = new Date(calendar.selectedDate); + newDate.setDate(newDate.getDate() + 1); + calendar.selectedDate = newDate; + } + + Keys.onLeftPressed: { + calendar.__selectPreviousDay(); + } + + Keys.onUpPressed: { + calendar.__selectPreviousWeek(); + } + + Keys.onDownPressed: { + calendar.__selectNextWeek(); + } + + Keys.onRightPressed: { + calendar.__selectNextDay(); + } + + Keys.onPressed: { + if (event.key === Qt.Key_Home) { + calendar.__selectFirstDayOfMonth(); + event.accepted = true; + } else if (event.key === Qt.Key_End) { + calendar.__selectLastDayOfMonth(); + event.accepted = true; + } else if (event.key === Qt.Key_PageUp) { + calendar.__selectPreviousMonth(); + event.accepted = true; + } else if (event.key === Qt.Key_PageDown) { + calendar.__selectNextMonth(); + event.accepted = true; + } + } +} diff --git a/deployment_test/QtQuick/Controls/Calendar.qmlc b/deployment_test/QtQuick/Controls/Calendar.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..0c6fe8b3d9161435ac29dc50ea2fd2429a504fc5 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Calendar.qmlc differ diff --git a/deployment_test/QtQuick/Controls/CheckBox.qml b/deployment_test/QtQuick/Controls/CheckBox.qml new file mode 100644 index 0000000000000000000000000000000000000000..d2448168b79c27df0b5c51ed1e859e5b2ae80078 --- /dev/null +++ b/deployment_test/QtQuick/Controls/CheckBox.qml @@ -0,0 +1,197 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype CheckBox + \inqmlmodule QtQuick.Controls + \since 5.1 + \ingroup controls + \brief A checkbox with a text label. + + \image checkbox.png + + A CheckBox is an option button that can be toggled on (checked) or off + (unchecked). Checkboxes are typically used to represent features in an + application that can be enabled or disabled without affecting others. + + The state of the checkbox can be set with the \l {AbstractCheckable::checked}{checked} property. + + In addition to the checked and unchecked states, there is a third state: + partially checked. This state indicates that the + regular checked/unchecked state can not be determined; generally because of + other states that affect the checkbox. This state is useful when several + child nodes are selected in a treeview, for example. + + The partially checked state can be made available to the user by setting + \l partiallyCheckedEnabled to \c true, or set directly by setting + \l checkedState to \c Qt.PartiallyChecked. \l checkedState behaves + identically to \l {AbstractCheckable::checked}{checked} when \l partiallyCheckedEnabled + is \c false; setting one will appropriately set the other. + + The label is shown next to the checkbox, and you can set the label text using its + \l {AbstractCheckable::text}{text} property. + + \qml + Column { + CheckBox { + text: qsTr("Breakfast") + checked: true + } + CheckBox { + text: qsTr("Lunch") + } + CheckBox { + text: qsTr("Dinner") + checked: true + } + } + \endqml + + Whenever a CheckBox is clicked, it emits the \l {AbstractCheckable::clicked}{clicked()} signal. + + You can create a custom appearance for a CheckBox by + assigning a \l {CheckBoxStyle}. +*/ + +AbstractCheckable { + id: checkBox + + /*! + \qmlproperty enumeration CheckBox::checkedState + + This property indicates the current checked state of the checkbox. + + Possible values: + \c Qt.UnChecked - The checkbox is not checked (default). + \c Qt.Checked - The checkbox is checked. + \c Qt.PartiallyChecked - The checkbox is in a partially checked (or + "mixed") state. + + The \l {AbstractCheckable::checked}{checked} property also determines whether + this property is \c Qt.Checked or \c Qt.UnChecked, and vice versa. + */ + property int checkedState: checked ? Qt.Checked : Qt.Unchecked + + /*! + This property determines whether the \c Qt.PartiallyChecked state is + available. + + A checkbox may be in a partially checked state when the regular checked + state can not be determined. + + Setting \l checkedState to \c Qt.PartiallyChecked will implicitly set + this property to \c true. + + If this property is \c true, \l {AbstractCheckable::checked}{checked} will be \c false. + + By default, this property is \c false. + */ + property bool partiallyCheckedEnabled: false + + /*! + \internal + True if onCheckedChanged should be ignored because we were reacting + to onCheckedStateChanged. + */ + property bool __ignoreChecked: false + + /*! + \internal + True if onCheckedStateChanged should be ignored because we were reacting + to onCheckedChanged. + */ + property bool __ignoreCheckedState: false + + style: Settings.styleComponent(Settings.style, "CheckBoxStyle.qml", checkBox) + + activeFocusOnTab: true + + Accessible.role: Accessible.CheckBox + Accessible.name: text + + __cycleStatesHandler: __cycleCheckBoxStates + + onCheckedChanged: { + if (!__ignoreChecked) { + __ignoreCheckedState = true; + checkedState = checked ? Qt.Checked : Qt.Unchecked; + __ignoreCheckedState = false; + } + } + + onCheckedStateChanged: { + __ignoreChecked = true; + if (checkedState === Qt.PartiallyChecked) { + partiallyCheckedEnabled = true; + checked = false; + } else if (!__ignoreCheckedState) { + checked = checkedState === Qt.Checked; + } + __ignoreChecked = false; + } + + onPartiallyCheckedEnabledChanged: { + if (exclusiveGroup && partiallyCheckedEnabled) { + console.warn("Cannot have partially checked boxes in an ExclusiveGroup."); + } + } + + onExclusiveGroupChanged: { + if (exclusiveGroup && partiallyCheckedEnabled) { + console.warn("Cannot have partially checked boxes in an ExclusiveGroup."); + } + } + + /*! \internal */ + function __cycleCheckBoxStates() { + if (!partiallyCheckedEnabled) { + checked = !checked; + } else { + switch (checkedState) { + case Qt.Unchecked: checkedState = Qt.Checked; break; + case Qt.Checked: checkedState = Qt.PartiallyChecked; break; + case Qt.PartiallyChecked: checkedState = Qt.Unchecked; break; + } + } + } +} diff --git a/deployment_test/QtQuick/Controls/CheckBox.qmlc b/deployment_test/QtQuick/Controls/CheckBox.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..5c0afdb566ba02df1380f62156c460755c911ec8 Binary files /dev/null and b/deployment_test/QtQuick/Controls/CheckBox.qmlc differ diff --git a/deployment_test/QtQuick/Controls/ComboBox.qml b/deployment_test/QtQuick/Controls/ComboBox.qml new file mode 100644 index 0000000000000000000000000000000000000000..b01cfe120edb7432d22e21e6e6d471824205d7c6 --- /dev/null +++ b/deployment_test/QtQuick/Controls/ComboBox.qml @@ -0,0 +1,717 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQml 2.14 as Qml +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype ComboBox + \inqmlmodule QtQuick.Controls + \since 5.1 + \ingroup controls + \brief Provides a drop-down list functionality. + + \image combobox.png + + Add items to the ComboBox by assigning it a ListModel, or a list of strings + to the \l model property. + + \qml + ComboBox { + width: 200 + model: [ "Banana", "Apple", "Coconut" ] + } + \endqml + + In this example we are demonstrating how to use a ListModel with a combo box. + + \qml + ComboBox { + currentIndex: 2 + model: ListModel { + id: cbItems + ListElement { text: "Banana"; color: "Yellow" } + ListElement { text: "Apple"; color: "Green" } + ListElement { text: "Coconut"; color: "Brown" } + } + width: 200 + onCurrentIndexChanged: console.debug(cbItems.get(currentIndex).text + ", " + cbItems.get(currentIndex).color) + } + \endqml + + You can make a combo box editable by setting the \l editable property. An editable combo box will + autocomplete its text based on what is available in the model. + + In the next example we demonstrate how you can append content to an editable combo box by + reacting to the \l accepted signal. Note that you have to explicitly prevent duplicates. + + \qml + ComboBox { + editable: true + model: ListModel { + id: model + ListElement { text: "Banana"; color: "Yellow" } + ListElement { text: "Apple"; color: "Green" } + ListElement { text: "Coconut"; color: "Brown" } + } + onAccepted: { + if (find(currentText) === -1) { + model.append({text: editText}) + currentIndex = find(editText) + } + } + } + \endqml + + + You can create a custom appearance for a ComboBox by + assigning a \l {ComboBoxStyle}. +*/ + +Control { + id: comboBox + + /*! \qmlproperty model ComboBox::model + The model to populate the ComboBox from. + + Changing the model after initialization will reset \l currentIndex to \c 0. + */ + property alias model: popupItems.model + + /*! The model role used for populating the ComboBox. */ + property string textRole: "" + + /*! \qmlproperty int ComboBox::currentIndex + The index of the currently selected item in the ComboBox. + + Setting currentIndex to \c -1 will reset the selection and clear the text + label. If \l editable is \c true, you may also need to manually clear \l editText. + + \sa model + */ + property alias currentIndex: popup.__selectedIndex + + /*! \qmlproperty string ComboBox::currentText + The text of the currently selected item in the ComboBox. + + \note Since \c currentText depends on \c currentIndex, there's no way to ensure \c currentText + will be up to date whenever a \c onCurrentIndexChanged handler is called. + */ + readonly property alias currentText: popup.currentText + + /*! This property holds whether the combo box can be edited by the user. + The default value is \c false. + \since QtQuick.Controls 1.1 + */ + property bool editable: false + + /*! \qmlproperty string ComboBox::editText + \since QtQuick.Controls 1.1 + This property specifies text being manipulated by the user for an editable combo box. + */ + property alias editText: input.text + + /*! \qmlproperty enumeration ComboBox::inputMethodHints + \since QtQuick.Controls 1.5 + Provides hints to the input method about the expected content of the combo box and how it + should operate. + + The value is a bit-wise combination of flags or \c Qt.ImhNone if no hints are set. + + Flags that alter behavior are: + + \list + \li Qt.ImhHiddenText - Characters should be hidden, as is typically used when entering passwords. + \li Qt.ImhSensitiveData - Typed text should not be stored by the active input method + in any persistent storage like predictive user dictionary. + \li Qt.ImhNoAutoUppercase - The input method should not try to automatically switch to upper case + when a sentence ends. + \li Qt.ImhPreferNumbers - Numbers are preferred (but not required). + \li Qt.ImhPreferUppercase - Upper case letters are preferred (but not required). + \li Qt.ImhPreferLowercase - Lower case letters are preferred (but not required). + \li Qt.ImhNoPredictiveText - Do not use predictive text (i.e. dictionary lookup) while typing. + + \li Qt.ImhDate - The text editor functions as a date field. + \li Qt.ImhTime - The text editor functions as a time field. + \endlist + + Flags that restrict input (exclusive flags) are: + + \list + \li Qt.ImhDigitsOnly - Only digits are allowed. + \li Qt.ImhFormattedNumbersOnly - Only number input is allowed. This includes decimal point and minus sign. + \li Qt.ImhUppercaseOnly - Only upper case letter input is allowed. + \li Qt.ImhLowercaseOnly - Only lower case letter input is allowed. + \li Qt.ImhDialableCharactersOnly - Only characters suitable for phone dialing are allowed. + \li Qt.ImhEmailCharactersOnly - Only characters suitable for email addresses are allowed. + \li Qt.ImhUrlCharactersOnly - Only characters suitable for URLs are allowed. + \endlist + + Masks: + + \list + \li Qt.ImhExclusiveInputMask - This mask yields nonzero if any of the exclusive flags are used. + \endlist + */ + property alias inputMethodHints: input.inputMethodHints + + /*! This property specifies whether the combobox should gain active focus when pressed. + The default value is \c false. */ + property bool activeFocusOnPress: false + + /*! \qmlproperty bool ComboBox::pressed + + This property holds whether the button is being pressed. */ + readonly property bool pressed: mouseArea.effectivePressed || popup.__popupVisible + + /*! \qmlproperty bool ComboBox::hovered + + This property indicates whether the control is being hovered. + */ + readonly property bool hovered: mouseArea.containsMouse || input.containsMouse + + /*! \qmlproperty int ComboBox::count + \since QtQuick.Controls 1.1 + This property holds the number of items in the combo box. + */ + readonly property alias count: popupItems.count + + /*! \qmlmethod string ComboBox::textAt(int index) + Returns the text for a given \a index. + If an invalid index is provided, \c null is returned + \since QtQuick.Controls 1.1 + */ + function textAt (index) { + if (index >= count || index < 0) + return null; + return popupItems.objectAt(index).text; + } + + /*! \qmlmethod int ComboBox::find(string text) + Finds and returns the index of a given \a text + If no match is found, \c -1 is returned. The search is case sensitive. + \since QtQuick.Controls 1.1 + */ + function find (text) { + return input.find(text, Qt.MatchExactly) + } + + /*! + \qmlproperty Validator ComboBox::validator + \since QtQuick.Controls 1.1 + + Allows you to set a text validator for an editable ComboBox. + When a validator is set, + the text field will only accept input which leaves the text property in + an intermediate state. The accepted signal will only be sent + if the text is in an acceptable state when enter is pressed. + + Currently supported validators are \l[QtQuick]{IntValidator}, + \l[QtQuick]{DoubleValidator}, and \l[QtQuick]{RegExpValidator}. An + example of using validators is shown below, which allows input of + integers between 11 and 31 into the text field: + + \note This property is only applied when \l editable is \c true + + \qml + import QtQuick 2.2 + import QtQuick.Controls 1.2 + + ComboBox { + editable: true + model: 10 + validator: IntValidator {bottom: 0; top: 10;} + focus: true + } + \endqml + + \sa acceptableInput, accepted, editable + */ + property alias validator: input.validator + + /*! + \since QtQuick.Controls 1.3 + + This property contains the edit \l Menu for working + with text selection. Set it to \c null if no menu + is wanted. + + \note The menu is only in use when \l editable is \c true + */ + property Component menu: input.editMenu.defaultMenu + + /*! + \qmlproperty bool ComboBox::acceptableInput + \since QtQuick.Controls 1.1 + + Returns \c true if the combo box contains acceptable + text in the editable text field. + + If a validator was set, this property will return \c + true if the current text satisfies the validator or mask as + a final string (not as an intermediate string). + + \sa validator, accepted + + */ + readonly property alias acceptableInput: input.acceptableInput + + /*! + \qmlproperty bool ComboBox::selectByMouse + \since QtQuick.Controls 1.3 + + This property determines if the user can select the text in + the editable text field with the mouse. + + The default value is \c true. + */ + property bool selectByMouse: true + + /*! + \qmlproperty bool ComboBox::inputMethodComposing + \since QtQuick.Controls 1.3 + + This property holds whether an editable ComboBox has partial text input from an input method. + + While it is composing an input method may rely on mouse or key events from the ComboBox + to edit or commit the partial text. This property can be used to determine when to disable + events handlers that may interfere with the correct operation of an input method. + */ + readonly property bool inputMethodComposing: !!input.inputMethodComposing + + /*! + \qmlsignal ComboBox::accepted() + \since QtQuick.Controls 1.1 + + This signal is emitted when the Return or Enter key is pressed on an + \l editable combo box. If the confirmed string is not currently in the model, + the currentIndex will be set to -1 and the \l currentText will be updated + accordingly. + + \note If there is a \l validator set on the combobox, + the signal will only be emitted if the input is in an acceptable state. + + The corresponding handler is \c onAccepted. + */ + signal accepted + + /*! + \qmlsignal ComboBox::activated(int index) + \since QtQuick.Controls 1.1 + + This signal is similar to currentIndex changed, but will only + be emitted if the combo box index was changed by the user, not + when set programmatically. + + \e index is the activated model index, or \c -1 if a new string is + accepted. + + The corresponding handler is \c onActivated. + */ + signal activated(int index) + + /*! + \qmlmethod void ComboBox::selectAll() + \since QtQuick.Controls 1.1 + + Causes all \l editText to be selected. + */ + function selectAll() { + input.selectAll() + } + + /*! \internal */ + function __selectPrevItem() { + input.blockUpdate = true + if (currentIndex > 0) { + currentIndex--; + input.text = popup.currentText; + activated(currentIndex); + } + input.blockUpdate = false; + } + + /*! \internal */ + function __selectNextItem() { + input.blockUpdate = true; + if (currentIndex < popupItems.count - 1) { + currentIndex++; + input.text = popup.currentText; + activated(currentIndex); + } + input.blockUpdate = false; + } + + /*! \internal */ + property var __popup: popup + + style: Settings.styleComponent(Settings.style, "ComboBoxStyle.qml", comboBox) + + activeFocusOnTab: true + + Accessible.name: editable ? editText : currentText + Accessible.role: Accessible.ComboBox + Accessible.editable: editable + + MouseArea { + id: mouseArea + property bool overridePressed: false + readonly property bool effectivePressed: (pressed || overridePressed) && containsMouse + anchors.fill: parent + hoverEnabled: Settings.hoverEnabled + onPressed: { + if (comboBox.activeFocusOnPress) + forceActiveFocus() + if (!Settings.hasTouchScreen) + popup.toggleShow() + else + overridePressed = true + } + onCanceled: overridePressed = false + onClicked: { + if (Settings.hasTouchScreen) + popup.toggleShow() + overridePressed = false + } + onWheel: { + if (wheel.angleDelta.y > 0) { + __selectPrevItem(); + } else if (wheel.angleDelta.y < 0){ + __selectNextItem(); + } + } + } + + Component.onCompleted: { + if (currentIndex === -1) + currentIndex = 0 + + popup.ready = true + popup.resolveTextValue(textRole) + } + + Keys.onPressed: { + // Perform one-character based lookup for non-editable combo box + if (!editable && event.text.length > 0) { + var index = input.find(event.text, Qt.MatchStartsWith); + if (index >= 0 && index !== currentIndex) { + currentIndex = index; + activated(currentIndex); + } + } + } + + TextInputWithHandles { + id: input + + visible: editable + enabled: editable + focus: true + clip: contentWidth > width + + control: comboBox + cursorHandle: __style ? __style.__cursorHandle : undefined + selectionHandle: __style ? __style.__selectionHandle : undefined + + anchors.fill: parent + anchors.leftMargin: __style ? __style.padding.left : 0 + anchors.topMargin: __style ? __style.padding.top : 0 + anchors.rightMargin: __style ? __panel.dropDownButtonWidth + __style.padding.right : 0 + anchors.bottomMargin: __style ? __style.padding.bottom: 0 + + verticalAlignment: Text.AlignVCenter + + font: __panel && __panel.font !== undefined ? __panel.font : TextSingleton.font + renderType: __style ? __style.renderType : Text.NativeRendering + color: __panel ? __panel.textColor : "black" + selectionColor: __panel ? __panel.selectionColor : "blue" + selectedTextColor: __panel ? __panel.selectedTextColor : "white" + onAccepted: { + var idx = input.find(editText, Qt.MatchFixedString) + if (idx > -1) { + editTextMatches = true; + currentIndex = idx; + editText = textAt(idx); + } else { + editTextMatches = false; + currentIndex = -1; + popup.currentText = editText; + } + comboBox.accepted(); + } + + property bool blockUpdate: false + property string prevText + property bool editTextMatches: true + + function find (text, searchType) { + for (var i = 0 ; i < popupItems.count ; ++i) { + var currentString = popupItems.objectAt(i).text + if (searchType === Qt.MatchExactly) { + if (text === currentString) + return i; + } else if (searchType === Qt.CaseSensitive) { + if (currentString.indexOf(text) === 0) + return i; + } else if (searchType === Qt.MatchFixedString) { + if (currentString.toLowerCase().indexOf(text.toLowerCase()) === 0 + && currentString.length === text.length) + return i; + } else if (currentString.toLowerCase().indexOf(text.toLowerCase()) === 0) { + return i + } + } + return -1; + } + + // Finds first entry and shortest entry. Used by editable combo + function tryComplete (inputText) { + var candidate = ""; + var shortestString = ""; + for (var i = 0 ; i < popupItems.count ; ++i) { + var currentString = popupItems.objectAt(i).text; + + if (currentString.toLowerCase().indexOf(inputText.toLowerCase()) === 0) { + if (candidate.length) { // Find smallest possible match + var cmp = 0; + + // We try to complete the shortest string that matches our search + if (currentString.length < candidate.length) + candidate = currentString + + while (cmp < Math.min(currentString.length, shortestString.length) + && shortestString[cmp].toLowerCase() === currentString[cmp].toLowerCase()) + cmp++; + shortestString = shortestString.substring(0, cmp); + } else { // First match, select as current index and find other matches + candidate = currentString; + shortestString = currentString; + } + } + } + + if (candidate.length) + return inputText + candidate.substring(inputText.length, candidate.length); + return inputText; + } + + property bool allowComplete: false + Keys.forwardTo: comboBox + Keys.onPressed: allowComplete = (event.key !== Qt.Key_Backspace && event.key !== Qt.Key_Delete); + + onTextChanged: { + if (editable && !blockUpdate && allowComplete && text.length > 0) { + var completed = input.tryComplete(text) + if (completed.length > text.length) { + var oldtext = input.text; + input.text = completed; + input.select(text.length, oldtext.length); + } + } + prevText = text + } + } + + Qml.Binding { + target: input + property: "text" + value: popup.currentText + when: input.editTextMatches + restoreMode: Binding.RestoreBinding + } + + onTextRoleChanged: popup.resolveTextValue(textRole) + + ExclusiveGroup { id: eg } + + Menu { + id: popup + objectName: "popup" + + style: isPopup ? __style.__popupStyle : __style.__dropDownStyle + + property string currentText: selectedText + onSelectedTextChanged: popup.currentText = selectedText + + property string selectedText + property int triggeredIndex: -1 + on__SelectedIndexChanged: { + if (__selectedIndex === -1) + popup.currentText = "" + else + updateSelectedText() + if (triggeredIndex >= 0 && triggeredIndex == __selectedIndex) { + activated(currentIndex) + triggeredIndex = -1 + } + } + property string textRole: "" + + property bool ready: false + property bool isPopup: !editable && !!__panel && __panel.popup + + property int y: isPopup ? (comboBox.__panel.height - comboBox.__panel.implicitHeight) / 2.0 : comboBox.__panel.height + __minimumWidth: comboBox.width + __visualItem: comboBox + + property bool modelIsArray: false + + Instantiator { + id: popupItems + active: false + + property bool updatingModel: false + onModelChanged: { + popup.modelIsArray = !!model ? model.constructor === Array : false + if (active) { + if (updatingModel && popup.__selectedIndex === 0) { + // We still want to update the currentText + popup.updateSelectedText() + } else { + updatingModel = true + popup.__selectedIndex = 0 + } + } + popup.resolveTextValue(comboBox.textRole) + } + + MenuItem { + text: popup.textRole === '' ? + modelData : + ((popup.modelIsArray ? modelData[popup.textRole] : model[popup.textRole]) || '') + onTriggered: { + popup.triggeredIndex = index + comboBox.editText = text + } + onTextChanged: if (index === currentIndex) popup.updateSelectedText(); + checkable: true + exclusiveGroup: eg + } + onObjectAdded: { + popup.insertItem(index, object) + if (!updatingModel && index === popup.__selectedIndex) + popup.selectedText = object["text"] + } + onObjectRemoved: popup.removeItem(object) + + } + + function resolveTextValue(initialTextRole) { + if (!ready || !model) { + popupItems.active = false + return; + } + + var get = model['get']; + if (!get && popup.modelIsArray && !!model[0]) { + if (model[0].constructor !== String && model[0].constructor !== Number) + get = function(i) { return model[i]; } + } + + var modelMayHaveRoles = get !== undefined + textRole = initialTextRole + if (textRole === "" && modelMayHaveRoles && get(0)) { + // No text role set, check whether model has a suitable role + // If 'text' is found, or there's only one role, pick that. + var listElement = get(0) + var roleName = "" + var roleCount = 0 + for (var role in listElement) { + if (listElement[role].constructor === Function) + continue; + if (role === "text") { + roleName = role + break + } else if (!roleName) { + roleName = role + } + ++roleCount + } + if (roleCount > 1 && roleName !== "text") { + console.warn("No suitable 'textRole' found for ComboBox.") + } else { + textRole = roleName + } + } + + if (!popupItems.active) + popupItems.active = true + else + updateSelectedText() + } + + function toggleShow() { + if (popup.__popupVisible) { + popup.__dismissAndDestroy() + } else { + if (items[__selectedIndex]) + items[__selectedIndex].checked = true + __currentIndex = comboBox.currentIndex + if (Qt.application.layoutDirection === Qt.RightToLeft) + __popup(Qt.rect(comboBox.width, y, 0, 0), isPopup ? __selectedIndex : 0) + else + __popup(Qt.rect(0, y, 0, 0), isPopup ? __selectedIndex : 0) + } + } + + function updateSelectedText() { + var selectedItem; + if (__selectedIndex !== -1 && (selectedItem = items[__selectedIndex])) { + input.editTextMatches = true + selectedText = Qt.binding(function () { return selectedItem.text }) + if (currentText !== selectedText) // __selectedIndex went form -1 to 0 + selectedTextChanged() + } + } + } + + // The key bindings below will only be in use when popup is + // not visible. Otherwise, native popup key handling will take place: + Keys.onSpacePressed: { + if (!editable) + popup.toggleShow() + else + event.accepted = false + } + + Keys.onUpPressed: __selectPrevItem() + Keys.onDownPressed: __selectNextItem() +} diff --git a/deployment_test/QtQuick/Controls/ComboBox.qmlc b/deployment_test/QtQuick/Controls/ComboBox.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..ab188cc3439aa3141ca72e2dbc00bec075674425 Binary files /dev/null and b/deployment_test/QtQuick/Controls/ComboBox.qmlc differ diff --git a/deployment_test/QtQuick/Controls/GroupBox.qml b/deployment_test/QtQuick/Controls/GroupBox.qml new file mode 100644 index 0000000000000000000000000000000000000000..0a414ed251b26f2d93079b21cdb2e14fe6cb0b07 --- /dev/null +++ b/deployment_test/QtQuick/Controls/GroupBox.qml @@ -0,0 +1,232 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 +import QtQuick.Controls.Styles 1.1 +import QtQuick.Layouts 1.0 + +/*! + \qmltype GroupBox + \inqmlmodule QtQuick.Controls + \since 5.1 + \ingroup controls + \brief GroupBox provides a group box frame with a title. + + \image groupbox.png + + A group box provides a frame, a title on top and displays various other controls inside itself. Group boxes can also be checkable. + + Child controls in checkable group boxes are enabled or disabled depending on whether or not the group box is checked. + + You can minimize the space consumption of a group box by enabling the flat property. + In most styles, enabling this property results in the removal of the left, right and bottom edges of the frame. + + To add content to a group box, you can reparent it to its contentItem property. + + The implicit size of the GroupBox is calculated based on the size of its content. If you want to anchor + items inside the group box, you must specify an explicit width and height on the GroupBox itself. + + The following example shows how we use a GroupBox: + + \qml + GroupBox { + title: "Joining for?" + + Column { + spacing: 10 + + CheckBox { + text: "Breakfast" + checked: true + } + CheckBox { + text: "Lunch" + checked: false + } + CheckBox { + text: "Dinner" + checked: true + } + } + } + \endqml + + \sa CheckBox, RadioButton, Layout + +*/ + +FocusScope { + id: groupbox + + /*! + This property holds the group box title text. + + There is no default title text. + */ + property string title + + /*! + This property holds whether the group box is painted flat or has a frame. + + A group box usually consists of a surrounding frame with a title at the top. + If this property is enabled, only the top part of the frame is drawn in most styles; + otherwise, the whole frame is drawn. + + By default, this property is disabled, so group boxes are not flat unless explicitly specified. + + \note In some styles, flat and non-flat group boxes have similar representations and may not be as + distinguishable as they are in other styles. + */ + property bool flat: false + + /*! + This property holds whether the group box has a checkbox in its title. + + If this property is true, the group box displays its title using a checkbox in place of an ordinary label. + If the checkbox is checked, the group box's children are enabled; otherwise, they are disabled and inaccessible. + + By default, group boxes are not checkable. + */ + property bool checkable: false + + /*! + \qmlproperty bool GroupBox::checked + + This property holds whether the group box is checked. + + If the group box is checkable, it is displayed with a check box. If the check box is checked, the group + box's children are enabled; otherwise, the children are disabled and are inaccessible to the user. + + By default, checkable group boxes are also checked. + */ + property alias checked: check.checked + + + /*! \internal */ + default property alias __content: container.data + + /*! + \qmlproperty Item GroupBox::contentItem + + This property holds the content Item of the group box. + + Items declared as children of a GroupBox are automatically parented to the GroupBox's contentItem. + Items created dynamically need to be explicitly parented to the contentItem: + + \note The implicit size of the GroupBox is calculated based on the size of its content. If you want to anchor + items inside the group box, you must specify an explicit width and height on the GroupBox itself. + */ + readonly property alias contentItem: container + + /*! \internal */ + property Component style: Settings.styleComponent(Settings.style, "GroupBoxStyle.qml", groupbox) + + /*! \internal */ + property alias __checkbox: check + + /*! \internal */ + property alias __style: styleLoader.item + + implicitWidth: Math.max((!anchors.fill ? container.calcWidth() : 0) + loader.leftMargin + loader.rightMargin, + sizeHint.implicitWidth + (checkable ? 24 : 6)) + implicitHeight: (!anchors.fill ? container.calcHeight() : 0) + loader.topMargin + loader.bottomMargin + + Layout.minimumWidth: implicitWidth + Layout.minimumHeight: implicitHeight + + Accessible.role: Accessible.Grouping + Accessible.name: title + + activeFocusOnTab: false + + + data: [ + Loader { + id: loader + anchors.fill: parent + property int topMargin: __style ? __style.padding.top : 0 + property int bottomMargin: __style ? __style.padding.bottom : 0 + property int leftMargin: __style ? __style.padding.left : 0 + property int rightMargin: __style ? __style.padding.right : 0 + sourceComponent: styleLoader.item ? styleLoader.item.panel : null + onLoaded: item.z = -1 + Text { id: sizeHint ; visible: false ; text: title } + Loader { + id: styleLoader + property alias __control: groupbox + sourceComponent: groupbox.style + } + }, + CheckBox { + id: check + objectName: "check" + checked: true + text: groupbox.title + visible: checkable + anchors.top: parent.top + anchors.left: parent.left + anchors.right: parent.right + height: loader.topMargin + activeFocusOnTab: groupbox.checkable + style: CheckBoxStyle { panel: Item{} } + }, + Item { + id: container + objectName: "container" + z: 1 + focus: true + anchors.fill: parent + + anchors.topMargin: loader.topMargin + anchors.leftMargin: loader.leftMargin + anchors.rightMargin: loader.rightMargin + anchors.bottomMargin: loader.bottomMargin + enabled: (!groupbox.checkable || groupbox.checked) + + property Item layoutItem: container.children.length === 1 ? container.children[0] : null + function calcWidth () { return (layoutItem ? (layoutItem.implicitWidth || layoutItem.width) + + (layoutItem.anchors.fill ? layoutItem.anchors.leftMargin + + layoutItem.anchors.rightMargin : 0) : container.childrenRect.width) } + function calcHeight () { return (layoutItem ? (layoutItem.implicitHeight || layoutItem.height) + + (layoutItem.anchors.fill ? layoutItem.anchors.topMargin + + layoutItem.anchors.bottomMargin : 0) : container.childrenRect.height) } + }] +} diff --git a/deployment_test/QtQuick/Controls/GroupBox.qmlc b/deployment_test/QtQuick/Controls/GroupBox.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..39d88b0ada2069fceab8b031d00e73505f971553 Binary files /dev/null and b/deployment_test/QtQuick/Controls/GroupBox.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Label.qml b/deployment_test/QtQuick/Controls/Label.qml new file mode 100644 index 0000000000000000000000000000000000000000..ea3f27b30e73b4807aa5cfde7c94a606c62e9c7f --- /dev/null +++ b/deployment_test/QtQuick/Controls/Label.qml @@ -0,0 +1,92 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype Label + \inqmlmodule QtQuick.Controls + \since 5.1 + \ingroup controls + \brief A text label. + + \image label.png + + In addition to the normal \l Text type, Label follows the font and + color scheme of the system. + Use the \c text property to assign a text to the label. For other properties + check \l Text. + + A simple label looks like this: + \qml + Label { + text: "Hello world" + } + \endqml + + You can use the properties of \l Text to change the appearance + of the text as desired: + \qml + Label { + text: "Hello world" + font.pixelSize: 22 + font.italic: true + color: "steelblue" + } + \endqml + + \sa Text, TextField, TextEdit +*/ + +Text { + /*! + \qmlproperty string Label::text + + The text to display. Use this property to get and set it. + */ + + id: label + color: SystemPaletteSingleton.windowText(enabled) + activeFocusOnTab: false + renderType: Settings.isMobile ? Text.QtRendering : Text.NativeRendering + Accessible.name: text + Accessible.role: Accessible.StaticText +} diff --git a/deployment_test/QtQuick/Controls/Label.qmlc b/deployment_test/QtQuick/Controls/Label.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..22bf8874ac2b1958529d24515e2d036291aa8428 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Label.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Menu.qml b/deployment_test/QtQuick/Controls/Menu.qml new file mode 100644 index 0000000000000000000000000000000000000000..f91e86345bea04bb6c557495f287b75c14a2292e --- /dev/null +++ b/deployment_test/QtQuick/Controls/Menu.qml @@ -0,0 +1,180 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Styles 1.1 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype Menu + \inqmlmodule QtQuick.Controls + \since 5.1 + \ingroup menus + \ingroup controls + \brief Provides a menu component for use as a context menu, popup menu, or + as part of a menu bar. + + \image menu.png + + \code + Menu { + title: "Edit" + + MenuItem { + text: "Cut" + shortcut: "Ctrl+X" + onTriggered: ... + } + + MenuItem { + text: "Copy" + shortcut: "Ctrl+C" + onTriggered: ... + } + + MenuItem { + text: "Paste" + shortcut: "Ctrl+V" + onTriggered: ... + } + + MenuSeparator { } + + Menu { + title: "More Stuff" + + MenuItem { + text: "Do Nothing" + } + } + } + \endcode + + The main uses for menus: + \list + \li + as a \e top-level menu in a \l MenuBar + \li + as a \e submenu inside another menu + \li + as a standalone or \e context menu + \endlist + + Note that some properties, such as \c enabled, \c text, or \c iconSource, + only make sense in a particular use case of the menu. + + \sa MenuBar, MenuItem, MenuSeparator +*/ + +MenuPrivate { + id: root + + /*! \internal + \omit + Documented in qqquickmenu.cpp. + \endomit + */ + function addMenu(title) { + return root.insertMenu(items.length, title) + } + + /*! \internal + \omit + Documented in qquickmenu.cpp. + \endomit + */ + function insertMenu(index, title) { + if (!__selfComponent) + __selfComponent = Qt.createComponent("Menu.qml", root) + var submenu = __selfComponent.createObject(__selfComponent, { "title": title }) + root.insertItem(index, submenu) + return submenu + } + + /*! \internal */ + property Component __selfComponent: null + + /*! \qmlproperty Component Menu::style + \since QtQuick.Controls.Styles 1.2 + + The style Component for this control. + \sa {MenuStyle} + + */ + property Component style + + Component.onCompleted: { + if (!style) { + __usingDefaultStyle = true + style = Qt.binding(function() { return Settings.styleComponent(Settings.style, "MenuStyle.qml", root) }) + } + } + + /*! \internal */ + property bool __usingDefaultStyle: false + /*! \internal */ + property var __parentContentItem: __parentMenu ? __parentMenu.__contentItem : null + /*! \internal */ + property int __currentIndex: -1 + /*! \internal */ + onAboutToHide: __currentIndex = -1 + on__MenuPopupDestroyed: contentLoader.active = false + onPopupVisibleChanged: { + if (__popupVisible) + contentLoader.active = true + } + + /*! \internal */ + __contentItem: Loader { + id: contentLoader + Component { + id: menuContent + MenuContentItem { + __menu: root + } + } + + sourceComponent: root.__isNative ? null : menuContent + active: false + focus: true + Keys.forwardTo: item ? [item, root.__parentContentItem] : [] + property bool altPressed: root.__parentContentItem ? root.__parentContentItem.altPressed : false + } +} diff --git a/deployment_test/QtQuick/Controls/Menu.qmlc b/deployment_test/QtQuick/Controls/Menu.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..ec01b60ccc5319e255f18a92116bd8daf719944e Binary files /dev/null and b/deployment_test/QtQuick/Controls/Menu.qmlc differ diff --git a/deployment_test/QtQuick/Controls/MenuBar.qml b/deployment_test/QtQuick/Controls/MenuBar.qml new file mode 100644 index 0000000000000000000000000000000000000000..78fd7cc7ed25b3e5a689da898fb49fa0e436f83b --- /dev/null +++ b/deployment_test/QtQuick/Controls/MenuBar.qml @@ -0,0 +1,347 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQml 2.14 as Qml +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Styles 1.1 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype MenuBar + \inqmlmodule QtQuick.Controls + \since 5.1 + \ingroup applicationwindow + \ingroup controls + \brief Provides a horizontal menu bar. + + \image menubar.png + + MenuBar can be added to an \l ApplicationWindow, providing menu options + to access additional functionality of the application. + + \code + ApplicationWindow { + ... + menuBar: MenuBar { + Menu { + title: "File" + MenuItem { text: "Open..." } + MenuItem { text: "Close" } + } + + Menu { + title: "Edit" + MenuItem { text: "Cut" } + MenuItem { text: "Copy" } + MenuItem { text: "Paste" } + } + } + } + \endcode + + \sa ApplicationWindow::menuBar +*/ + +MenuBarPrivate { + id: root + + /*! \qmlproperty Component MenuBar::style + \since QtQuick.Controls.Styles 1.2 + + The style Component for this control. + \sa {MenuBarStyle} + + */ + property Component style: Settings.styleComponent(Settings.style, "MenuBarStyle.qml", root) + + /*! \internal */ + property QtObject __style: styleLoader.item + + __isNative: !__style.hasOwnProperty("__isNative") || __style.__isNative + + /*! \internal */ + __contentItem: Loader { + id: topLoader + sourceComponent: __menuBarComponent + active: !root.__isNative + focus: true + Keys.forwardTo: [item] + property real preferredWidth: parent && active ? parent.width : 0 + property bool altPressed: item ? item.__altPressed : false + + Loader { + id: styleLoader + property alias __control: topLoader.item + sourceComponent: root.style + onStatusChanged: { + if (status === Loader.Error) + console.error("Failed to load Style for", root) + } + } + } + + /*! \internal */ + property Component __menuBarComponent: Loader { + id: menuBarLoader + + Accessible.role: Accessible.MenuBar + + onStatusChanged: if (status === Loader.Error) console.error("Failed to load panel for", root) + + visible: status === Loader.Ready + sourceComponent: d.style ? d.style.background : undefined + + width: implicitWidth || root.__contentItem.preferredWidth + height: Math.max(row.height + d.heightPadding, item ? item.implicitHeight : 0) + + Qml.Binding { + // Make sure the styled menu bar is in the background + target: menuBarLoader.item + property: "z" + value: menuMouseArea.z - 1 + restoreMode: Binding.RestoreBinding + } + + QtObject { + id: d + + property Style style: __style + + property int openedMenuIndex: -1 + property bool preselectMenuItem: false + property real heightPadding: style ? style.padding.top + style.padding.bottom : 0 + + property bool altPressed: false + property bool altPressedAgain: false + property var mnemonicsMap: ({}) + + function openMenuAtIndex(index) { + if (openedMenuIndex === index) + return; + + var oldIndex = openedMenuIndex + openedMenuIndex = index + + if (oldIndex !== -1) { + var menu = root.menus[oldIndex] + if (menu.__popupVisible) + menu.__dismissAndDestroy() + } + + if (openedMenuIndex !== -1) { + menu = root.menus[openedMenuIndex] + if (menu.enabled) { + if (menu.__usingDefaultStyle) + menu.style = d.style.menuStyle + + var xPos = row.LayoutMirroring.enabled ? menuItemLoader.width : 0 + menu.__popup(Qt.rect(xPos, menuBarLoader.height - d.heightPadding, 0, 0), 0) + + if (preselectMenuItem) + menu.__currentIndex = 0 + } + } + } + + function dismissActiveFocus(event, reason) { + if (reason) { + altPressedAgain = false + altPressed = false + openMenuAtIndex(-1) + root.__contentItem.parent.forceActiveFocus() + } else { + event.accepted = false + } + } + + function maybeOpenFirstMenu(event) { + if (altPressed && openedMenuIndex === -1) { + preselectMenuItem = true + openMenuAtIndex(0) + } else { + event.accepted = false + } + } + } + property alias __altPressed: d.altPressed // Needed for the menu contents + + focus: true + + Keys.onPressed: { + var action = null + if (event.key === Qt.Key_Alt) { + if (!d.altPressed) + d.altPressed = true + else + d.altPressedAgain = true + } else if (d.altPressed && (action = d.mnemonicsMap[event.text.toUpperCase()])) { + d.preselectMenuItem = true + action.trigger() + event.accepted = true + } + } + + Keys.onReleased: d.dismissActiveFocus(event, d.altPressedAgain && d.openedMenuIndex === -1) + Keys.onEscapePressed: d.dismissActiveFocus(event, d.openedMenuIndex === -1) + + Keys.onUpPressed: d.maybeOpenFirstMenu(event) + Keys.onDownPressed: d.maybeOpenFirstMenu(event) + + Keys.onLeftPressed: { + if (d.openedMenuIndex > 0) { + var idx = d.openedMenuIndex - 1 + while (idx >= 0 && !(root.menus[idx].enabled && root.menus[idx].visible)) + idx-- + if (idx >= 0) { + d.preselectMenuItem = true + d.openMenuAtIndex(idx) + } + } else { + event.accepted = false; + } + } + + Keys.onRightPressed: { + if (d.openedMenuIndex !== -1 && d.openedMenuIndex < root.menus.length - 1) { + var idx = d.openedMenuIndex + 1 + while (idx < root.menus.length && !(root.menus[idx].enabled && root.menus[idx].visible)) + idx++ + if (idx < root.menus.length) { + d.preselectMenuItem = true + d.openMenuAtIndex(idx) + } + } else { + event.accepted = false; + } + } + + Keys.forwardTo: d.openedMenuIndex !== -1 ? [root.menus[d.openedMenuIndex].__contentItem] : [] + + Row { + id: row + x: d.style ? d.style.padding.left : 0 + y: d.style ? d.style.padding.top : 0 + width: parent.width - (d.style ? d.style.padding.left + d.style.padding.right : 0) + LayoutMirroring.enabled: Qt.application.layoutDirection === Qt.RightToLeft + + Repeater { + id: itemsRepeater + model: root.menus + Loader { + id: menuItemLoader + + Accessible.role: Accessible.MenuItem + Accessible.name: StyleHelpers.removeMnemonics(opts.text) + Accessible.onPressAction: d.openMenuAtIndex(opts.index) + + property var styleData: QtObject { + id: opts + readonly property int index: __menuItemIndex + readonly property string text: !!__menuItem && __menuItem.title + readonly property bool enabled: !!__menuItem && __menuItem.enabled + readonly property bool selected: menuMouseArea.hoveredItem === menuItemLoader + readonly property bool open: !!__menuItem && __menuItem.__popupVisible || d.openedMenuIndex === index + readonly property bool underlineMnemonic: d.altPressed + } + + height: Math.max(menuBarLoader.height - d.heightPadding, + menuItemLoader.item ? menuItemLoader.item.implicitHeight : 0) + + readonly property var __menuItem: modelData + readonly property int __menuItemIndex: index + sourceComponent: d.style ? d.style.itemDelegate : null + visible: __menuItem.visible + + Connections { + target: __menuItem + function onAboutToHide() { + if (d.openedMenuIndex === index) { + d.openMenuAtIndex(-1) + menuMouseArea.hoveredItem = null + } + } + } + + Connections { + target: __menuItem.__action + function onTriggered() { d.openMenuAtIndex(__menuItemIndex) } + } + + Component.onCompleted: { + __menuItem.__visualItem = menuItemLoader + + var title = __menuItem.title + var ampersandPos = title.indexOf("&") + if (ampersandPos !== -1) + d.mnemonicsMap[title[ampersandPos + 1].toUpperCase()] = __menuItem.__action + } + } + } + } + + MouseArea { + id: menuMouseArea + anchors.fill: parent + hoverEnabled: Settings.hoverEnabled + + onPositionChanged: updateCurrentItem(mouse) + onPressed: updateCurrentItem(mouse) + onExited: hoveredItem = null + + property Item currentItem: null + property Item hoveredItem: null + function updateCurrentItem(mouse) { + var pos = mapToItem(row, mouse.x, mouse.y) + if (pressed || !hoveredItem + || !hoveredItem.contains(Qt.point(pos.x - currentItem.x, pos.y - currentItem.y))) { + hoveredItem = row.childAt(pos.x, pos.y) + if (!hoveredItem) + return false; + currentItem = hoveredItem + if (pressed || d.openedMenuIndex !== -1) { + d.preselectMenuItem = false + d.openMenuAtIndex(currentItem.__menuItemIndex) + } + } + return true; + } + } + } +} diff --git a/deployment_test/QtQuick/Controls/MenuBar.qmlc b/deployment_test/QtQuick/Controls/MenuBar.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..c2a200cfc44beb3cee3576b88c56fb319aa702eb Binary files /dev/null and b/deployment_test/QtQuick/Controls/MenuBar.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Private/AbstractCheckable.qml b/deployment_test/QtQuick/Controls/Private/AbstractCheckable.qml new file mode 100644 index 0000000000000000000000000000000000000000..e96f0500b5028115b80e2bd5b01b940bec17f3c1 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Private/AbstractCheckable.qml @@ -0,0 +1,178 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 +import QtQuick.Window 2.2 + +/*! + \qmltype AbstractCheckable + \inqmlmodule QtQuick.Controls + \brief An abstract representation of a checkable control with a label + \qmlabstract + \internal + + A checkable control is one that has two states: checked (on) and + unchecked (off). AbstractCheckable encapsulates the basic behavior and + states that are required by checkable controls. + + Examples of checkable controls are RadioButton and + CheckBox. CheckBox extends AbstractCheckable's behavior by adding a third + state: partially checked. +*/ + +Control { + id: abstractCheckable + + /*! + Emitted whenever the control is clicked. + */ + signal clicked + + /*! + \qmlproperty bool AbstractCheckable::pressed + + This property is \c true if the control is being pressed. + Set this property to manually invoke a mouse click. + */ + property alias pressed: mouseArea.effectivePressed + + /*! \qmlproperty bool AbstractCheckcable::hovered + + This property indicates whether the control is being hovered. + */ + readonly property alias hovered: mouseArea.containsMouse + + /*! + This property is \c true if the control is checked. + */ + property bool checked: false + Accessible.checked: checked + Accessible.checkable: true + + /*! + This property is \c true if the control takes the focus when it is + pressed; \l{QQuickItem::forceActiveFocus()}{forceActiveFocus()} will be + called on the control. + */ + property bool activeFocusOnPress: false + + /*! + This property stores the ExclusiveGroup that the control belongs to. + */ + property ExclusiveGroup exclusiveGroup: null + + /*! + This property holds the text that the label should display. + */ + property string text + + /*! + This property holds the button tooltip. + + \since QtQuick.Controls 1.7 + */ + property string tooltip + Accessible.description: tooltip + + /*! \internal */ + property var __cycleStatesHandler: cycleRadioButtonStates + + activeFocusOnTab: true + + MouseArea { + id: mouseArea + focus: true + anchors.fill: parent + hoverEnabled: Settings.hoverEnabled + enabled: !keyPressed + + property bool keyPressed: false + property bool effectivePressed: pressed && containsMouse || keyPressed + + onClicked: abstractCheckable.clicked(); + + onPressed: if (activeFocusOnPress) forceActiveFocus(); + + onExited: Tooltip.hideText() + onCanceled: Tooltip.hideText() + + onReleased: { + if (containsMouse && (!exclusiveGroup || !checked)) + __cycleStatesHandler(); + } + + Timer { + interval: 1000 + running: mouseArea.containsMouse && !pressed && tooltip.length && mouseArea.Window.visibility !== Window.Hidden + onTriggered: Tooltip.showText(mouseArea, Qt.point(mouseArea.mouseX, mouseArea.mouseY), tooltip) + } + } + + /*! \internal */ + onExclusiveGroupChanged: { + if (exclusiveGroup) + exclusiveGroup.bindCheckable(abstractCheckable) + } + + Keys.onPressed: { + if (event.key === Qt.Key_Space && !event.isAutoRepeat && !mouseArea.pressed) + mouseArea.keyPressed = true; + } + + Keys.onReleased: { + if (event.key === Qt.Key_Space && !event.isAutoRepeat && mouseArea.keyPressed) { + mouseArea.keyPressed = false; + if (!exclusiveGroup || !checked) + __cycleStatesHandler(); + clicked(); + } + } + + Action { + // handle mnemonic + text: abstractCheckable.text + onTriggered: { + if (!abstractCheckable.exclusiveGroup || !abstractCheckable.checked) + abstractCheckable.__cycleStatesHandler(); + abstractCheckable.clicked(); + } + } +} diff --git a/deployment_test/QtQuick/Controls/Private/AbstractCheckable.qmlc b/deployment_test/QtQuick/Controls/Private/AbstractCheckable.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..2f984afd9eb74f456cffb67e9c67d8f69da7aabb Binary files /dev/null and b/deployment_test/QtQuick/Controls/Private/AbstractCheckable.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Private/BasicButton.qml b/deployment_test/QtQuick/Controls/Private/BasicButton.qml new file mode 100644 index 0000000000000000000000000000000000000000..d5c5d28fa0097b3e392f1e70b50c58a5979db40f --- /dev/null +++ b/deployment_test/QtQuick/Controls/Private/BasicButton.qml @@ -0,0 +1,241 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 +import QtQuick.Controls.Styles 1.1 +import QtQuick.Window 2.2 + +/*! + \qmltype BasicButton + \internal + \qmlabstract + \inqmlmodule QtQuick.Controls.Private +*/ + +Control { + id: button + + /*! This signal is emitted when the button is clicked. */ + signal clicked + + /*! \qmlproperty bool BasicButton::pressed + + This property holds whether the button is being pressed. */ + readonly property alias pressed: button.__effectivePressed + + /*! \qmlproperty bool BasicButton::hovered + + This property indicates whether the control is being hovered. + */ + readonly property alias hovered: behavior.containsMouse + + /*! This property holds whether the button is checkable. + + The default value is \c false. */ + property bool checkable: false + Accessible.checkable: checkable + + /*! This property holds whether the button is checked. + + Only checkable buttons can be checked. + + The default value is \c false. */ + property bool checked: false + Accessible.checked: checked + + /*! This property holds the ExclusiveGroup that the button belongs to. + + The default value is \c null. */ + property ExclusiveGroup exclusiveGroup: null + + /*! This property holds the associated button action. + + If a button has an action associated, the action defines the + button's properties like checked, text, tooltip etc. + + When an action is set, it's still possible to override the \l text, + \l tooltip, \l iconSource, and \l iconName properties. + + The default value is \c null. */ + property Action action: null + + /*! This property specifies whether the button should gain active focus when pressed. + + The default value is \c false. */ + property bool activeFocusOnPress: false + + /*! This property holds the text shown on the button. If the button has no + text, the \l text property will be an empty string. + + The default value is the empty string. + */ + property string text: action ? action.text : "" + + /*! This property holds the button tooltip. */ + property string tooltip: action ? (action.tooltip || StyleHelpers.removeMnemonics(action.text)) : "" + + /*! This property holds the icon shown on the button. If the button has no + icon, the iconSource property will be an empty string. + + The default value is the empty string. + */ + property url iconSource: action ? action.iconSource : "" + + /*! The image label source as theme name. + When an icon from the platform icon theme is found, this takes + precedence over iconSource. + + \include icons.qdocinc iconName + */ + property string iconName: action ? action.iconName : "" + + /*! \internal */ + property string __position: "only" + /*! \internal */ + readonly property bool __iconOverriden: button.action && (button.action.iconSource !== button.iconSource || button.action.iconName !== button.iconName) + /*! \internal */ + property Action __action: action || ownAction + /*! \internal */ + readonly property Action __iconAction: __iconOverriden ? ownAction : __action + + /*! \internal */ + onExclusiveGroupChanged: { + if (exclusiveGroup) + exclusiveGroup.bindCheckable(button) + } + + Accessible.role: Accessible.Button + Accessible.description: tooltip + + /*! \internal */ + function accessiblePressAction() { + __action.trigger(button) + } + + Action { + id: ownAction + enabled: button.enabled + iconSource: !button.action || __iconOverriden ? button.iconSource : "" + iconName: !button.action || __iconOverriden ? button.iconName : "" + + // let ownAction handle mnemonic if and only if the button does + // not already have an action assigned to avoid ambiguous shortcuts + text: button.action ? "" : button.text + } + + Connections { + target: __action + function onTriggered() { button.clicked() } + } + + activeFocusOnTab: true + + Keys.onPressed: { + if (event.key === Qt.Key_Space && !event.isAutoRepeat && !behavior.pressed) { + behavior.keyPressed = true; + event.accepted = true; + } + } + + onFocusChanged: if (!focus) behavior.keyPressed = false + + Keys.onReleased: { + if (event.key === Qt.Key_Space && !event.isAutoRepeat && behavior.keyPressed) { + behavior.keyPressed = false; + __action.trigger(button) + behavior.toggle() + event.accepted = true; + } + } + + MouseArea { + id: behavior + property bool keyPressed: false + property bool effectivePressed: pressed && containsMouse || keyPressed + + anchors.fill: parent + hoverEnabled: Settings.hoverEnabled + enabled: !keyPressed + + function toggle() { + if (button.checkable && !button.action && !(button.checked && button.exclusiveGroup)) + button.checked = !button.checked + } + + onReleased: { + if (containsMouse) { + toggle() + __action.trigger(button) + } + } + onExited: Tooltip.hideText() + onCanceled: Tooltip.hideText() + onPressed: { + if (activeFocusOnPress) + button.forceActiveFocus() + } + + Timer { + interval: 1000 + running: behavior.containsMouse && !pressed && tooltip.length && behavior.Window.visibility !== Window.Hidden + onTriggered: Tooltip.showText(behavior, Qt.point(behavior.mouseX, behavior.mouseY), tooltip) + } + } + + /*! \internal */ + property var __behavior: behavior + + /*! \internal */ + property bool __effectivePressed: behavior.effectivePressed + + states: [ + State { + name: "boundAction" + when: action !== null + PropertyChanges { + target: button + enabled: action.enabled + checkable: action.checkable + checked: action.checked + } + } + ] +} diff --git a/deployment_test/QtQuick/Controls/Private/BasicButton.qmlc b/deployment_test/QtQuick/Controls/Private/BasicButton.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..b463219e720936ae8c645eaa783dad16de3205ba Binary files /dev/null and b/deployment_test/QtQuick/Controls/Private/BasicButton.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Private/BasicTableView.qml b/deployment_test/QtQuick/Controls/Private/BasicTableView.qml new file mode 100644 index 0000000000000000000000000000000000000000..cd6114a1eff611e131a863699c06a99a7c231b7f --- /dev/null +++ b/deployment_test/QtQuick/Controls/Private/BasicTableView.qml @@ -0,0 +1,792 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +import QtQml 2.14 as Qml +import QtQuick 2.6 +import QtQuick.Controls 1.5 +import QtQuick.Controls.Private 1.0 +import QtQuick.Controls.Styles 1.2 +import QtQuick.Window 2.2 + +/*! + \qmltype BasicTableView + \qmlabstract + \inqmlmodule QtQuick.Controls.Private +*/ + +ScrollView { + id: root + + /*! \qmlproperty bool BasicTableView::alternatingRowColors + + This property is set to \c true if the view alternates the row color. + The default value is \c true. + */ + property bool alternatingRowColors: true + + /*! \qmlproperty bool BasicTableView::headerVisible + + This property determines if the header is visible. + The default value is \c true. + */ + property bool headerVisible: true + + /*! \qmlproperty bool BasicTableView::backgroundVisible + + This property determines if the background should be filled or not. + + The default value is \c true. + + \note The rowDelegate is not affected by this property + */ + property alias backgroundVisible: colorRect.visible + + /*! \qmlproperty Component BasicTableView::itemDelegate + \internal + + Documentation differs between TableView and TreeView. + See qtquickcontrols-treeview.qdoc and qtquickcontrols-tableview.qdoc + */ + property Component itemDelegate: __style ? __style.itemDelegate : null + + /*! \qmlproperty Component BasicTableView::rowDelegate + + This property defines a delegate to draw a row. + + In the row delegate you have access to the following special properties: + \list + \li styleData.alternate - true when the row uses the alternate background color + \li styleData.selected - true when the row is currently selected + \li styleData.row - the index of the row + \li styleData.hasActiveFocus - true when the row has focus (since QtQuick.Controls 1.3) + \li styleData.pressed - true when the row is pressed (since QtQuick.Controls 1.3) + \endlist + + \note For performance reasons, created delegates can be recycled + across multiple table rows. This implies that when you make use of implicit + properties such as \c styleData.row or \c model, these values can change + after the delegate has been constructed. This means that you should not assume + that content is fixed when \c Component.onCompleted is called, but instead rely on + bindings to such properties. + */ + property Component rowDelegate: __style ? __style.rowDelegate : null + + /*! \qmlproperty Component BasicTableView::headerDelegate + + This property defines a delegate to draw a header. + + In the header delegate you have access to the following special properties: + \list + \li styleData.value - the value or text for this item + \li styleData.column - the index of the column + \li styleData.pressed - true when the column is being pressed + \li styleData.containsMouse - true when the column is under the mouse + \li styleData.textAlignment - the horizontal text alignment of the column (since QtQuickControls 1.1) + \endlist + */ + property Component headerDelegate: __style ? __style.headerDelegate : null + + /*! \qmlproperty int BasicTableView::sortIndicatorColumn + + Index of the current sort column. + The default value is \c {0}. + */ + property int sortIndicatorColumn + + /*! \qmlproperty bool BasicTableView::sortIndicatorVisible + + This property shows or hides the sort indicator + The default value is \c false. + \note The view itself does not sort the data. + */ + property bool sortIndicatorVisible: false + + /*! \qmlproperty enumeration BasicTableView::sortIndicatorOrder + + This sets the sorting order of the sort indicator + The allowed values are: + \list + \li Qt.AscendingOrder - the default + \li Qt.DescendingOrder + \endlist + */ + property int sortIndicatorOrder: Qt.AscendingOrder + + /*! \qmlproperty Component BasicTableView::contentHeader + This is the content header of the view. + */ + property alias contentHeader: listView.header + + /*! \qmlproperty Component BasicTableView::contentFooter + This is the content footer of the view. + */ + property alias contentFooter: listView.footer + + /*! \qmlproperty int BasicTableView::columnCount + The current number of columns + */ + readonly property alias columnCount: columnModel.count + + /*! \qmlpropertygroup BasicTableView::section + \internal + \qmlproperty string BasicTableView::section.property + \qmlproperty enumeration BasicTableView::section.criteria + \qmlproperty Component BasicTableView::section.delegate + \qmlproperty enumeration BasicTableView::section.labelPositioning + + Moved to the qdoc files to keep the grouped property layout. + See qtquickcontrols-treeview.qdoc and qtquickcontrols-tableview.qdoc + */ + property alias section: listView.section + + /*! + \qmlproperty enumeration BasicTableView::selectionMode + \since QtQuick.Controls 1.1 + + This enum indicates how the view responds to user selections: + + The possible modes are: + + \list + + \li SelectionMode.NoSelection - Items cannot be selected. + + \li SelectionMode.SingleSelection - When the user selects an item, + any already-selected item becomes unselected, and the user cannot + unselect the selected item. (Default) + + \li SelectionMode.MultiSelection - When the user selects an item in the usual way, + the selection status of that item is toggled and the other items are left alone. + + \li SelectionMode.ExtendedSelection - When the user selects an item in the usual way, + the selection is cleared and the new item selected. However, if the user presses the + Ctrl key when clicking on an item, the clicked item gets toggled and all other items + are left untouched. If the user presses the Shift key while clicking + on an item, all items between the current item and the clicked item are selected or unselected, + depending on the state of the clicked item. Multiple items can be selected by dragging the + mouse over them. + + \li SelectionMode.ContiguousSelection - When the user selects an item in the usual way, + the selection is cleared and the new item selected. However, if the user presses the Shift key while + clicking on an item, all items between the current item and the clicked item are selected. + + \endlist + */ + property int selectionMode: SelectionMode.SingleSelection + + /*! + \qmlmethod TableViewColumn BasicTableView::addColumn(object column) + + Adds a \a column and returns the added column. + + The \a column argument can be an instance of TableViewColumn, + or a Component. The component has to contain a TableViewColumn. + Otherwise \c null is returned. + */ + function addColumn(column) { + return insertColumn(columnCount, column) + } + + /*! + \qmlmethod TableViewColumn BasicTableView::insertColumn(int index, object column) + + Inserts a \a column at the given \a index and returns the inserted column. + + The \a column argument can be an instance of TableViewColumn, + or a Component. The component has to contain a TableViewColumn. + Otherwise \c null is returned. + */ + function insertColumn(index, column) { + if (__isTreeView && index === 0 && columnCount > 0) { + console.warn(__viewTypeName + "::insertColumn(): Can't replace column 0") + return null + } + var object = column + if (typeof column['createObject'] === 'function') { + object = column.createObject(root) + } else if (object.__view) { + console.warn(__viewTypeName + "::insertColumn(): you cannot add a column to multiple views") + return null + } + if (index >= 0 && index <= columnCount && object.accessibleRole === Accessible.ColumnHeader) { + object.__view = root + columnModel.insert(index, {columnItem: object}) + if (root.__columns[index] !== object) { + // The new column needs to be put into __columns at the specified index + // so the list needs to be recreated to be correct + var arr = [] + for (var i = 0; i < index; ++i) + arr.push(root.__columns[i]) + arr.push(object) + for (i = index; i < root.__columns.length; ++i) + arr.push(root.__columns[i]) + root.__columns = arr + } + return object + } + + if (object !== column) + object.destroy() + console.warn(__viewTypeName + "::insertColumn(): invalid argument") + return null + } + + /*! + \qmlmethod void BasicTableView::removeColumn(int index) + + Removes and destroys a column at the given \a index. + */ + function removeColumn(index) { + if (index < 0 || index >= columnCount) { + console.warn(__viewTypeName + "::removeColumn(): invalid argument") + return + } + if (__isTreeView && index === 0) { + console.warn(__viewTypeName + "::removeColumn(): Can't remove column 0") + return + } + var column = columnModel.get(index).columnItem + columnModel.remove(index, 1) + column.destroy() + } + + /*! + \qmlmethod void BasicTableView::moveColumn(int from, int to) + + Moves a column \a from index \a to another. + */ + function moveColumn(from, to) { + if (from < 0 || from >= columnCount || to < 0 || to >= columnCount) { + console.warn(__viewTypeName + "::moveColumn(): invalid argument") + return + } + if (__isTreeView && to === 0) { + console.warn(__viewTypeName + "::moveColumn(): Can't move column 0") + return + } + if (sortIndicatorColumn === from) + sortIndicatorColumn = to + columnModel.move(from, to, 1) + } + + /*! + \qmlmethod TableViewColumn BasicTableView::getColumn(int index) + + Returns the column at the given \a index + or \c null if the \a index is invalid. + */ + function getColumn(index) { + if (index < 0 || index >= columnCount) + return null + return columnModel.get(index).columnItem + } + + /*! + \qmlmethod void BasicTableView::resizeColumnsToContents() + + Resizes all columns to ensure that the column contents and the headers will fit. + \since QtQuick.Controls 1.2 + */ + function resizeColumnsToContents () { + for (var i = 0; i < __columns.length; ++i) { + var col = getColumn(i) + var header = __listView.headerItem.headerRepeater.itemAt(i) + if (col) { + col.resizeToContents() + if (col.width < header.implicitWidth) + col.width = header.implicitWidth + } + } + } + + // Internal stuff. Do not look + + Component.onCompleted: { + for (var i = 0; i < __columns.length; ++i) { + var column = __columns[i] + if (column.accessibleRole === Accessible.ColumnHeader) + addColumn(column) + } + } + + activeFocusOnTab: true + + implicitWidth: 200 + implicitHeight: 150 + + frameVisible: true + __scrollBarTopMargin: headerVisible && (listView.transientScrollBars || Qt.platform.os === "osx") + ? listView.headerItem.height : 0 + + /*! \internal + Use this to display user-friendly messages in TableView and TreeView common functions. + */ + property string __viewTypeName + + /*! \internal */ + readonly property bool __isTreeView: __viewTypeName === "TreeView" + + /*! \internal */ + default property alias __columns: root.data + + /*! \internal */ + property alias __currentRowItem: listView.currentItem + + /*! \internal + This property is forwarded to TableView::currentRow, but not to any TreeView property. + */ + property alias __currentRow: listView.currentIndex + + /*! \internal */ + readonly property alias __listView: listView + + /*! \internal */ + property Component __itemDelegateLoader: null + + /*! \internal + Allows to override the model property in cases like TreeView, + where we want to use a proxy/adaptor model between the user's model + and whatever a ListView can swallow. + */ + property var __model + + /*! \internal */ + property bool __activateItemOnSingleClick: __style ? __style.activateItemOnSingleClick : false + + /*! \internal */ + property Item __mouseArea + + ListView { + id: listView + focus: true + activeFocusOnTab: false + Keys.forwardTo: [__mouseArea] + anchors.fill: parent + contentWidth: headerItem.headerRow.width + listView.vScrollbarPadding + // ### FIXME Late configuration of the header item requires + // this binding to get the header visible after creation + contentY: -headerItem.height + + currentIndex: -1 + visible: columnCount > 0 + interactive: Settings.hasTouchScreen + property var rowItemStack: [] // Used as a cache for rowDelegates + + readonly property bool transientScrollBars: __style && !!__style.transientScrollBars + readonly property real vScrollbarPadding: __scroller.verticalScrollBar.visible + && !transientScrollBars && Qt.platform.os === "osx" ? + __verticalScrollBar.width + __scroller.scrollBarSpacing + root.__style.padding.right : 0 + + Qml.Binding { + // On Mac, we reserve the vSB space in the contentItem because the vSB should + // appear under the header. Unfortunately, the ListView header won't expand + // beyond the ListView's boundaries, that's why we need to ressort to this. + target: root.__scroller + when: Qt.platform.os === "osx" + property: "verticalScrollbarOffset" + value: 0 + restoreMode: Binding.RestoreBinding + } + + function incrementCurrentIndexBlocking() { + var oldIndex = __listView.currentIndex + __scroller.blockUpdates = true; + incrementCurrentIndex(); + __scroller.blockUpdates = false; + return oldIndex !== __listView.currentIndex + } + + function decrementCurrentIndexBlocking() { + var oldIndex = __listView.currentIndex + __scroller.blockUpdates = true; + decrementCurrentIndex(); + __scroller.blockUpdates = false; + return oldIndex !== __listView.currentIndex + } + + function scrollIfNeeded(key) { + var diff = key === Qt.Key_PageDown ? height : + key === Qt.Key_PageUp ? -height : 0 + if (diff !== 0) + __verticalScrollBar.value += diff + } + + SystemPalette { + id: palette + colorGroup: enabled ? SystemPalette.Active : SystemPalette.Disabled + } + + Rectangle { + id: colorRect + parent: viewport + anchors.fill: parent + color: __style ? __style.backgroundColor : palette.base + z: -2 + } + + // Fills extra rows with alternate color + Column { + id: rowfiller + Loader { + id: rowSizeItem + sourceComponent: root.rowDelegate + visible: false + property QtObject styleData: QtObject { + property bool alternate: false + property bool selected: false + property bool hasActiveFocus: false + property bool pressed: false + } + } + property int rowHeight: Math.floor(rowSizeItem.implicitHeight) + property int paddedRowCount: rowHeight != 0 ? height/rowHeight : 0 + + y: listView.contentHeight - listView.contentY + listView.originY + width: parent.width + visible: alternatingRowColors + height: listView.model && listView.model.count ? (viewport.height - listView.contentHeight) : 0 + Repeater { + model: visible ? parent.paddedRowCount : 0 + Loader { + width: rowfiller.width + height: rowfiller.rowHeight + sourceComponent: root.rowDelegate + property QtObject styleData: QtObject { + readonly property bool alternate: (index + __listView.count) % 2 === 1 + readonly property bool selected: false + readonly property bool hasActiveFocus: false + readonly property bool pressed: false + } + readonly property var model: null + readonly property var modelData: null + } + } + } + + ListModel { + id: columnModel + } + + highlightFollowsCurrentItem: true + model: root.__model + + delegate: FocusScope { + id: rowItemContainer + + activeFocusOnTab: false + z: rowItem.activeFocus ? 0.7 : rowItem.itemSelected ? 0.5 : 0 + + property Item rowItem + // We recycle instantiated row items to speed up list scrolling + + Component.onDestruction: { + // move the rowItem back in cache + if (rowItem) { + rowItem.visible = false; + rowItem.parent = null; + rowItem.rowIndex = -1; + listView.rowItemStack.push(rowItem); // return rowItem to cache + } + } + + Component.onCompleted: { + // retrieve row item from cache + if (listView.rowItemStack.length > 0) + rowItem = listView.rowItemStack.pop(); + else + rowItem = rowComponent.createObject(listView); + + // Bind container to item size + rowItemContainer.width = Qt.binding( function() { return rowItem.width }); + rowItemContainer.height = Qt.binding( function() { return rowItem.height }); + + // Reassign row-specific bindings + rowItem.rowIndex = Qt.binding( function() { return model.index }); + rowItem.itemModelData = Qt.binding( function() { return typeof modelData === "undefined" ? null : modelData }); + rowItem.itemModel = Qt.binding( function() { return model }); + rowItem.parent = rowItemContainer; + rowItem.visible = true; + } + } + + Component { + id: rowComponent + + FocusScope { + id: rowitem + visible: false + + property int rowIndex + property var itemModelData + property var itemModel + property bool itemSelected: __mouseArea.selected(rowIndex) + property bool alternate: alternatingRowColors && rowIndex % 2 === 1 + readonly property color itemTextColor: itemSelected ? __style.highlightedTextColor : __style.textColor + property Item branchDecoration: null + + width: itemrow.width + height: rowstyle.height + + onActiveFocusChanged: { + if (activeFocus) + listView.currentIndex = rowIndex + } + + Loader { + id: rowstyle + // row delegate + sourceComponent: rowitem.itemModel !== undefined ? root.rowDelegate : null + // Row fills the view width regardless of item size + // But scrollbar should not adjust to it + height: item ? item.height : 16 + width: parent.width + __horizontalScrollBar.width + x: listView.contentX + + // these properties are exposed to the row delegate + // Note: these properties should be mirrored in the row filler as well + property QtObject styleData: QtObject { + readonly property int row: rowitem.rowIndex + readonly property bool alternate: rowitem.alternate + readonly property bool selected: rowitem.itemSelected + readonly property bool hasActiveFocus: rowitem.activeFocus + readonly property bool pressed: rowitem.rowIndex === __mouseArea.pressedRow + } + readonly property var model: rowitem.itemModel + readonly property var modelData: rowitem.itemModelData + } + Row { + id: itemrow + height: parent.height + Repeater { + model: columnModel + + delegate: __itemDelegateLoader + + onItemAdded: { + var columnItem = columnModel.get(index).columnItem + item.__rowItem = rowitem + item.__column = columnItem + } + } + } + } + } + + headerPositioning: ListView.OverlayHeader + header: Item { + id: tableHeader + visible: headerVisible + width: Math.max(headerRow.width + listView.vScrollbarPadding, root.viewport.width) + height: visible ? headerRow.height : 0 + + property alias headerRow: row + property alias headerRepeater: repeater + Row { + id: row + + Repeater { + id: repeater + + property int targetIndex: -1 + property int dragIndex: -1 + + model: columnModel + + delegate: Item { + id: headerRowDelegate + readonly property int column: index + z:-index + width: modelData.width + implicitWidth: columnCount === 1 ? viewport.width + __verticalScrollBar.width : headerStyle.implicitWidth + visible: modelData.visible + height: headerStyle.height + + readonly property bool treeViewMovable: !__isTreeView || index > 0 + + Loader { + id: headerStyle + sourceComponent: root.headerDelegate + width: parent.width + property QtObject styleData: QtObject { + readonly property string value: modelData.title + readonly property bool pressed: headerClickArea.pressed + readonly property bool containsMouse: headerClickArea.containsMouse + readonly property int column: index + readonly property int textAlignment: modelData.horizontalAlignment + readonly property bool resizable: modelData.resizable + } + } + + Rectangle{ + id: targetmark + width: parent.width + height:parent.height + opacity: (treeViewMovable && index === repeater.targetIndex && repeater.targetIndex !== repeater.dragIndex) ? 0.5 : 0 + Behavior on opacity { NumberAnimation { duration: 160 } } + color: palette.highlight + visible: modelData.movable + } + + MouseArea{ + id: headerClickArea + drag.axis: Qt.YAxis + hoverEnabled: Settings.hoverEnabled + anchors.fill: parent + onClicked: { + if (sortIndicatorColumn === index) + sortIndicatorOrder = sortIndicatorOrder === Qt.AscendingOrder ? Qt.DescendingOrder : Qt.AscendingOrder + sortIndicatorColumn = index + } + // Here we handle moving header sections + // NOTE: the direction is different from the master branch + // so this indicates that I am using an invalid assumption on item ordering + onPositionChanged: { + if (drag.active && modelData.movable && pressed && columnCount > 1) { // only do this while dragging + for (var h = columnCount-1 ; h >= 0 ; --h) { + if (headerRow.children[h].visible && drag.target.x + headerRowDelegate.width/2 > headerRow.children[h].x) { + repeater.targetIndex = h + break + } + } + } + } + + onPressed: { + repeater.dragIndex = index + } + + onReleased: { + if (repeater.targetIndex >= 0 && repeater.targetIndex !== index ) { + var targetColumn = columnModel.get(repeater.targetIndex).columnItem + if (targetColumn.movable && (!__isTreeView || repeater.targetIndex > 0)) { + if (sortIndicatorColumn === index) + sortIndicatorColumn = repeater.targetIndex + columnModel.move(index, repeater.targetIndex, 1) + } + } + repeater.targetIndex = -1 + repeater.dragIndex = -1 + } + drag.target: treeViewMovable && modelData.movable && columnCount > 1 ? draghandle : null + } + + Loader { + id: draghandle + property QtObject styleData: QtObject{ + readonly property string value: modelData.title + readonly property bool pressed: headerClickArea.pressed + readonly property bool containsMouse: headerClickArea.containsMouse + readonly property int column: index + readonly property int textAlignment: modelData.horizontalAlignment + } + parent: tableHeader + x: __implicitX + property double __implicitX: headerRowDelegate.x + width: modelData.width + height: parent.height + sourceComponent: root.headerDelegate + visible: headerClickArea.pressed + onVisibleChanged: { + if (!visible) + x = Qt.binding(function () { return __implicitX }) + } + opacity: 0.5 + } + + + MouseArea { + id: headerResizeHandle + property int offset: 0 + readonly property int minimumSize: 20 + preventStealing: true + anchors.rightMargin: -width/2 + width: Settings.hasTouchScreen ? Screen.pixelDensity * 3.5 : 16 + height: parent.height + anchors.right: parent.right + enabled: modelData.resizable && columnCount > 0 + onPositionChanged: { + var newHeaderWidth = modelData.width + (mouseX - offset) + modelData.width = Math.max(minimumSize, newHeaderWidth) + } + + onDoubleClicked: getColumn(index).resizeToContents() + onPressedChanged: if (pressed) offset=mouseX + cursorShape: enabled && repeater.dragIndex==-1 ? Qt.SplitHCursor : Qt.ArrowCursor + } + } + } + } + + Loader { + property QtObject styleData: QtObject{ + readonly property string value: "" + readonly property bool pressed: false + readonly property bool containsMouse: false + readonly property int column: -1 + readonly property int textAlignment: Text.AlignLeft + } + + anchors.top: parent.top + anchors.right: parent.right + anchors.bottom: headerRow.bottom + sourceComponent: root.headerDelegate + readonly property real __remainingWidth: parent.width - headerRow.width + visible: __remainingWidth > 0 + width: __remainingWidth + z:-1 + } + } + + function columnAt(offset) { + var item = listView.headerItem.headerRow.childAt(offset, 0) + return item ? item.column : -1 + } + } +} diff --git a/deployment_test/QtQuick/Controls/Private/BasicTableView.qmlc b/deployment_test/QtQuick/Controls/Private/BasicTableView.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..4367a36474009dbb1562e832cbdf5f2f65dabfae Binary files /dev/null and b/deployment_test/QtQuick/Controls/Private/BasicTableView.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Private/CalendarHeaderModel.qml b/deployment_test/QtQuick/Controls/Private/CalendarHeaderModel.qml new file mode 100644 index 0000000000000000000000000000000000000000..40328a8b16ffce505468db1b36a255c4ad8f8158 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Private/CalendarHeaderModel.qml @@ -0,0 +1,109 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 + +/* + CalendarHeaderModel contains a list of the days of a week, + according to a \l locale. The \l locale affects which day of the week + is first in the model. + + The only role provided by the model is \c dayOfWeek, which is one of the + following JavaScript values: + + \list + \li \c Locale.Sunday + \li \c Locale.Monday + \li \c Locale.Tuesday + \li \c Locale.Wednesday + \li \c Locale.Thursday + \li \c Locale.Friday + \li \c Locale.Saturday + \endlist + */ + +ListModel { + id: root + + /* + The locale that this model should be based on. + This affects which day of the week is first in the model. + */ + property var locale + + ListElement { + dayOfWeek: Locale.Sunday + } + ListElement { + dayOfWeek: Locale.Monday + } + ListElement { + dayOfWeek: Locale.Tuesday + } + ListElement { + dayOfWeek: Locale.Wednesday + } + ListElement { + dayOfWeek: Locale.Thursday + } + ListElement { + dayOfWeek: Locale.Friday + } + ListElement { + dayOfWeek: Locale.Saturday + } + + Component.onCompleted: updateFirstDayOfWeek() + onLocaleChanged: updateFirstDayOfWeek() + + function updateFirstDayOfWeek() { + var daysOfWeek = [Locale.Sunday, Locale.Monday, Locale.Tuesday, + Locale.Wednesday, Locale.Thursday, Locale.Friday, Locale.Saturday]; + var firstDayOfWeek = root.locale.firstDayOfWeek; + + var shifted = daysOfWeek.splice(firstDayOfWeek, daysOfWeek.length - firstDayOfWeek); + daysOfWeek = shifted.concat(daysOfWeek) + + if (firstDayOfWeek !== root.get(0).dayOfWeek) { + for (var i = 0; i < daysOfWeek.length; ++i) { + root.setProperty(i, "dayOfWeek", daysOfWeek[i]); + } + } + } +} diff --git a/deployment_test/QtQuick/Controls/Private/CalendarHeaderModel.qmlc b/deployment_test/QtQuick/Controls/Private/CalendarHeaderModel.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..dba05b5ccfcc9be5ad8c3abdc78a1f6bcd96f8e6 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Private/CalendarHeaderModel.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Private/CalendarUtils.js b/deployment_test/QtQuick/Controls/Private/CalendarUtils.js new file mode 100644 index 0000000000000000000000000000000000000000..9a93d8daed40252bdb3b7b690882bfe0fb19915e --- /dev/null +++ b/deployment_test/QtQuick/Controls/Private/CalendarUtils.js @@ -0,0 +1,137 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +.pragma library + +var daysInAWeek = 7; +var monthsInAYear = 12; + +// Not the number of weeks per month, but the number of weeks that are +// shown on a typical calendar. +var weeksOnACalendarMonth = 6; + +// Can't create year 1 directly... +var minimumCalendarDate = new Date(-1, 0, 1); +minimumCalendarDate.setFullYear(minimumCalendarDate.getFullYear() + 2); +var maximumCalendarDate = new Date(275759, 9, 25); + +function daysInMonth(date) { + // Passing 0 as the day will give us the previous month, which will be + // date.getMonth() since we added 1 to it. + return new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate(); +} + +/*! + Returns a copy of \a date with its month set to \a month, keeping the same + day if possible. Does not modify \a date. +*/ +function setMonth(date, month) { + var oldDay = date.getDate(); + var newDate = new Date(date); + // Set the day first, because setting the month could cause it to skip ahead + // a month if the day is larger than the latest day in that month. + newDate.setDate(1); + newDate.setMonth(month); + // We'd like to have the previous day still selected when we change + // months, but it might not be possible, so use the smallest of the two. + newDate.setDate(Math.min(oldDay, daysInMonth(newDate))); + return newDate; +} + +/*! + Returns the cell rectangle for the cell at the given \a index, assuming + that the grid has a number of columns equal to \a columns and rows + equal to \a rows, with an available width of \a availableWidth and height + of \a availableHeight. + + If \a gridLineWidth is greater than \c 0, the cell rectangle will be + calculated under the assumption that there is a grid between the cells: + + 31 | 1 | 2 | 3 | 4 | 5 | 6 + -------------------------------- + 7 | 8 | 9 | 10 | 11 | 12 | 13 + -------------------------------- + 14 | 15 | 16 | 17 | 18 | 19 | 20 + -------------------------------- + 21 | 22 | 23 | 24 | 25 | 26 | 27 + -------------------------------- + 28 | 29 | 30 | 31 | 1 | 2 | 3 + -------------------------------- + 4 | 5 | 6 | 7 | 8 | 9 | 10 +*/ +function cellRectAt(index, columns, rows, availableWidth, availableHeight, gridLineWidth) { + var col = Math.floor(index % columns); + var row = Math.floor(index / columns); + + var availableWidthMinusGridLines = availableWidth - ((columns - 1) * gridLineWidth); + var availableHeightMinusGridLines = availableHeight - ((rows - 1) * gridLineWidth); + var remainingHorizontalSpace = Math.floor(availableWidthMinusGridLines % columns); + var remainingVerticalSpace = Math.floor(availableHeightMinusGridLines % rows); + var baseCellWidth = Math.floor(availableWidthMinusGridLines / columns); + var baseCellHeight = Math.floor(availableHeightMinusGridLines / rows); + + var rect = Qt.rect(0, 0, 0, 0); + + rect.x = baseCellWidth * col; + rect.width = baseCellWidth; + if (remainingHorizontalSpace > 0) { + if (col < remainingHorizontalSpace) { + ++rect.width; + } + + // This cell's x position should be increased by 1 for every column above it. + rect.x += Math.min(remainingHorizontalSpace, col); + } + + rect.y = baseCellHeight * row; + rect.height = baseCellHeight; + if (remainingVerticalSpace > 0) { + if (row < remainingVerticalSpace) { + ++rect.height; + } + + // This cell's y position should be increased by 1 for every row above it. + rect.y += Math.min(remainingVerticalSpace, row); + } + + rect.x += col * gridLineWidth; + rect.y += row * gridLineWidth; + + return rect; +} diff --git a/deployment_test/QtQuick/Controls/Private/CalendarUtils.jsc b/deployment_test/QtQuick/Controls/Private/CalendarUtils.jsc new file mode 100644 index 0000000000000000000000000000000000000000..2b0e7a9237daaa336f523ed7cc68cf80dff905b0 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Private/CalendarUtils.jsc differ diff --git a/deployment_test/QtQuick/Controls/Private/ColumnMenuContent.qml b/deployment_test/QtQuick/Controls/Private/ColumnMenuContent.qml new file mode 100644 index 0000000000000000000000000000000000000000..5f8b4d684fd8a098cdc3cd17f3c849a6d4122588 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Private/ColumnMenuContent.qml @@ -0,0 +1,252 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQml 2.14 as Qml +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +Item { + id: content + + property Component menuItemDelegate + property Component scrollIndicatorStyle + property Component scrollerStyle + property var itemsModel + property int minWidth: 100 + property real maxHeight: 800 + readonly property bool mousePressed: hoverArea.pressed + + signal triggered(var item) + + function menuItemAt(index) { + list.currentIndex = index + return list.currentItem + } + + width: Math.max(list.contentWidth, minWidth) + height: Math.min(list.contentHeight, fittedMaxHeight) + + readonly property int currentIndex: __menu.__currentIndex + property Item currentItem: null + property int itemHeight: 23 + + Component.onCompleted: { + var children = list.contentItem.children + for (var i = 0; i < list.count; i++) { + var child = children[i] + if (child.visible && child.styleData.type === MenuItemType.Item) { + itemHeight = children[i].height + break + } + } + } + + readonly property int fittingItems: Math.floor((maxHeight - downScroller.height) / itemHeight) + readonly property real fittedMaxHeight: itemHeight * fittingItems + downScroller.height + readonly property bool shouldUseScrollers: scrollView.style === emptyScrollerStyle && itemsModel.length > fittingItems + readonly property real upScrollerHeight: upScroller.visible ? upScroller.height : 0 + readonly property real downScrollerHeight: downScroller.visible ? downScroller.height : 0 + property var oldMousePos: undefined + property var openedSubmenu: null + + function updateCurrentItem(mouse) { + var pos = mapToItem(list.contentItem, mouse.x, mouse.y) + var dx = 0 + var dy = 0 + var dist = 0 + if (openedSubmenu && oldMousePos !== undefined) { + dx = mouse.x - oldMousePos.x + dy = mouse.y - oldMousePos.y + dist = Math.sqrt(dx * dx + dy * dy) + } + oldMousePos = mouse + if (openedSubmenu && dist > 5) { + var menuRect = __menu.__popupGeometry + var submenuRect = openedSubmenu.__popupGeometry + var angle = Math.atan2(dy, dx) + var ds = 0 + if (submenuRect.x > menuRect.x) { + ds = menuRect.width - oldMousePos.x + } else { + angle = Math.PI - angle + ds = oldMousePos.x + } + var above = submenuRect.y - menuRect.y - oldMousePos.y + var below = submenuRect.height - above + var minAngle = Math.atan2(above, ds) + var maxAngle = Math.atan2(below, ds) + // This tests that the current mouse position is in + // the triangle defined by the previous mouse position + // and the submenu's top-left and bottom-left corners. + if (minAngle < angle && angle < maxAngle) { + sloppyTimer.start() + return + } + } + + if (!currentItem || !currentItem.contains(Qt.point(pos.x - currentItem.x, pos.y - currentItem.y))) { + if (currentItem && !hoverArea.pressed + && currentItem.styleData.type === MenuItemType.Menu) { + currentItem.__closeSubMenu() + openedSubmenu = null + } + currentItem = list.itemAt(pos.x, pos.y) + if (currentItem) { + __menu.__currentIndex = currentItem.__menuItemIndex + if (currentItem.styleData.type === MenuItemType.Menu) { + showCurrentItemSubMenu(false) + } + } else { + __menu.__currentIndex = -1 + } + } + } + + function showCurrentItemSubMenu(immediately) { + if (!currentItem.__menuItem.__popupVisible) { + currentItem.__showSubMenu(immediately) + openedSubmenu = currentItem.__menuItem + } + } + + Timer { + id: sloppyTimer + interval: 1000 + + // Stop timer as soon as we hover one of the submenu items + property int currentIndex: openedSubmenu ? openedSubmenu.__currentIndex : -1 + onCurrentIndexChanged: if (currentIndex !== -1) stop() + + onTriggered: { + if (openedSubmenu && openedSubmenu.__currentIndex === -1) + updateCurrentItem(oldMousePos) + } + } + + Component { + id: emptyScrollerStyle + Style { + padding { left: 0; right: 0; top: 0; bottom: 0 } + property bool scrollToClickedPosition: false + property Component frame: Item { visible: false } + property Component corner: Item { visible: false } + property Component __scrollbar: Item { visible: false } + } + } + + ScrollView { + id: scrollView + anchors { + fill: parent + topMargin: upScrollerHeight + bottomMargin: downScrollerHeight + } + + style: scrollerStyle || emptyScrollerStyle + __wheelAreaScrollSpeed: itemHeight + + ListView { + id: list + model: itemsModel + delegate: menuItemDelegate + snapMode: ListView.SnapToItem + boundsBehavior: Flickable.StopAtBounds + highlightFollowsCurrentItem: true + highlightMoveDuration: 0 + } + } + + MouseArea { + id: hoverArea + anchors.left: scrollView.left + width: scrollView.width - scrollView.__verticalScrollBar.width + height: parent.height + + hoverEnabled: Settings.hoverEnabled + acceptedButtons: Qt.AllButtons + + onPositionChanged: updateCurrentItem({ "x": mouse.x, "y": mouse.y }) + onPressed: updateCurrentItem({ "x": mouse.x, "y": mouse.y }) + onReleased: { + if (currentItem && currentItem.__menuItem.enabled) { + if (currentItem.styleData.type === MenuItemType.Menu) { + showCurrentItemSubMenu(true) + } else { + content.triggered(currentItem) + } + } + } + onExited: { + if (currentItem && !currentItem.__menuItem.__popupVisible) { + currentItem = null + __menu.__currentIndex = -1 + } + } + + MenuContentScroller { + id: upScroller + direction: Qt.UpArrow + visible: shouldUseScrollers && !list.atYBeginning + function scrollABit() { list.contentY -= itemHeight } + } + + MenuContentScroller { + id: downScroller + direction: Qt.DownArrow + visible: shouldUseScrollers && !list.atYEnd + function scrollABit() { list.contentY += itemHeight } + } + } + + Timer { + interval: 1 + running: true + repeat: false + onTriggered: list.positionViewAtIndex(currentIndex, !scrollView.__style + ? ListView.Center : ListView.Beginning) + } + + Qml.Binding { + target: scrollView.__verticalScrollBar + property: "singleStep" + value: itemHeight + restoreMode: Binding.RestoreBinding + } +} diff --git a/deployment_test/QtQuick/Controls/Private/ColumnMenuContent.qmlc b/deployment_test/QtQuick/Controls/Private/ColumnMenuContent.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..d5ada9cba3a8dc159269b06726e1d466067f5753 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Private/ColumnMenuContent.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Private/ContentItem.qml b/deployment_test/QtQuick/Controls/Private/ContentItem.qml new file mode 100644 index 0000000000000000000000000000000000000000..2c5b37285dfff032d974fef8c150b6d86b37a121 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Private/ContentItem.qml @@ -0,0 +1,108 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Layouts 1.1 + +Item { + id: contentItem + property real minimumWidth: __calcMinimum('Width') + property real minimumHeight: __calcMinimum('Height') + property real maximumWidth: Number.POSITIVE_INFINITY + property real maximumHeight: Number.POSITIVE_INFINITY + implicitWidth: __calcImplicitWidth() + implicitHeight: __calcImplicitHeight() + + /*! \internal */ + property Item __layoutItem: contentItem.visibleChildren.length === 1 ? contentItem.visibleChildren[0] : null + /*! \internal */ + property real __marginsWidth: __layoutItem ? __layoutItem.anchors.leftMargin + __layoutItem.anchors.rightMargin : 0 + /*! \internal */ + property real __marginsHeight: __layoutItem ? __layoutItem.anchors.topMargin + __layoutItem.anchors.bottomMargin : 0 + + /*! \internal */ + property bool __noMinimumWidthGiven : false + /*! \internal */ + property bool __noMinimumHeightGiven : false + /*! \internal */ + property bool __noImplicitWidthGiven : false + /*! \internal */ + property bool __noImplicitHeightGiven : false + + function __calcImplicitWidth() { + if (__layoutItem && __layoutItem.anchors.fill) + return __calcImplicit('Width') + return contentItem.childrenRect.x + contentItem.childrenRect.width + } + + function __calcImplicitHeight() { + if (__layoutItem && __layoutItem.anchors.fill) + return __calcImplicit('Height') + return contentItem.childrenRect.y + contentItem.childrenRect.height + } + + function __calcImplicit(hw) { + var pref = __layoutItem.Layout['preferred' + hw] + if (pref < 0) { + pref = __layoutItem['implicit' + hw] + } + contentItem['__noImplicit' + hw + 'Given'] = (pref === 0 ? true : false) + pref += contentItem['__margins' + hw] + return pref + } + + function __calcMinimum(hw) { // hw is 'Width' or 'Height' + return (__layoutItem && __layoutItem.anchors.fill) ? __calcMinMax('minimum', hw) : 0 + } + + function __calcMaximum(hw) { // hw is 'Width' or 'Height' + return (__layoutItem && __layoutItem.anchors.fill) ? __calcMinMax('maximum', hw) : Number.POSITIVE_INFINITY + } + + function __calcMinMax(minMaxConstraint, hw) { + var attachedPropName = minMaxConstraint + hw + var extent = __layoutItem.Layout[attachedPropName] + + if (minMaxConstraint === 'minimum') + contentItem['__noMinimum' + hw + 'Given'] = (extent === 0 ? true : false) + + extent += contentItem['__margins' + hw] + return extent + } +} diff --git a/deployment_test/QtQuick/Controls/Private/ContentItem.qmlc b/deployment_test/QtQuick/Controls/Private/ContentItem.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..d305adfdb6c04a31560765282481a3bdfa1d759d Binary files /dev/null and b/deployment_test/QtQuick/Controls/Private/ContentItem.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Private/Control.qml b/deployment_test/QtQuick/Controls/Private/Control.qml new file mode 100644 index 0000000000000000000000000000000000000000..182a1e9933bf92cb8800f5e2f33d9b3c982108c5 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Private/Control.qml @@ -0,0 +1,94 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls.Styles 1.1 + +/*! + \qmltype Control + \internal + \qmlabstract + \inqmlmodule QtQuick.Controls.Private +*/ +FocusScope { + id: root + + /*! \qmlproperty Component Control::style + + The style Component for this control. + \sa {Qt Quick Controls Styles QML Types} + + */ + property Component style + + /*! \internal */ + property QtObject __style: styleLoader.item + + /*! \internal */ + property Item __panel: panelLoader.item + + /*! \internal */ + property var styleHints + + implicitWidth: __panel ? __panel.implicitWidth: 0 + implicitHeight: __panel ? __panel.implicitHeight: 0 + baselineOffset: __panel ? __panel.baselineOffset: 0 + activeFocusOnTab: false + + /*! \internal */ + property alias __styleData: styleLoader.styleData + + Loader { + id: styleLoader + sourceComponent: style + property Item __control: root + property QtObject styleData: null + onStatusChanged: { + if (status === Loader.Error) + console.error("Failed to load Style for", root) + } + } + + Loader { + id: panelLoader + anchors.fill: parent + sourceComponent: __style ? __style.panel : null + onStatusChanged: if (status === Loader.Error) console.error("Failed to load Style for", root) + } +} diff --git a/deployment_test/QtQuick/Controls/Private/Control.qmlc b/deployment_test/QtQuick/Controls/Private/Control.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..38270477f94074e15d80bcf1dbaa8fcda54259fa Binary files /dev/null and b/deployment_test/QtQuick/Controls/Private/Control.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Private/EditMenu.qml b/deployment_test/QtQuick/Controls/Private/EditMenu.qml new file mode 100644 index 0000000000000000000000000000000000000000..fde124ea3731437e7d5c08e0654c143595889887 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Private/EditMenu.qml @@ -0,0 +1,88 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +Loader { + property Item control + property Item input + property Item cursorHandle + property Item selectionHandle + property Flickable flickable + property Component defaultMenu: item && item.defaultMenu ? item.defaultMenu : null + property QtObject menuInstance: null + property MouseArea mouseArea + property QtObject style: __style + + Connections { + target: control + function onMenuChanged() { + if (menuInstance !== null) { + menuInstance.destroy() + menuInstance = null + } + } + } + + function getMenuInstance() + { + // Lazy load menu when first requested + if (!menuInstance && control.menu) { + menuInstance = control.menu.createObject(input); + } + return menuInstance; + } + + function syncStyle() { + if (!style) + return; + + if (style.__editMenu) + sourceComponent = style.__editMenu; + else { + // todo: get ios/android/base menus from style as well + source = (Qt.resolvedUrl(Qt.platform.os === "ios" ? "" + : Qt.platform.os === "android" ? "" : "EditMenu_base.qml")); + } + } + onStyleChanged: syncStyle(); + Component.onCompleted: syncStyle(); +} diff --git a/deployment_test/QtQuick/Controls/Private/EditMenu.qmlc b/deployment_test/QtQuick/Controls/Private/EditMenu.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..e60c5cd67e90a12f6a41450c148b78f6dfa7b7c2 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Private/EditMenu.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Private/EditMenu_base.qml b/deployment_test/QtQuick/Controls/Private/EditMenu_base.qml new file mode 100644 index 0000000000000000000000000000000000000000..346eba2da54468e116a25f930cf78ab424e619a7 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Private/EditMenu_base.qml @@ -0,0 +1,173 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +Item { + id: editMenuBase + anchors.fill: parent + + Component { + id: undoAction + Action { + text: qsTr("&Undo") + shortcut: StandardKey.Undo + iconName: "edit-undo" + enabled: input.canUndo + onTriggered: input.undo() + } + } + + Component { + id: redoAction + Action { + text: qsTr("&Redo") + shortcut: StandardKey.Redo + iconName: "edit-redo" + enabled: input.canRedo + onTriggered: input.redo() + } + } + + Component { + id: cutAction + Action { + text: qsTr("Cu&t") + shortcut: StandardKey.Cut + iconName: "edit-cut" + enabled: !input.readOnly && selectionStart !== selectionEnd + onTriggered: { + input.cut(); + input.select(input.cursorPosition, input.cursorPosition); + } + } + } + + Component { + id: copyAction + Action { + text: qsTr("&Copy") + shortcut: StandardKey.Copy + iconName: "edit-copy" + enabled: input.selectionStart !== input.selectionEnd + onTriggered: { + input.copy(); + input.select(input.cursorPosition, input.cursorPosition); + } + } + } + + Component { + id: pasteAction + Action { + text: qsTr("&Paste") + shortcut: StandardKey.Paste + iconName: "edit-paste" + enabled: input.canPaste + onTriggered: input.paste() + } + } + + Component { + id: deleteAction + Action { + text: qsTr("Delete") + shortcut: StandardKey.Delete + iconName: "edit-delete" + enabled: !input.readOnly && input.selectionStart !== input.selectionEnd + onTriggered: input.remove(input.selectionStart, input.selectionEnd) + } + } + + Component { + id: clearAction + Action { + text: qsTr("Clear") + shortcut: StandardKey.DeleteCompleteLine + iconName: "edit-clear" + enabled: !input.readOnly && input.length > 0 + onTriggered: input.remove(0, input.length) + } + } + + Component { + id: selectAllAction + Action { + text: qsTr("Select All") + shortcut: StandardKey.SelectAll + enabled: !(input.selectionStart === 0 && input.selectionEnd === input.length) + onTriggered: input.selectAll() + } + } + + property Component defaultMenu: Menu { + MenuItem { action: undoAction.createObject(editMenuBase) } + MenuItem { action: redoAction.createObject(editMenuBase) } + MenuSeparator {} + MenuItem { action: cutAction.createObject(editMenuBase) } + MenuItem { action: copyAction.createObject(editMenuBase) } + MenuItem { action: pasteAction.createObject(editMenuBase) } + MenuItem { action: deleteAction.createObject(editMenuBase) } + MenuItem { action: clearAction.createObject(editMenuBase) } + MenuSeparator {} + MenuItem { action: selectAllAction.createObject(editMenuBase) } + } + + Connections { + target: mouseArea + + function onClicked() { + if (input.selectionStart === input.selectionEnd) { + var cursorPos = input.positionAt(mouse.x, mouse.y) + input.moveHandles(cursorPos, cursorPos) + } + + input.activate() + + if (control.menu) { + var menu = getMenuInstance(); + menu.__dismissAndDestroy(); + var menuPos = mapToItem(null, mouse.x, mouse.y) + menu.__popup(Qt.rect(menuPos.x, menuPos.y, 0, 0), -1, MenuPrivate.EditMenu); + } + } + } +} diff --git a/deployment_test/QtQuick/Controls/Private/EditMenu_base.qmlc b/deployment_test/QtQuick/Controls/Private/EditMenu_base.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..270ae19ca5317e00b4219d5a36e1e5f9781cf8c1 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Private/EditMenu_base.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Private/FastGlow.qml b/deployment_test/QtQuick/Controls/Private/FastGlow.qml new file mode 100644 index 0000000000000000000000000000000000000000..1a8b7a81d35afd8cff01b6f67e17e65a5006686c --- /dev/null +++ b/deployment_test/QtQuick/Controls/Private/FastGlow.qml @@ -0,0 +1,330 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.4 + +Item { + id: rootItem + property variant source + property real spread: 0.0 + property real blur: 0.0 + property color color: "white" + property bool transparentBorder: false + property bool cached: false + + SourceProxy { + id: sourceProxy + input: rootItem.source + } + + ShaderEffectSource { + id: cacheItem + anchors.fill: shaderItem + visible: rootItem.cached + smooth: true + sourceItem: shaderItem + live: true + hideSource: visible + } + + property string __internalBlurVertexShader: "qrc:/QtQuick/Controls/Shaders/blur.vert" + + property string __internalBlurFragmentShader: "qrc:/QtQuick/Controls/Shaders/blur.frag" + + ShaderEffect { + id: level0 + property variant source: sourceProxy.output + anchors.fill: parent + visible: false + smooth: true + } + + ShaderEffectSource { + id: level1 + width: Math.ceil(shaderItem.width / 32) * 32 + height: Math.ceil(shaderItem.height / 32) * 32 + sourceItem: level0 + hideSource: rootItem.visible + sourceRect: transparentBorder ? Qt.rect(-64, -64, shaderItem.width, shaderItem.height) : Qt.rect(0,0,0,0) + smooth: true + visible: false + } + + ShaderEffect { + id: effect1 + property variant source: level1 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level2 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level2 + width: level1.width / 2 + height: level1.height / 2 + sourceItem: effect1 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect2 + property variant source: level2 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level3 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level3 + width: level2.width / 2 + height: level2.height / 2 + sourceItem: effect2 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect3 + property variant source: level3 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level4 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level4 + width: level3.width / 2 + height: level3.height / 2 + sourceItem: effect3 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect4 + property variant source: level4 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level5 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level5 + width: level4.width / 2 + height: level4.height / 2 + sourceItem: effect4 + hideSource: rootItem.visible + visible: false + smooth: true + } + + ShaderEffect { + id: effect5 + property variant source: level5 + property real yStep: 1/height + property real xStep: 1/width + anchors.fill: level6 + visible: false + smooth: true + vertexShader: __internalBlurVertexShader + fragmentShader: __internalBlurFragmentShader + } + + ShaderEffectSource { + id: level6 + width: level5.width / 2 + height: level5.height / 2 + sourceItem: effect5 + hideSource: rootItem.visible + visible: false + smooth: true + } + + Item { + id: dummysource + width: 1 + height: 1 + visible: false + } + + ShaderEffectSource { + id: dummy + width: 1 + height: 1 + sourceItem: dummysource + visible: false + smooth: false + live: false + } + + ShaderEffect { + id: shaderItem + x: transparentBorder ? -64 : 0 + y: transparentBorder ? -64 : 0 + width: transparentBorder ? parent.width + 128 : parent.width + height: transparentBorder ? parent.height + 128 : parent.height + + property variant source1: level1 + property variant source2: level2 + property variant source3: level3 + property variant source4: level4 + property variant source5: level5 + property variant source6: level6 + property real lod: rootItem.blur + + property real weight1; + property real weight2; + property real weight3; + property real weight4; + property real weight5; + property real weight6; + + property real spread: 1.0 - (rootItem.spread * 0.98) + property alias color: rootItem.color + + function weight(v) { + if (v <= 0.0) + return 1 + if (v >= 0.5) + return 0 + + return 1.0 - v / 0.5 + } + + function calculateWeights() { + + var w1 = weight(Math.abs(lod - 0.100)) + var w2 = weight(Math.abs(lod - 0.300)) + var w3 = weight(Math.abs(lod - 0.500)) + var w4 = weight(Math.abs(lod - 0.700)) + var w5 = weight(Math.abs(lod - 0.900)) + var w6 = weight(Math.abs(lod - 1.100)) + + var sum = w1 + w2 + w3 + w4 + w5 + w6; + weight1 = w1 / sum; + weight2 = w2 / sum; + weight3 = w3 / sum; + weight4 = w4 / sum; + weight5 = w5 / sum; + weight6 = w6 / sum; + + upateSources() + } + + function upateSources() { + var sources = new Array(); + var weights = new Array(); + + if (weight1 > 0) { + sources.push(level1) + weights.push(weight1) + } + + if (weight2 > 0) { + sources.push(level2) + weights.push(weight2) + } + + if (weight3 > 0) { + sources.push(level3) + weights.push(weight3) + } + + if (weight4 > 0) { + sources.push(level4) + weights.push(weight4) + } + + if (weight5 > 0) { + sources.push(level5) + weights.push(weight5) + } + + if (weight6 > 0) { + sources.push(level6) + weights.push(weight6) + } + + for (var j = sources.length; j < 6; j++) { + sources.push(dummy) + weights.push(0.0) + } + + source1 = sources[0] + source2 = sources[1] + source3 = sources[2] + source4 = sources[3] + source5 = sources[4] + source6 = sources[5] + + weight1 = weights[0] + weight2 = weights[1] + weight3 = weights[2] + weight4 = weights[3] + weight5 = weights[4] + weight6 = weights[5] + } + + Component.onCompleted: calculateWeights() + + onLodChanged: calculateWeights() + + fragmentShader: "qrc:/QtQuick/Controls/Shaders/glow.frag" + } +} diff --git a/deployment_test/QtQuick/Controls/Private/FastGlow.qmlc b/deployment_test/QtQuick/Controls/Private/FastGlow.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..71c1c44361dfbb018f2ce0fbf71cc4d3b1525ec5 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Private/FastGlow.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Private/FocusFrame.qml b/deployment_test/QtQuick/Controls/Private/FocusFrame.qml new file mode 100644 index 0000000000000000000000000000000000000000..570df32b715f5e539bf147d690b859e1a76b3563 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Private/FocusFrame.qml @@ -0,0 +1,67 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype FocusFrame + \internal + \inqmlmodule QtQuick.Controls.Private +*/ +Item { + id: root + activeFocusOnTab: false + Accessible.role: Accessible.StatusBar + + anchors.topMargin: focusMargin + anchors.leftMargin: focusMargin + anchors.rightMargin: focusMargin + anchors.bottomMargin: focusMargin + + property int focusMargin: loader.item ? loader.item.margin : -3 + + Loader { + id: loader + z: 2 + anchors.fill: parent + sourceComponent: Settings.styleComponent(Settings.style, "FocusFrameStyle.qml", root) + } +} diff --git a/deployment_test/QtQuick/Controls/Private/FocusFrame.qmlc b/deployment_test/QtQuick/Controls/Private/FocusFrame.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..7696bad6bff0decec158cb46d257788c64d44016 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Private/FocusFrame.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Private/HoverButton.qml b/deployment_test/QtQuick/Controls/Private/HoverButton.qml new file mode 100644 index 0000000000000000000000000000000000000000..bc7f91bb2d11302c48882f5adf5a326596428192 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Private/HoverButton.qml @@ -0,0 +1,79 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +Item { + id: button + property alias source: image.source + signal clicked + + Rectangle { + id: fillRect + anchors.fill: parent + color: "black" + opacity: mouse.pressed ? 0.07 : mouse.containsMouse ? 0.02 : 0.0 + } + + Rectangle { + border.color: gridColor + anchors.fill: parent + anchors.margins: -1 + color: "transparent" + opacity: fillRect.opacity * 10 + } + + Image { + id: image + width: Math.min(implicitWidth, parent.width * 0.4) + height: Math.min(implicitHeight, parent.height * 0.4) + anchors.centerIn: parent + fillMode: Image.PreserveAspectFit + opacity: 0.6 + } + + MouseArea { + id: mouse + anchors.fill: parent + onClicked: button.clicked() + hoverEnabled: Settings.hoverEnabled + } +} diff --git a/deployment_test/QtQuick/Controls/Private/HoverButton.qmlc b/deployment_test/QtQuick/Controls/Private/HoverButton.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..c2ac174ad93589cf0d8a3f988b8b057997067714 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Private/HoverButton.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Private/MenuContentItem.qml b/deployment_test/QtQuick/Controls/Private/MenuContentItem.qml new file mode 100644 index 0000000000000000000000000000000000000000..9fcb2f0f53c194034afd49c11d2b1c99d9ee4209 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Private/MenuContentItem.qml @@ -0,0 +1,282 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQml 2.14 as Qml +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Styles 1.1 +import QtQuick.Controls.Private 1.0 + +Loader { + id: menuFrameLoader + + property var __menu + + Accessible.role: Accessible.PopupMenu + + visible: status === Loader.Ready + width: content.width + (d.style ? d.style.padding.left + d.style.padding.right : 0) + height: content.height + (d.style ? d.style.padding.top + d.style.padding.bottom : 0) + + Loader { + id: styleLoader + active: !__menu.isNative + sourceComponent: __menu.style + property alias __control: menuFrameLoader + onStatusChanged: { + if (status === Loader.Error) + console.error("Failed to load Style for", __menu) + } + } + sourceComponent: d.style ? d.style.frame : undefined + + QtObject { + id: d + property var mnemonicsMap: ({}) + readonly property Style style: styleLoader.item + readonly property Component menuItemPanel: style ? style.menuItemPanel : null + + function canBeHovered(index) { + var item = content.menuItemAt(index) + if (item && item.visible && item.styleData.type !== MenuItemType.Separator && item.styleData.enabled) { + __menu.__currentIndex = index + return true + } + return false + } + + function triggerCurrent() { + var item = content.menuItemAt(__menu.__currentIndex) + if (item) + triggerAndDismiss(item) + } + + function triggerAndDismiss(item) { + if (!item) + return; + if (item.styleData.type === MenuItemType.Separator) + __menu.__dismissAndDestroy() + else if (item.styleData.type === MenuItemType.Item) + item.__menuItem.trigger() + } + } + + focus: true + + Keys.onPressed: { + var item = null + if (!(event.modifiers & Qt.AltModifier) + && (item = d.mnemonicsMap[event.text.toUpperCase()])) { + if (item.styleData.type === MenuItemType.Menu) { + __menu.__currentIndex = item.__menuItemIndex + item.__showSubMenu(true) + item.__menuItem.__currentIndex = 0 + } else { + d.triggerAndDismiss(item) + } + event.accepted = true + } else { + event.accepted = false + } + } + + Keys.onEscapePressed: __menu.__dismissAndDestroy() + + Keys.onDownPressed: { + if (__menu.__currentIndex < 0) + __menu.__currentIndex = -1 + + for (var i = __menu.__currentIndex + 1; + i < __menu.items.length && !d.canBeHovered(i); i++) + ; + event.accepted = true + } + + Keys.onUpPressed: { + for (var i = __menu.__currentIndex - 1; + i >= 0 && !d.canBeHovered(i); i--) + ; + event.accepted = true + } + + Keys.onLeftPressed: { + if ((event.accepted = __menu.__parentMenu.hasOwnProperty("title"))) + __menu.__closeAndDestroy() + } + + Keys.onRightPressed: { + var item = content.menuItemAt(__menu.__currentIndex) + if (item && item.styleData.type === MenuItemType.Menu + && !item.__menuItem.__popupVisible) { + item.__showSubMenu(true) + item.__menuItem.__currentIndex = 0 + event.accepted = true + } else { + event.accepted = false + } + } + + Keys.onSpacePressed: d.triggerCurrent() + Keys.onReturnPressed: d.triggerCurrent() + Keys.onEnterPressed: d.triggerCurrent() + + Qml.Binding { + // Make sure the styled frame is in the background + target: item + property: "z" + value: content.z - 1 + restoreMode: Binding.RestoreBinding + } + + ColumnMenuContent { + id: content + x: d.style ? d.style.padding.left : 0 + y: d.style ? d.style.padding.top : 0 + menuItemDelegate: menuItemComponent + scrollIndicatorStyle: d.style && d.style.scrollIndicator || null + scrollerStyle: d.style && d.style.__scrollerStyle + itemsModel: __menu.items + minWidth: __menu.__minimumWidth + maxHeight: d.style ? d.style.__maxPopupHeight : 0 + onTriggered: d.triggerAndDismiss(item) + } + + Component { + id: menuItemComponent + Loader { + id: menuItemLoader + + Accessible.role: opts.type === MenuItemType.Item || opts.type === MenuItemType.Menu ? + Accessible.MenuItem : Accessible.NoRole + Accessible.name: StyleHelpers.removeMnemonics(opts.text) + Accessible.checkable: opts.checkable + Accessible.checked: opts.checked + Accessible.onPressAction: { + if (opts.type === MenuItemType.Item) { + d.triggerAndDismiss(menuItemLoader) + } else if (opts.type === MenuItemType.Menu) { + __showSubMenu(true /*immediately*/) + } + } + + property QtObject styleData: QtObject { + id: opts + readonly property int index: __menuItemIndex + readonly property int type: __menuItem ? __menuItem.type : -1 + readonly property bool selected: type !== MenuItemType.Separator && __menu.__currentIndex === index + readonly property bool pressed: type !== MenuItemType.Separator && __menu.__currentIndex === index + && content.mousePressed // TODO Add key pressed condition once we get delayed menu closing + readonly property string text: type === MenuItemType.Menu ? __menuItem.title : + type !== MenuItemType.Separator ? __menuItem.text : "" + readonly property bool underlineMnemonic: __menu.__contentItem.altPressed + readonly property string shortcut: !!__menuItem && __menuItem["shortcut"] || "" + readonly property var iconSource: !!__menuItem && __menuItem["iconSource"] || undefined + readonly property bool enabled: type !== MenuItemType.Separator && !!__menuItem && __menuItem.enabled + readonly property bool checked: !!__menuItem && !!__menuItem["checked"] + readonly property bool checkable: !!__menuItem && !!__menuItem["checkable"] + readonly property bool exclusive: !!__menuItem && !!__menuItem["exclusiveGroup"] + readonly property int scrollerDirection: Qt.NoArrow + } + + readonly property var __menuItem: modelData + readonly property int __menuItemIndex: index + + sourceComponent: d.menuItemPanel + enabled: visible && opts.enabled + visible: !!__menuItem && __menuItem.visible + active: visible + + function __showSubMenu(immediately) { + if (!__menuItem.enabled) + return; + if (immediately) { + if (__menu.__currentIndex === __menuItemIndex) { + if (__menuItem.__usingDefaultStyle) + __menuItem.style = __menu.style + __menuItem.__popup(Qt.rect(menuFrameLoader.width - (d.style.submenuOverlap + d.style.padding.right), -d.style.padding.top, 0, 0), -1) + } + } else { + openMenuTimer.start() + } + } + + Timer { + id: openMenuTimer + interval: d.style.submenuPopupDelay + onTriggered: menuItemLoader.__showSubMenu(true) + } + + function __closeSubMenu() { + if (openMenuTimer.running) + openMenuTimer.stop() + else if (__menuItem.__popupVisible) + closeMenuTimer.start() + } + + Timer { + id: closeMenuTimer + interval: 1 + onTriggered: { + if (__menu.__currentIndex !== __menuItemIndex) + __menuItem.__closeAndDestroy() + } + } + + onLoaded: { + __menuItem.__visualItem = menuItemLoader + + if (content.width < item.implicitWidth) + content.width = item.implicitWidth + + var title = opts.text + var ampersandPos = title.indexOf("&") + if (ampersandPos !== -1) + d.mnemonicsMap[title[ampersandPos + 1].toUpperCase()] = menuItemLoader + } + + Qml.Binding { + target: menuItemLoader.item + property: "width" + property alias menuItem: menuItemLoader.item + value: menuItem ? Math.max(__menu.__minimumWidth, content.width) - 2 * menuItem.x : 0 + restoreMode: Binding.RestoreBinding + } + } + } +} diff --git a/deployment_test/QtQuick/Controls/Private/MenuContentItem.qmlc b/deployment_test/QtQuick/Controls/Private/MenuContentItem.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..13d0eb1c1be2174a0b3043071f19fd3a5d920aa9 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Private/MenuContentItem.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Private/MenuContentScroller.qml b/deployment_test/QtQuick/Controls/Private/MenuContentScroller.qml new file mode 100644 index 0000000000000000000000000000000000000000..f33d2040eaf6b79011ccaf26f2833c7f34f2773f --- /dev/null +++ b/deployment_test/QtQuick/Controls/Private/MenuContentScroller.qml @@ -0,0 +1,83 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +MouseArea { + id: scrollIndicator + property int direction: 0 + + anchors { + top: direction === Qt.UpArrow ? parent.top : undefined + bottom: direction === Qt.DownArrow ? parent.bottom : undefined + } + + hoverEnabled: visible && Settings.hoverEnabled + height: scrollerLoader.height + width: parent.width + + Loader { + id: scrollerLoader + + width: parent.width + sourceComponent: scrollIndicatorStyle + // Extra property values for desktop style + property var __menuItem: null + property var styleData: { + "index": -1, + "type": MenuItemType.ScrollIndicator, + "text": "", + "selected": scrollIndicator.containsMouse, + "scrollerDirection": scrollIndicator.direction, + "checkable": false, + "checked": false, + "enabled": true + } + } + + Timer { + interval: 100 + repeat: true + triggeredOnStart: true + running: parent.containsMouse + onTriggered: scrollABit() + } +} diff --git a/deployment_test/QtQuick/Controls/Private/MenuContentScroller.qmlc b/deployment_test/QtQuick/Controls/Private/MenuContentScroller.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..83238b25ef18eaa08e0b7af60513a0bea33bebac Binary files /dev/null and b/deployment_test/QtQuick/Controls/Private/MenuContentScroller.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Private/MenuItemSubControls.qml b/deployment_test/QtQuick/Controls/Private/MenuItemSubControls.qml new file mode 100644 index 0000000000000000000000000000000000000000..818b957800779c5c65e4019db5412b50677bbfb2 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Private/MenuItemSubControls.qml @@ -0,0 +1,48 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 + +QtObject { + property Component background: null + property Component label: null + property Component submenuIndicator: null + property Component shortcut: null + property Component checkmarkIndicator: null +} diff --git a/deployment_test/QtQuick/Controls/Private/MenuItemSubControls.qmlc b/deployment_test/QtQuick/Controls/Private/MenuItemSubControls.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..f1f2d80b0600dd7b993e7d5bfc2a084b7dc6fb32 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Private/MenuItemSubControls.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Private/ModalPopupBehavior.qml b/deployment_test/QtQuick/Controls/Private/ModalPopupBehavior.qml new file mode 100644 index 0000000000000000000000000000000000000000..c9a4b68fd505b9e54443c792133b5f385e3bc26a --- /dev/null +++ b/deployment_test/QtQuick/Controls/Private/ModalPopupBehavior.qml @@ -0,0 +1,134 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 + +// KNOWN ISSUES +// none + +/*! + \qmltype ModalPopupBehavior + \internal + \inqmlmodule QtQuick.Controls.Private +*/ +Item { + id: popupBehavior + + property bool showing: false + property bool whenAlso: true // modifier to the "showing" property + property bool consumeCancelClick: true + property int delay: 0 // delay before popout becomes visible + property int deallocationDelay: 3000 // 3 seconds + + property Component popupComponent + + property alias popup: popupLoader.item // read-only + property alias window: popupBehavior.root // read-only + + signal prepareToShow + signal prepareToHide + signal cancelledByClick + + // implementation + + anchors.fill: parent + + onShowingChanged: notifyChange() + onWhenAlsoChanged: notifyChange() + function notifyChange() { + if(showing && whenAlso) { + if(popupLoader.sourceComponent == undefined) { + popupLoader.sourceComponent = popupComponent; + } + } else { + mouseArea.enabled = false; // disable before opacity is changed in case it has fading behavior + if(Qt.isQtObject(popupLoader.item)) { + popupBehavior.prepareToHide(); + popupLoader.item.opacity = 0; + } + } + } + + property Item root: findRoot() + function findRoot() { + var p = parent; + while(p.parent != undefined) + p = p.parent; + + return p; + } + + MouseArea { + id: mouseArea + anchors.fill: parent + enabled: false // enabled only when popout is showing + onPressed: { + popupBehavior.showing = false; + mouse.accepted = consumeCancelClick; + cancelledByClick(); + } + } + + Loader { + id: popupLoader + } + + Timer { // visibility timer + running: Qt.isQtObject(popupLoader.item) && showing && whenAlso + interval: delay + onTriggered: { + popupBehavior.prepareToShow(); + mouseArea.enabled = true; + popup.opacity = 1; + } + } + + Timer { // deallocation timer + running: Qt.isQtObject(popupLoader.item) && popupLoader.item.opacity == 0 + interval: deallocationDelay + onTriggered: popupLoader.sourceComponent = undefined + } + + states: State { + name: "active" + when: Qt.isQtObject(popupLoader.item) && popupLoader.item.opacity > 0 + ParentChange { target: popupBehavior; parent: root } + } + } + diff --git a/deployment_test/QtQuick/Controls/Private/ModalPopupBehavior.qmlc b/deployment_test/QtQuick/Controls/Private/ModalPopupBehavior.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..a300afa48000a8822c9ccdda0d96dca991a07d5c Binary files /dev/null and b/deployment_test/QtQuick/Controls/Private/ModalPopupBehavior.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Private/ScrollBar.qml b/deployment_test/QtQuick/Controls/Private/ScrollBar.qml new file mode 100644 index 0000000000000000000000000000000000000000..eea7a73790248bee86861bf83f24e7df604be665 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Private/ScrollBar.qml @@ -0,0 +1,237 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype ScrollBar + \internal + \inqmlmodule QtQuick.Controls.Private +*/ +Item { + id: scrollbar + + property bool isTransient: false + property bool active: false + property int orientation: Qt.Horizontal + property alias minimumValue: slider.minimumValue + property alias maximumValue: slider.maximumValue + property alias value: slider.value + property int singleStep: 20 + + activeFocusOnTab: false + + Accessible.role: Accessible.ScrollBar + implicitWidth: panelLoader.implicitWidth + implicitHeight: panelLoader.implicitHeight + + property bool upPressed + property bool downPressed + property bool pageUpPressed + property bool pageDownPressed + property bool handlePressed + + + property Item __panel: panelLoader.item + Loader { + id: panelLoader + anchors.fill: parent + sourceComponent: __style ? __style.__scrollbar : null + onStatusChanged: if (status === Loader.Error) console.error("Failed to load Style for", root) + property alias __control: scrollbar + property QtObject __styleData: QtObject { + readonly property alias horizontal: internal.horizontal + readonly property alias upPressed: scrollbar.upPressed + readonly property alias downPressed: scrollbar.downPressed + readonly property alias handlePressed: scrollbar.handlePressed + } + } + + MouseArea { + id: internal + property bool horizontal: orientation === Qt.Horizontal + property int pageStep: internal.horizontal ? width : height + property bool scrollToClickposition: internal.scrollToClickPosition + anchors.fill: parent + cursorShape: __panel && __panel.visible ? Qt.ArrowCursor : Qt.IBeamCursor // forces a cursor change + + property bool autoincrement: false + property bool scrollToClickPosition: __style ? __style.scrollToClickedPosition : 0 + + // Update hover item + onEntered: if (!pressed) __panel.activeControl = __panel.hitTest(mouseX, mouseY) + onExited: if (!pressed) __panel.activeControl = "none" + onMouseXChanged: if (!pressed) __panel.activeControl = __panel.hitTest(mouseX, mouseY) + hoverEnabled: Settings.hoverEnabled + preventStealing: true + property var pressedX + property var pressedY + property int oldPosition + property int grooveSize + + Timer { + running: upPressed || downPressed || pageUpPressed || pageDownPressed + interval: 350 + onTriggered: internal.autoincrement = true + } + + Timer { + running: internal.autoincrement + interval: 60 + repeat: true + onTriggered: { + if (upPressed && internal.containsMouse) + internal.decrement(); + else if (downPressed && internal.containsMouse) + internal.increment(); + else if (pageUpPressed) + internal.decrementPage(); + else if (pageDownPressed) + internal.incrementPage(); + } + } + + onPositionChanged: { + if (handlePressed) { + if (!horizontal) + slider.position = oldPosition + (mouseY - pressedY) + else + slider.position = oldPosition + (mouseX - pressedX) + } + } + + onPressed: { + if (mouse.source !== Qt.MouseEventNotSynthesized) { + mouse.accepted = false + return + } + __panel.activeControl = __panel.hitTest(mouseX, mouseY) + scrollToClickposition = scrollToClickPosition + var handleRect = __panel.subControlRect("handle") + var grooveRect = __panel.subControlRect("groove") + grooveSize = horizontal ? grooveRect.width - handleRect.width: + grooveRect.height - handleRect.height; + if (__panel.activeControl === "handle") { + pressedX = mouseX; + pressedY = mouseY; + handlePressed = true; + oldPosition = slider.position; + } else if (__panel.activeControl === "up") { + decrement(); + upPressed = Qt.binding(function() {return containsMouse}); + } else if (__panel.activeControl === "down") { + increment(); + downPressed = Qt.binding(function() {return containsMouse}); + } else if (!scrollToClickposition){ + if (__panel.activeControl === "upPage") { + decrementPage(); + pageUpPressed = true; + } else if (__panel.activeControl === "downPage") { + incrementPage(); + pageDownPressed = true; + } + } else { // scroll to click position + slider.position = horizontal ? mouseX - handleRect.width/2 - grooveRect.x + : mouseY - handleRect.height/2 - grooveRect.y + pressedX = mouseX; + pressedY = mouseY; + handlePressed = true; + oldPosition = slider.position; + } + } + + onReleased: { + __panel.activeControl = __panel.hitTest(mouseX, mouseY); + autoincrement = false; + upPressed = false; + downPressed = false; + handlePressed = false; + pageUpPressed = false; + pageDownPressed = false; + } + + onWheel: { + var stepCount = -(wheel.angleDelta.x ? wheel.angleDelta.x : wheel.angleDelta.y) / 120 + if (stepCount != 0) { + if (wheel.modifiers & Qt.ControlModifier || wheel.modifiers & Qt.ShiftModifier) + incrementPage(stepCount) + else + increment(stepCount) + } + } + + function incrementPage(stepCount) { + value = boundValue(value + getSteps(pageStep, stepCount)) + } + + function decrementPage(stepCount) { + value = boundValue(value - getSteps(pageStep, stepCount)) + } + + function increment(stepCount) { + value = boundValue(value + getSteps(singleStep, stepCount)) + } + + function decrement(stepCount) { + value = boundValue(value - getSteps(singleStep, stepCount)) + } + + function boundValue(val) { + return Math.min(Math.max(val, minimumValue), maximumValue) + } + + function getSteps(step, count) { + if (count) + step *= count + return step + } + + RangeModel { + id: slider + minimumValue: 0.0 + maximumValue: 1.0 + value: 0 + stepSize: 0.0 + inverted: false + positionAtMaximum: internal.grooveSize + } + } +} diff --git a/deployment_test/QtQuick/Controls/Private/ScrollBar.qmlc b/deployment_test/QtQuick/Controls/Private/ScrollBar.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..5f71765fcc3a1fab8d4b961342133a04920d975e Binary files /dev/null and b/deployment_test/QtQuick/Controls/Private/ScrollBar.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Private/ScrollViewHelper.qml b/deployment_test/QtQuick/Controls/Private/ScrollViewHelper.qml new file mode 100644 index 0000000000000000000000000000000000000000..f5ef5b1790edf27377d58947293d1cf30b941e18 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Private/ScrollViewHelper.qml @@ -0,0 +1,234 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQml 2.14 as Qml +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype ScrollViewHeader + \internal + \inqmlmodule QtQuick.Controls.Private +*/ +Item { + id: scrollHelper + + property alias horizontalScrollBar: hscrollbar + property alias verticalScrollBar: vscrollbar + property bool blockUpdates: false + property int availableHeight + property int availableWidth + property int contentHeight + property int contentWidth + property bool active + property int horizontalScrollBarPolicy: Qt.ScrollBarAsNeeded + property int verticalScrollBarPolicy: Qt.ScrollBarAsNeeded + + + property int leftMargin: outerFrame && root.__style ? root.__style.padding.left : 0 + property int rightMargin: outerFrame && root.__style ? root.__style.padding.right : 0 + property int topMargin: outerFrame && root.__style ? root.__style.padding.top : 0 + property int bottomMargin: outerFrame && root.__style ? root.__style.padding.bottom : 0 + + anchors.fill: parent + + Timer { + id: layoutTimer + interval: 0; + onTriggered: { + blockUpdates = true; + scrollHelper.contentWidth = flickableItem !== null ? flickableItem.contentWidth : 0 + scrollHelper.contentHeight = flickableItem !== null ? flickableItem.contentHeight : 0 + scrollHelper.availableWidth = viewport.width + scrollHelper.availableHeight = viewport.height + blockUpdates = false; + hscrollbar.valueChanged(); + vscrollbar.valueChanged(); + } + } + + Connections { + target: viewport + function onWidthChanged() { layoutTimer.running = true } + function onHeightChanged() { layoutTimer.running = true } + } + + Connections { + target: flickableItem + function onContentWidthChanged() { layoutTimer.running = true } + function onContentHeightChanged() { layoutTimer.running = true } + function onContentXChanged() { + hscrollbar.flash() + vscrollbar.flash() + } + function onContentYChanged() { + hscrollbar.flash() + vscrollbar.flash() + } + } + + Loader { + id: cornerFill + z: 1 + sourceComponent: __style ? __style.corner : null + anchors.right: parent.right + anchors.bottom: parent.bottom + anchors.bottomMargin: bottomMargin + anchors.rightMargin: rightMargin + width: visible ? vscrollbar.width : 0 + height: visible ? hscrollbar.height : 0 + visible: hscrollbar.visible && !hscrollbar.isTransient && vscrollbar.visible && !vscrollbar.isTransient + } + + ScrollBar { + id: hscrollbar + readonly property int scrollAmount: contentWidth - availableWidth + readonly property bool scrollable: scrollAmount > 0 + isTransient: !!__panel && !!__panel.isTransient + active: !!__panel && (__panel.sunken || __panel.activeControl !== "none") + enabled: !isTransient || __panel.visible + orientation: Qt.Horizontal + visible: horizontalScrollBarPolicy == Qt.ScrollBarAsNeeded ? scrollable : horizontalScrollBarPolicy == Qt.ScrollBarAlwaysOn + height: visible ? implicitHeight : 0 + z: 1 + maximumValue: scrollable ? scrollAmount : 0 + minimumValue: 0 + anchors.bottom: parent.bottom + anchors.left: parent.left + anchors.right: cornerFill.left + anchors.leftMargin: leftMargin + anchors.bottomMargin: bottomMargin + onScrollAmountChanged: { + var scrollableAmount = scrollable ? scrollAmount : 0 + if (flickableItem && (flickableItem.atXBeginning || flickableItem.atXEnd)) { + value = Math.min(scrollableAmount, flickableItem.contentX - flickableItem.originX); + } else if (value > scrollableAmount) { + value = scrollableAmount; + } + } + onValueChanged: { + if (flickableItem && !blockUpdates) { + flickableItem.contentX = value + flickableItem.originX + } + } + Qml.Binding { + target: hscrollbar.__panel + property: "raised" + value: vscrollbar.active || scrollHelper.active + when: hscrollbar.isTransient + restoreMode: Binding.RestoreBinding + } + Qml.Binding { + target: hscrollbar.__panel + property: "visible" + value: true + when: !hscrollbar.isTransient || scrollHelper.active + restoreMode: Binding.RestoreBinding + } + function flash() { + if (hscrollbar.isTransient) { + hscrollbar.__panel.on = true + hscrollbar.__panel.visible = true + hFlasher.start() + } + } + Timer { + id: hFlasher + interval: 10 + onTriggered: hscrollbar.__panel.on = false + } + } + + ScrollBar { + id: vscrollbar + readonly property int scrollAmount: contentHeight - availableHeight + readonly property bool scrollable: scrollAmount > 0 + isTransient: !!__panel && !!__panel.isTransient + active: !!__panel && (__panel.sunken || __panel.activeControl !== "none") + enabled: !isTransient || __panel.visible + orientation: Qt.Vertical + visible: verticalScrollBarPolicy === Qt.ScrollBarAsNeeded ? scrollable : verticalScrollBarPolicy === Qt.ScrollBarAlwaysOn + width: visible ? implicitWidth : 0 + z: 1 + anchors.bottom: cornerFill.top + maximumValue: scrollable ? scrollAmount + __viewTopMargin : 0 + minimumValue: 0 + anchors.right: parent.right + anchors.top: parent.top + anchors.topMargin: __scrollBarTopMargin + topMargin + anchors.rightMargin: rightMargin + onScrollAmountChanged: { + if (flickableItem && (flickableItem.atYBeginning || flickableItem.atYEnd)) { + value = flickableItem.contentY - flickableItem.originY + } + } + onValueChanged: { + if (flickableItem && !blockUpdates && enabled) { + flickableItem.contentY = value + flickableItem.originY + } + } + Qml.Binding { + target: vscrollbar.__panel + property: "raised" + value: hscrollbar.active || scrollHelper.active + when: vscrollbar.isTransient + restoreMode: Binding.RestoreBinding + } + Qml.Binding { + target: vscrollbar.__panel + property: "visible" + value: true + when: !vscrollbar.isTransient || scrollHelper.active + restoreMode: Binding.RestoreBinding + } + function flash() { + if (vscrollbar.isTransient) { + vscrollbar.__panel.on = true + vscrollbar.__panel.visible = true + vFlasher.start() + } + } + Timer { + id: vFlasher + interval: 10 + onTriggered: vscrollbar.__panel.on = false + } + } +} diff --git a/deployment_test/QtQuick/Controls/Private/ScrollViewHelper.qmlc b/deployment_test/QtQuick/Controls/Private/ScrollViewHelper.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..44956859d6da80cf3d81198da659d26d6408cd3e Binary files /dev/null and b/deployment_test/QtQuick/Controls/Private/ScrollViewHelper.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Private/SourceProxy.qml b/deployment_test/QtQuick/Controls/Private/SourceProxy.qml new file mode 100644 index 0000000000000000000000000000000000000000..275c24d398cd16160795110cf8b66f19bcb59db5 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Private/SourceProxy.qml @@ -0,0 +1,136 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 + +Item { + id: rootItem + property variant input + property variant output + property variant sourceRect + visible: false + + Component.onCompleted: evaluateInput() + + onInputChanged: evaluateInput() + + onSourceRectChanged: evaluateInput() + + function evaluateInput() { + if (input == undefined) { + output = input + } + else if (sourceRect != undefined && sourceRect != Qt.rect(0, 0, 0, 0) && !isQQuickShaderEffectSource(input)) { + proxySource.sourceItem = input + output = proxySource + proxySource.sourceRect = sourceRect + } + else if (isQQuickItemLayerEnabled(input)) { + output = input + } + else if ((isQQuickImage(input) && !hasTileMode(input) && !hasChildren(input))) { + output = input + } + else if (isQQuickShaderEffectSource(input)) { + output = input + } + else { + proxySource.sourceItem = input + output = proxySource + proxySource.sourceRect = Qt.rect(0, 0, 0, 0) + } + } + + function isQQuickItemLayerEnabled(item) { + if (item.hasOwnProperty("layer")) { + var l = item["layer"] + if (l.hasOwnProperty("enabled") && l["enabled"].toString() == "true") + return true + } + return false + } + + function isQQuickImage(item) { + var imageProperties = [ "fillMode", "progress", "asynchronous", "sourceSize", "status", "smooth" ] + return hasProperties(item, imageProperties) + } + + function isQQuickShaderEffectSource(item) { + var shaderEffectSourceProperties = [ "hideSource", "format", "sourceItem", "mipmap", "wrapMode", "live", "recursive", "sourceRect" ] + return hasProperties(item, shaderEffectSourceProperties) + } + + function hasProperties(item, properties) { + var counter = 0 + for (var j = 0; j < properties.length; j++) { + if (item.hasOwnProperty(properties [j])) + counter++ + } + return properties.length == counter + } + + function hasChildren(item) { + if (item.hasOwnProperty("childrenRect")) { + if (item["childrenRect"].toString() != "QRectF(0, 0, 0, 0)") + return true + else + return false + } + return false + } + + function hasTileMode(item) { + if (item.hasOwnProperty("fillMode")) { + if (item["fillMode"].toString() != "0") + return true + else + return false + } + return false + } + + ShaderEffectSource { + id: proxySource + live: rootItem.input != rootItem.output + hideSource: false + smooth: true + visible: false + } +} + diff --git a/deployment_test/QtQuick/Controls/Private/SourceProxy.qmlc b/deployment_test/QtQuick/Controls/Private/SourceProxy.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..d8b51b1a08a9a675bcc7fa5720769760a68a77a0 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Private/SourceProxy.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Private/StackView.js b/deployment_test/QtQuick/Controls/Private/StackView.js new file mode 100644 index 0000000000000000000000000000000000000000..b0b77e2193b46c687e75d05b8afd768d4c32efa1 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Private/StackView.js @@ -0,0 +1,66 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +var stackView = []; + +function push(p) +{ + if (!p) + return + stackView.push(p) + __depth++ + return p +} + +function pop() +{ + if (stackView.length === 0) + return null + var p = stackView.pop() + __depth-- + return p +} + +function current() +{ + if (stackView.length === 0) + return null + return stackView[stackView.length-1] +} + diff --git a/deployment_test/QtQuick/Controls/Private/StackView.jsc b/deployment_test/QtQuick/Controls/Private/StackView.jsc new file mode 100644 index 0000000000000000000000000000000000000000..5b5da217ec90e65497e157008684319839f2ca85 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Private/StackView.jsc differ diff --git a/deployment_test/QtQuick/Controls/Private/StackViewSlideDelegate.qml b/deployment_test/QtQuick/Controls/Private/StackViewSlideDelegate.qml new file mode 100644 index 0000000000000000000000000000000000000000..dcc14448efac9974dd879fda1ab81228fa8d240a --- /dev/null +++ b/deployment_test/QtQuick/Controls/Private/StackViewSlideDelegate.qml @@ -0,0 +1,141 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 + +/*! + \qmltype StackViewSlideTransition + \internal + \inqmlmodule QtQuick.Controls.Private +*/ +StackViewDelegate { + id: root + + property bool horizontal: true + + function getTransition(properties) + { + return root[horizontal ? "horizontalSlide" : "verticalSlide"][properties.name] + } + + function transitionFinished(properties) + { + properties.exitItem.x = 0 + properties.exitItem.y = 0 + } + + property QtObject horizontalSlide: QtObject { + property Component pushTransition: StackViewTransition { + PropertyAnimation { + target: enterItem + property: "x" + from: target.width + to: 0 + duration: 400 + easing.type: Easing.OutCubic + } + PropertyAnimation { + target: exitItem + property: "x" + from: 0 + to: -target.width + duration: 400 + easing.type: Easing.OutCubic + } + } + + property Component popTransition: StackViewTransition { + PropertyAnimation { + target: enterItem + property: "x" + from: -target.width + to: 0 + duration: 400 + easing.type: Easing.OutCubic + } + PropertyAnimation { + target: exitItem + property: "x" + from: 0 + to: target.width + duration: 400 + easing.type: Easing.OutCubic + } + } + property Component replaceTransition: pushTransition + } + + property QtObject verticalSlide: QtObject { + property Component pushTransition: StackViewTransition { + PropertyAnimation { + target: enterItem + property: "y" + from: target.height + to: 0 + duration: 300 + } + PropertyAnimation { + target: exitItem + property: "y" + from: 0 + to: -target.height + duration: 300 + } + } + + property Component popTransition: StackViewTransition { + PropertyAnimation { + target: enterItem + property: "y" + from: -target.height + to: 0 + duration: 300 + } + PropertyAnimation { + target: exitItem + property: "y" + from: 0 + to: target.height + duration: 300 + } + } + property Component replaceTransition: pushTransition + } +} diff --git a/deployment_test/QtQuick/Controls/Private/StackViewSlideDelegate.qmlc b/deployment_test/QtQuick/Controls/Private/StackViewSlideDelegate.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..abba15c25061f1ab3db77dc08b59fd6f892bc1b8 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Private/StackViewSlideDelegate.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Private/Style.qml b/deployment_test/QtQuick/Controls/Private/Style.qml new file mode 100644 index 0000000000000000000000000000000000000000..805c9252f71cba427f7dfcff4a026f92bba952b9 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Private/Style.qml @@ -0,0 +1,53 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype Style + \internal + \inqmlmodule QtQuick.Controls.Private +*/ + +AbstractStyle { + /*! The control this style is attached to. */ + readonly property Item control: __control +} diff --git a/deployment_test/QtQuick/Controls/Private/Style.qmlc b/deployment_test/QtQuick/Controls/Private/Style.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..a6b1a4ae466a5b002b3f9b000a57ebc15d1e3015 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Private/Style.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Private/SystemPaletteSingleton.qml b/deployment_test/QtQuick/Controls/Private/SystemPaletteSingleton.qml new file mode 100644 index 0000000000000000000000000000000000000000..e4e82c552c5ed477a2732c22dc9beaa4187c23f7 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Private/SystemPaletteSingleton.qml @@ -0,0 +1,61 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +pragma Singleton +import QtQuick 2.2 + +QtObject { + property SystemPalette active: SystemPalette { colorGroup: SystemPalette.Active } + property SystemPalette disabled: SystemPalette { colorGroup: SystemPalette.Disabled } + + function alternateBase(enabled) { return enabled ? active.alternateBase : disabled.alternateBase } + function base(enabled) { return enabled ? active.base : disabled.base } + function button(enabled) { return enabled ? active.button : disabled.button } + function buttonText(enabled) { return enabled ? active.buttonText : disabled.buttonText } + function dark(enabled) { return enabled ? active.dark : disabled.dark } + function highlight(enabled) { return enabled ? active.highlight : disabled.highlight } + function highlightedText(enabled) { return enabled ? active.highlightedText : disabled.highlightedText } + function light(enabled) { return enabled ? active.light : disabled.light } + function mid(enabled) { return enabled ? active.mid : disabled.mid } + function midlight(enabled) { return enabled ? active.midlight : disabled.midlight } + function shadow(enabled) { return enabled ? active.shadow : disabled.shadow } + function text(enabled) { return enabled ? active.text : disabled.text } + function window(enabled) { return enabled ? active.window : disabled.window } + function windowText(enabled) { return enabled ? active.windowText : disabled.windowText } +} diff --git a/deployment_test/QtQuick/Controls/Private/SystemPaletteSingleton.qmlc b/deployment_test/QtQuick/Controls/Private/SystemPaletteSingleton.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..66abb87e3b51fb62f5a7ccb33c51f8524f13c28a Binary files /dev/null and b/deployment_test/QtQuick/Controls/Private/SystemPaletteSingleton.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Private/TabBar.qml b/deployment_test/QtQuick/Controls/Private/TabBar.qml new file mode 100644 index 0000000000000000000000000000000000000000..1186968ddbefce5fd69313457e4eb4241ee7d32c --- /dev/null +++ b/deployment_test/QtQuick/Controls/Private/TabBar.qml @@ -0,0 +1,331 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQml 2.14 as Qml +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype TabBar + \internal + \inqmlmodule QtQuick.Controls.Private +*/ +FocusScope { + id: tabbar + height: Math.max(tabrow.height, Math.max(leftCorner.height, rightCorner.height)) + width: tabView.width + + activeFocusOnTab: true + + Keys.onRightPressed: { + if (tabView && tabView.currentIndex < tabView.count - 1) + tabView.currentIndex = tabView.currentIndex + 1 + } + Keys.onLeftPressed: { + if (tabView && tabView.currentIndex > 0) + tabView.currentIndex = tabView.currentIndex - 1 + } + + onTabViewChanged: parent = tabView + visible: tabView ? tabView.tabsVisible : true + + property var tabView + property var style + property var styleItem: tabView.__styleItem ? tabView.__styleItem : null + + property bool tabsMovable: styleItem ? styleItem.tabsMovable : false + + property int tabsAlignment: styleItem ? styleItem.tabsAlignment : Qt.AlignLeft + + property int tabOverlap: styleItem ? styleItem.tabOverlap : 0 + + property int elide: Text.ElideRight + + property real availableWidth: tabbar.width - leftCorner.width - rightCorner.width + + property var __selectedTabRect + + function tab(index) { + for (var i = 0; i < tabrow.children.length; ++i) { + if (tabrow.children[i].tabindex == index) { + return tabrow.children[i] + } + } + return null; + } + + /*! \internal */ + function __isAncestorOf(item, child) { + //TODO: maybe removed from 5.2 if the function was merged in qtdeclarative + if (child === item) + return false; + + while (child) { + child = child.parent; + if (child === item) + return true; + } + return false; + } + Loader { + id: background + anchors.fill: parent + sourceComponent: styleItem ? styleItem.tabBar : undefined + } + + ListView { + id: tabrow + objectName: "tabrow" + Accessible.role: Accessible.PageTabList + LayoutMirroring.enabled: Qt.application.layoutDirection === Qt.RightToLeft + spacing: -tabOverlap + orientation: Qt.Horizontal + interactive: false + focus: true + clip: true + + // Note this will silence the binding loop warnings caused by QTBUG-35038 + // and should be removed when this issue is resolved. + property int contentWidthWorkaround: contentWidth > 0 ? contentWidth: 0 + width: Math.min(availableWidth, count ? contentWidthWorkaround : availableWidth) + height: currentItem ? currentItem.height : 0 + + highlightMoveDuration: 0 + + // We cannot bind directly to the currentIndex because the actual model is + // populated after the listview is completed, resulting in an invalid contentItem + currentIndex: tabView.currentIndex < model.count ? tabView.currentIndex : -1 + onCurrentIndexChanged: tabrow.positionViewAtIndex(currentIndex, ListView.Contain) + + moveDisplaced: Transition { + NumberAnimation { + property: "x" + duration: 125 + easing.type: Easing.OutQuad + } + } + + states: [ + State { + name: "left" + when: tabsAlignment === Qt.AlignLeft + AnchorChanges { target:tabrow ; anchors.left: parent.left } + PropertyChanges { target:tabrow ; anchors.leftMargin: leftCorner.width } + }, + State { + name: "center" + when: tabsAlignment === Qt.AlignHCenter + AnchorChanges { target:tabrow ; anchors.horizontalCenter: tabbar.horizontalCenter } + }, + State { + name: "right" + when: tabsAlignment === Qt.AlignRight + AnchorChanges { target:tabrow ; anchors.right: parent.right } + PropertyChanges { target:tabrow ; anchors.rightMargin: rightCorner.width } + } + ] + + model: tabView.__tabs + + delegate: MouseArea { + id: tabitem + objectName: "mousearea" + hoverEnabled: Settings.hoverEnabled + focus: true + enabled: modelData.enabled + + Qml.Binding { + target: tabbar + when: selected + property: "__selectedTabRect" + value: Qt.rect(x, y, width, height) + restoreMode: Binding.RestoreBinding + } + + drag.target: tabsMovable ? tabloader : null + drag.axis: Drag.XAxis + drag.minimumX: drag.active ? 0 : -Number.MAX_VALUE + drag.maximumX: tabrow.width - tabitem.width + + property int tabindex: index + property bool selected : tabView.currentIndex === index + property string title: modelData.title + property bool nextSelected: tabView.currentIndex === index + 1 + property bool previousSelected: tabView.currentIndex === index - 1 + + property bool keyPressed: false + property bool effectivePressed: pressed && containsMouse || keyPressed + + z: selected ? 1 : -index + implicitWidth: tabloader.implicitWidth + implicitHeight: tabloader.implicitHeight + + function changeTab() { + tabView.currentIndex = index; + var next = tabbar.nextItemInFocusChain(true); + if (__isAncestorOf(tabView.getTab(currentIndex), next)) + next.forceActiveFocus(); + } + + onClicked: { + if (tabrow.interactive) { + changeTab() + } + } + onPressed: { + if (!tabrow.interactive) { + changeTab() + } + } + + Keys.onPressed: { + if (event.key === Qt.Key_Space && !event.isAutoRepeat && !tabitem.pressed) + tabitem.keyPressed = true + } + Keys.onReleased: { + if (event.key === Qt.Key_Space && !event.isAutoRepeat && tabitem.keyPressed) + tabitem.keyPressed = false + } + onFocusChanged: if (!focus) tabitem.keyPressed = false + + Loader { + id: tabloader + + property Item control: tabView + property int index: tabindex + + property QtObject styleData: QtObject { + readonly property alias index: tabitem.tabindex + readonly property alias selected: tabitem.selected + readonly property alias title: tabitem.title + readonly property alias nextSelected: tabitem.nextSelected + readonly property alias previousSelected: tabitem.previousSelected + readonly property alias pressed: tabitem.effectivePressed + readonly property alias hovered: tabitem.containsMouse + readonly property alias enabled: tabitem.enabled + readonly property bool activeFocus: tabitem.activeFocus + readonly property real availableWidth: tabbar.availableWidth + readonly property real totalWidth: tabrow.contentWidth + } + + sourceComponent: loader.item ? loader.item.tab : null + + Drag.keys: "application/x-tabbartab" + Drag.active: tabitem.drag.active + Drag.source: tabitem + + property real __prevX: 0 + property real __dragX: 0 + onXChanged: { + if (Drag.active) { + // keep track for the snap back animation + __dragX = tabitem.mapFromItem(tabrow, tabloader.x, 0).x + + // when moving to the left, the hot spot is the left edge and vice versa + Drag.hotSpot.x = x < __prevX ? 0 : width + __prevX = x + } + } + + width: tabitem.width + state: Drag.active ? "drag" : "" + + transitions: [ + Transition { + to: "drag" + PropertyAction { target: tabloader; property: "parent"; value: tabrow } + }, + Transition { + from: "drag" + SequentialAnimation { + PropertyAction { target: tabloader; property: "parent"; value: tabitem } + NumberAnimation { + target: tabloader + duration: 50 + easing.type: Easing.OutQuad + property: "x" + from: tabloader.__dragX + to: 0 + } + } + } + ] + } + + Accessible.role: Accessible.PageTab + Accessible.name: modelData.title + } + } + + Loader { + id: leftCorner + anchors.verticalCenter: parent.verticalCenter + anchors.left: parent.left + sourceComponent: styleItem ? styleItem.leftCorner : undefined + width: item ? item.implicitWidth : 0 + height: item ? item.implicitHeight : 0 + } + + Loader { + id: rightCorner + anchors.verticalCenter: parent.verticalCenter + anchors.right: parent.right + sourceComponent: styleItem ? styleItem.rightCorner : undefined + width: item ? item.implicitWidth : 0 + height: item ? item.implicitHeight : 0 + } + + DropArea { + anchors.fill: tabrow + keys: "application/x-tabbartab" + onPositionChanged: { + var source = drag.source + var target = tabrow.itemAt(drag.x, drag.y) + if (source && target && source !== target) { + source = source.drag.target + target = target.drag.target + var center = target.parent.x + target.width / 2 + if ((source.index > target.index && source.x < center) + || (source.index < target.index && source.x + source.width > center)) + tabView.moveTab(source.index, target.index) + } + } + } +} diff --git a/deployment_test/QtQuick/Controls/Private/TabBar.qmlc b/deployment_test/QtQuick/Controls/Private/TabBar.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..f737e1918262045870e3297ee8f58dd8e1cf2ef3 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Private/TabBar.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Private/TableViewItemDelegateLoader.qml b/deployment_test/QtQuick/Controls/Private/TableViewItemDelegateLoader.qml new file mode 100644 index 0000000000000000000000000000000000000000..c5c6584a84a3e6a02e19a6dcfabe70b188e2db6a --- /dev/null +++ b/deployment_test/QtQuick/Controls/Private/TableViewItemDelegateLoader.qml @@ -0,0 +1,102 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +import QtQuick 2.5 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 + +/*! + \qmltype TableViewItemDelegateLoader + \internal + \qmlabstract + \inqmlmodule QtQuick.Controls.Private +*/ + +Loader { + id: itemDelegateLoader + + width: __column ? __column.width : 0 + height: parent ? parent.height : 0 + visible: __column ? __column.visible : false + + property bool isValid: false + sourceComponent: (__model === undefined || !isValid) ? null + : __column && __column.delegate ? __column.delegate : __itemDelegate + + // All these properties are internal + property int __index: index + property Item __rowItem: null + property var __model: __rowItem ? __rowItem.itemModel : undefined + property var __modelData: __rowItem ? __rowItem.itemModelData : undefined + property TableViewColumn __column: null + property Component __itemDelegate: null + property var __mouseArea: null + property var __style: null + + // These properties are exposed to the item delegate + readonly property var model: __model + readonly property var modelData: __modelData + + property QtObject styleData: QtObject { + readonly property int row: __rowItem ? __rowItem.rowIndex : -1 + readonly property int column: __index + readonly property int elideMode: __column ? __column.elideMode : Text.ElideLeft + readonly property int textAlignment: __column ? __column.horizontalAlignment : Text.AlignLeft + readonly property bool selected: __rowItem ? __rowItem.itemSelected : false + readonly property bool hasActiveFocus: __rowItem ? __rowItem.activeFocus : false + readonly property bool pressed: __mouseArea && row === __mouseArea.pressedRow && column === __mouseArea.pressedColumn + readonly property color textColor: __rowItem ? __rowItem.itemTextColor : "black" + readonly property string role: __column ? __column.role : "" + readonly property var value: model && model.hasOwnProperty(role) ? model[role] // Qml ListModel and QAbstractItemModel + : modelData && modelData.hasOwnProperty(role) ? modelData[role] // QObjectList / QObject + : modelData != undefined ? modelData : "" // Models without role + onRowChanged: if (row !== -1) itemDelegateLoader.isValid = true + } +} diff --git a/deployment_test/QtQuick/Controls/Private/TableViewItemDelegateLoader.qmlc b/deployment_test/QtQuick/Controls/Private/TableViewItemDelegateLoader.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..c2a46fe39bf5592f496dc1d23f590728804f44d7 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Private/TableViewItemDelegateLoader.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Private/TableViewSelection.qml b/deployment_test/QtQuick/Controls/Private/TableViewSelection.qml new file mode 100644 index 0000000000000000000000000000000000000000..e8af9dd99f48a857fc1d3f7b199b59e5463c18ea --- /dev/null +++ b/deployment_test/QtQuick/Controls/Private/TableViewSelection.qml @@ -0,0 +1,196 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 + +QtObject { + + property int count: 0 + signal selectionChanged + + property bool __dirty: false + property var __ranges: [] + + function forEach (callback) { + if (!(callback instanceof Function)) { + console.warn("TableViewSelection.forEach: argument is not a function") + return; + } + __forEach(callback, -1) + } + + function contains(index) { + for (var i = 0 ; i < __ranges.length ; ++i) { + if (__ranges[i][0] <= index && index <= __ranges[i][1]) + return true; + else if (__ranges[i][0] > index) + return false; + } + return false; + } + + function clear() { + __ranges = [] + __dirty = true + count = 0 + selectionChanged() + } + + function selectAll() { select(0, rowCount - 1) } + function select(first, last) { __select(true, first, last) } + function deselect(first, last) { __select(false, first, last) } + + // --- private section --- + + function __printRanges() { + var out = "" + for (var i = 0 ; i < __ranges.length ; ++ i) + out += ("{" + __ranges[i][0] + "," + __ranges[i][1] + "} ") + print(out) + } + + function __count() { + var sum = 0 + for (var i = 0 ; i < __ranges.length ; ++i) { + sum += (1 + __ranges[i][1] - __ranges[i][0]) + } + return sum + } + + function __forEach (callback, startIndex) { + __dirty = false + var i, j + + for (i = 0 ; i < __ranges.length && !__dirty ; ++i) { + for (j = __ranges[i][0] ; !__dirty && j <= __ranges[i][1] ; ++j) { + if (j >= startIndex) + callback.call(this, j) + } + } + + // Restart iteration at last index if selection changed + if (__dirty) + return __forEach(callback, j) + } + + function __selectOne(index) { + __ranges = [[index, index]] + __dirty = true + count = 1 + selectionChanged(); + } + + function __select(select, first, last) { + + var i, range + var start = first + var stop = first + var startRangeIndex = -1 + var stopRangeIndex = -1 + var newRangePos = 0 + + if (first < 0 || last < 0 || first >= rowCount || last >=rowCount) { + console.warn("TableViewSelection: index out of range") + return + } + + if (last !== undefined) { + start = first <= last ? first : last + stop = first <= last ? last : first + } + + if (select) { + + // Find beginning and end ranges + for (i = 0 ; i < __ranges.length; ++ i) { + range = __ranges[i] + if (range[0] > stop + 1) continue; // above range + if (range[1] < start - 1) { // below range + newRangePos = i + 1 + continue; + } + if (startRangeIndex === -1) + startRangeIndex = i + stopRangeIndex = i + } + + if (startRangeIndex !== -1) + start = Math.min(__ranges[startRangeIndex][0], start) + if (stopRangeIndex !== -1) + stop = Math.max(__ranges[stopRangeIndex][1], stop) + + if (startRangeIndex === -1) + startRangeIndex = newRangePos + + __ranges.splice(Math.max(0, startRangeIndex), + 1 + stopRangeIndex - startRangeIndex, [start, stop]) + + } else { + + // Find beginning and end ranges + for (i = 0 ; i < __ranges.length; ++ i) { + range = __ranges[i] + if (range[1] < start) continue; // below range + if (range[0] > stop) continue; // above range + if (startRangeIndex === -1) + startRangeIndex = i + stopRangeIndex = i + } + + // Slice ranges accordingly + if (startRangeIndex >= 0 && stopRangeIndex >= 0) { + var startRange = __ranges[startRangeIndex] + var stopRange = __ranges[stopRangeIndex] + var length = 1 + stopRangeIndex - startRangeIndex + if (start <= startRange[0] && stop >= stopRange[1]) { //remove + __ranges.splice(startRangeIndex, length) + } else if (start - 1 < startRange[0] && stop <= stopRange[1]) { //cut front + __ranges.splice(startRangeIndex, length, [stop + 1, stopRange[1]]) + } else if (start - 1 < startRange[1] && stop >= stopRange[1]) { // cut back + __ranges.splice(startRangeIndex, length, [startRange[0], start - 1]) + } else { //split + __ranges.splice(startRangeIndex, length, [startRange[0], start - 1], [stop + 1, stopRange[1]]) + } + } + } + __dirty = true + count = __count() // forces a re-evaluation of indexes in the delegates + selectionChanged() + } +} diff --git a/deployment_test/QtQuick/Controls/Private/TableViewSelection.qmlc b/deployment_test/QtQuick/Controls/Private/TableViewSelection.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..7421daae0f09e00ce4c0b7caad2b8dda80bac55b Binary files /dev/null and b/deployment_test/QtQuick/Controls/Private/TableViewSelection.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Private/TextHandle.qml b/deployment_test/QtQuick/Controls/Private/TextHandle.qml new file mode 100644 index 0000000000000000000000000000000000000000..45e97f71a358348c96429a3a3ff2ccd9fe238ba6 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Private/TextHandle.qml @@ -0,0 +1,126 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +Loader { + id: handle + + property Item editor + property int minimum: -1 + property int maximum: -1 + property int position: -1 + property alias delegate: handle.sourceComponent + + readonly property alias pressed: mouse.pressed + + readonly property real handleX: x + (item ? item.x : 0) + readonly property real handleY: y + (item ? item.y : 0) + readonly property real handleWidth: item ? item.width : 0 + readonly property real handleHeight: item ? item.height : 0 + + property Item control + property QtObject styleData: QtObject { + id: styleData + signal activated() + readonly property alias pressed: mouse.pressed + readonly property alias position: handle.position + readonly property bool hasSelection: editor.selectionStart !== editor.selectionEnd + readonly property real lineHeight: position !== -1 ? editor.positionToRectangle(position).height + : editor.cursorRectangle.height + } + + function activate() { + styleData.activated() + } + + MouseArea { + id: mouse + anchors.fill: item + enabled: item && item.visible + preventStealing: true + property real pressX + property point offset + property bool handleDragged: false + + onPressed: { + Qt.inputMethod.commit() + handleDragged = false + pressX = mouse.x + var handleRect = editor.positionToRectangle(handle.position) + var centerX = handleRect.x + (handleRect.width / 2) + var centerY = handleRect.y + (handleRect.height / 2) + var center = mapFromItem(editor, centerX, centerY) + offset = Qt.point(mouseX - center.x, mouseY - center.y) + } + onReleased: { + if (!handleDragged) { + // The user just clicked on the handle. In that + // case clear the selection. + var mousePos = editor.mapFromItem(item, mouse.x, mouse.y) + var editorPos = editor.positionAt(mousePos.x, mousePos.y) + editor.select(editorPos, editorPos) + } + } + onPositionChanged: { + handleDragged = true + var pt = mapToItem(editor, mouse.x - offset.x, mouse.y - offset.y) + + // limit vertically within mix/max coordinates or content bounds + var min = (minimum !== -1) ? minimum : 0 + var max = (maximum !== -1) ? maximum : editor.length + pt.y = Math.max(pt.y, editor.positionToRectangle(min).y) + pt.y = Math.min(pt.y, editor.positionToRectangle(max).y) + + var pos = editor.positionAt(pt.x, pt.y) + + // limit horizontally within min/max character positions + if (minimum !== -1) + pos = Math.max(pos, minimum) + pos = Math.max(pos, 0) + if (maximum !== -1) + pos = Math.min(pos, maximum) + pos = Math.min(pos, editor.length) + + handle.position = pos + } + } +} diff --git a/deployment_test/QtQuick/Controls/Private/TextHandle.qmlc b/deployment_test/QtQuick/Controls/Private/TextHandle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..f1ad2f30146793f2c24fa4ce6dda5cb91fe6708e Binary files /dev/null and b/deployment_test/QtQuick/Controls/Private/TextHandle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Private/TextInputWithHandles.qml b/deployment_test/QtQuick/Controls/Private/TextInputWithHandles.qml new file mode 100644 index 0000000000000000000000000000000000000000..ac78c2692f166bec3961117268ca62c3b75ff5dd --- /dev/null +++ b/deployment_test/QtQuick/Controls/Private/TextInputWithHandles.qml @@ -0,0 +1,201 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Window 2.2 +import QtQuick.Controls.Private 1.0 + +TextInput { + id: input + + property Item control + property alias cursorHandle: cursorHandle.delegate + property alias selectionHandle: selectionHandle.delegate + + property bool blockRecursion: false + property bool hasSelection: selectionStart !== selectionEnd + readonly property int selectionPosition: selectionStart !== cursorPosition ? selectionStart : selectionEnd + readonly property alias containsMouse: mouseArea.containsMouse + property alias editMenu: editMenu + cursorDelegate: __style && __style.__cursorDelegate ? __style.__cursorDelegate : null + + selectByMouse: control.selectByMouse && (!Settings.isMobile || !cursorHandle.delegate || !selectionHandle.delegate) + + // force re-evaluation when selection moves: + // - cursorRectangle changes => content scrolled + // - contentWidth changes => text layout changed + property rect selectionRectangle: cursorRectangle.x && contentWidth ? positionToRectangle(selectionPosition) + : positionToRectangle(selectionPosition) + + onSelectionStartChanged: syncHandlesWithSelection() + onCursorPositionChanged: syncHandlesWithSelection() + + function syncHandlesWithSelection() + { + if (!blockRecursion && selectionHandle.delegate) { + blockRecursion = true + // We cannot use property selectionPosition since it gets updated after onSelectionStartChanged + cursorHandle.position = cursorPosition + selectionHandle.position = (selectionStart !== cursorPosition) ? selectionStart : selectionEnd + blockRecursion = false + } + } + + function activate() { + if (activeFocusOnPress) { + forceActiveFocus() + if (!readOnly) + Qt.inputMethod.show() + } + cursorHandle.activate() + selectionHandle.activate() + } + + function moveHandles(cursor, selection) { + blockRecursion = true + cursorPosition = cursor + if (selection === -1) { + selectWord() + selection = selectionStart + } + selectionHandle.position = selection + cursorHandle.position = cursorPosition + blockRecursion = false + } + + MouseArea { + id: mouseArea + anchors.fill: parent + hoverEnabled: Settings.hoverEnabled + cursorShape: Qt.IBeamCursor + acceptedButtons: (input.selectByMouse ? Qt.NoButton : Qt.LeftButton) | (control.menu ? Qt.RightButton : Qt.NoButton) + onClicked: { + if (editMenu.item) + return; + var pos = input.positionAt(mouse.x, mouse.y) + input.moveHandles(pos, pos) + input.activate() + } + onPressAndHold: { + if (editMenu.item) + return; + var pos = input.positionAt(mouse.x, mouse.y) + input.moveHandles(pos, control.selectByMouse ? -1 : pos) + input.activate() + } + } + + EditMenu { + id: editMenu + input: parent + mouseArea: mouseArea + control: parent.control + cursorHandle: cursorHandle + selectionHandle: selectionHandle + anchors.fill: parent + } + + ScenePosListener { + id: listener + item: input + enabled: input.activeFocus && Qt.platform.os !== "ios" && Settings.isMobile + } + + TextHandle { + id: selectionHandle + + editor: input + z: 1000001 // DefaultWindowDecoration+1 + parent: !input.activeFocus || Qt.platform.os === "ios" ? control : Window.contentItem // float (QTBUG-42538) + control: input.control + active: control.selectByMouse && Settings.isMobile + maximum: cursorHandle.position - 1 + + readonly property var mappedOrigin: editor.mapToItem(parent, 0,0) + + // Mention scenePos in the mappedPos binding to force re-evaluation if it changes + readonly property var mappedPos: listener.scenePos.x !== listener.scenePos.y !== Number.MAX_VALUE ? + editor.mapToItem(parent, editor.selectionRectangle.x, editor.selectionRectangle.y) : -1 + x: mappedPos.x + y: mappedPos.y + + visible: pressed || (input.hasSelection && handleX + handleWidth >= -1 && handleX - mappedOrigin.x <= control.width + 1) + + onPositionChanged: { + if (!input.blockRecursion) { + input.blockRecursion = true + input.select(selectionHandle.position, cursorHandle.position) + if (pressed) + input.ensureVisible(position) + input.blockRecursion = false + } + } + } + + TextHandle { + id: cursorHandle + + editor: input + z: 1000001 // DefaultWindowDecoration+1 + parent: !input.activeFocus || Qt.platform.os === "ios" ? control : Window.contentItem // float (QTBUG-42538) + control: input.control + active: control.selectByMouse && Settings.isMobile + minimum: input.hasSelection ? selectionHandle.position + 1 : -1 + + readonly property var mappedOrigin: editor.mapToItem(parent, 0,0) + + // Mention scenePos in the mappedPos binding to force re-evaluation if it changes + readonly property var mappedPos: listener.scenePos.x !== listener.scenePos.y !== Number.MAX_VALUE ? + editor.mapToItem(parent, editor.cursorRectangle.x, editor.cursorRectangle.y) : -1 + x: mappedPos.x + y: mappedPos.y + + visible: pressed || ((input.cursorVisible || input.hasSelection) && handleX + handleWidth >= -1 && handleX - mappedOrigin.x <= control.width + 1) + + onPositionChanged: { + if (!input.blockRecursion) { + input.blockRecursion = true + if (!input.hasSelection) + selectionHandle.position = cursorHandle.position + input.select(selectionHandle.position, cursorHandle.position) + input.blockRecursion = false + } + } + } +} diff --git a/deployment_test/QtQuick/Controls/Private/TextInputWithHandles.qmlc b/deployment_test/QtQuick/Controls/Private/TextInputWithHandles.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..86fce2f54c966007eb039bb9c55289019d32d285 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Private/TextInputWithHandles.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Private/TextSingleton.qml b/deployment_test/QtQuick/Controls/Private/TextSingleton.qml new file mode 100644 index 0000000000000000000000000000000000000000..83254698f17951969fd2e985dfb548faf6b8613f --- /dev/null +++ b/deployment_test/QtQuick/Controls/Private/TextSingleton.qml @@ -0,0 +1,43 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +pragma Singleton +import QtQuick 2.2 +Text { +} diff --git a/deployment_test/QtQuick/Controls/Private/TextSingleton.qmlc b/deployment_test/QtQuick/Controls/Private/TextSingleton.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..d0e3c5591c80550442de962b0ed806a85ad14d1d Binary files /dev/null and b/deployment_test/QtQuick/Controls/Private/TextSingleton.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Private/ToolMenuButton.qml b/deployment_test/QtQuick/Controls/Private/ToolMenuButton.qml new file mode 100644 index 0000000000000000000000000000000000000000..e6fba40c5709159f4a79af4c459373ecfd7df908 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Private/ToolMenuButton.qml @@ -0,0 +1,127 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQml 2.14 as Qml +import QtQuick 2.4 +import QtQuick.Controls 1.3 +import QtQuick.Controls.Private 1.0 + +FocusScope { + id: button + + property Menu menu + readonly property bool pressed: behavior.containsPress || behavior.keyPressed + readonly property alias hovered: behavior.containsMouse + + property alias panel: loader.sourceComponent + property alias __panel: loader.item + + activeFocusOnTab: true + Accessible.role: Accessible.Button + implicitWidth: __panel ? __panel.implicitWidth : 0 + implicitHeight: __panel ? __panel.implicitHeight : 0 + + Loader { + id: loader + anchors.fill: parent + property QtObject styleData: QtObject { + readonly property alias pressed: button.pressed + readonly property alias hovered: button.hovered + readonly property alias activeFocus: button.activeFocus + } + onStatusChanged: if (status === Loader.Error) console.error("Failed to load Style for", button) + } + + Keys.onPressed: { + if (event.key === Qt.Key_Space && !event.isAutoRepeat && !behavior.keyPressed) + behavior.keyPressed = true + } + Keys.onReleased: { + if (event.key === Qt.Key_Space && !event.isAutoRepeat && behavior.keyPressed) + behavior.keyPressed = false + } + onFocusChanged: { + if (!focus) + behavior.keyPressed = false + } + onPressedChanged: { + if (!Settings.hasTouchScreen && !pressed && menu) + popupMenuTimer.start() + } + + MouseArea { + id: behavior + property bool keyPressed: false + + anchors.fill: parent + enabled: !keyPressed + hoverEnabled: Settings.hoverEnabled + + onReleased: { + if (Settings.hasTouchScreen && containsMouse && menu) + popupMenuTimer.start() + } + + Timer { + id: popupMenuTimer + interval: 10 + onTriggered: { + behavior.keyPressed = false + if (Qt.application.layoutDirection === Qt.RightToLeft) + menu.__popup(Qt.rect(button.width, button.height, 0, 0), 0) + else + menu.__popup(Qt.rect(0, 0, button.width, button.height), 0) + } + } + } + + Qml.Binding { + target: menu + property: "__minimumWidth" + value: button.width + restoreMode: Binding.RestoreBinding + } + + Qml.Binding { + target: menu + property: "__visualItem" + value: button + restoreMode: Binding.RestoreBinding + } +} diff --git a/deployment_test/QtQuick/Controls/Private/ToolMenuButton.qmlc b/deployment_test/QtQuick/Controls/Private/ToolMenuButton.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..e7d0bce4ab1da538bfb49afd3c6363f91243fa23 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Private/ToolMenuButton.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Private/TreeViewItemDelegateLoader.qml b/deployment_test/QtQuick/Controls/Private/TreeViewItemDelegateLoader.qml new file mode 100644 index 0000000000000000000000000000000000000000..ed9566afae1e70953bb94dd134823a525013d40a --- /dev/null +++ b/deployment_test/QtQuick/Controls/Private/TreeViewItemDelegateLoader.qml @@ -0,0 +1,109 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +import QtQuick 2.5 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype TreeViewItemDelegateLoader + \internal + \qmlabstract + \inqmlmodule QtQuick.Controls.Private +*/ + +TableViewItemDelegateLoader { + id: itemDelegateLoader + + /* \internal */ + readonly property int __itemIndentation: __style && __index === 0 + ? __style.__indentation * (styleData.depth + 1) : 0 + /* \internal */ + property TreeModelAdaptor __treeModel: null + + // Exposed to the item delegate + styleData: QtObject { + readonly property int row: __rowItem ? __rowItem.rowIndex : -1 + readonly property int column: __index + readonly property int elideMode: __column ? __column.elideMode : Text.ElideLeft + readonly property int textAlignment: __column ? __column.horizontalAlignment : Text.AlignLeft + readonly property bool selected: __rowItem ? __rowItem.itemSelected : false + readonly property bool hasActiveFocus: __rowItem ? __rowItem.activeFocus : false + readonly property bool pressed: __mouseArea && row === __mouseArea.pressedRow && column === __mouseArea.pressedColumn + readonly property color textColor: __rowItem ? __rowItem.itemTextColor : "black" + readonly property string role: __column ? __column.role : "" + readonly property var value: model && model.hasOwnProperty(role) ? model[role] : "" + readonly property var index: model ? model["_q_TreeView_ModelIndex"] : __treeModel.index(-1,-1) + readonly property int depth: model && column === 0 ? model["_q_TreeView_ItemDepth"] : 0 + readonly property bool hasChildren: model ? model["_q_TreeView_HasChildren"] : false + readonly property bool hasSibling: model ? model["_q_TreeView_HasSibling"] : false + readonly property bool isExpanded: model ? model["_q_TreeView_ItemExpanded"] : false + } + + onLoaded: { + item.x = Qt.binding(function() { return __itemIndentation}) + item.width = Qt.binding(function() { return width - __itemIndentation }) + } + + Loader { + id: branchDelegateLoader + active: __model !== undefined + && __index === 0 + && styleData.hasChildren + visible: itemDelegateLoader.width > __itemIndentation + sourceComponent: __style && __style.__branchDelegate || null + anchors.right: parent.item ? parent.item.left : undefined + anchors.rightMargin: __style.__indentation > width ? (__style.__indentation - width) / 2 : 0 + anchors.verticalCenter: parent.verticalCenter + property QtObject styleData: itemDelegateLoader.styleData + onLoaded: if (__rowItem) __rowItem.branchDecoration = item + } +} diff --git a/deployment_test/QtQuick/Controls/Private/TreeViewItemDelegateLoader.qmlc b/deployment_test/QtQuick/Controls/Private/TreeViewItemDelegateLoader.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..cf9108805b426fd215540e1bd55a55a41b55385e Binary files /dev/null and b/deployment_test/QtQuick/Controls/Private/TreeViewItemDelegateLoader.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Private/qmldir b/deployment_test/QtQuick/Controls/Private/qmldir new file mode 100644 index 0000000000000000000000000000000000000000..9fe84203b5bbd7e00a89a1c40aeae9f79793af68 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Private/qmldir @@ -0,0 +1,37 @@ +module QtQuick.Controls.Private +AbstractCheckable 1.0 AbstractCheckable.qml +CalendarHeaderModel 1.0 CalendarHeaderModel.qml +Control 1.0 Control.qml +CalendarUtils 1.0 CalendarUtils.js +FocusFrame 1.0 FocusFrame.qml +Margins 1.0 Margins.qml +BasicButton 1.0 BasicButton.qml +ScrollBar 1.0 ScrollBar.qml +ScrollViewHelper 1.0 ScrollViewHelper.qml +Style 1.0 Style.qml +MenuItemSubControls 1.0 MenuItemSubControls.qml +TabBar 1.0 TabBar.qml +StackViewSlideDelegate 1.0 StackViewSlideDelegate.qml +StyleHelpers 1.0 style.js +JSArray 1.0 StackView.js +TableViewSelection 1.0 TableViewSelection.qml +FastGlow 1.0 FastGlow.qml +SourceProxy 1.0 SourceProxy.qml +GroupBoxStyle 1.0 ../Styles/Base/GroupBoxStyle.qml +FocusFrameStyle 1.0 ../Styles/Base/FocusFrameStyle.qml +ToolButtonStyle 1.0 ../Styles/Base/ToolButtonStyle.qml +MenuContentItem 1.0 MenuContentItem.qml +MenuContentScroller 1.0 MenuContentScroller.qml +ColumnMenuContent 1.0 ColumnMenuContent.qml +ContentItem 1.0 ContentItem.qml +HoverButton 1.0 HoverButton.qml +singleton SystemPaletteSingleton 1.0 SystemPaletteSingleton.qml +singleton TextSingleton 1.0 TextSingleton.qml +TextHandle 1.0 TextHandle.qml +TextInputWithHandles 1.0 TextInputWithHandles.qml +EditMenu 1.0 EditMenu.qml +EditMenu_base 1.0 EditMenu_base.qml +ToolMenuButton 1.0 ToolMenuButton.qml +BasicTableView 1.0 BasicTableView.qml +TableViewItemDelegateLoader 1.0 TableViewItemDelegateLoader.qml +TreeViewItemDelegateLoader 1.0 TreeViewItemDelegateLoader.qml diff --git a/deployment_test/QtQuick/Controls/Private/style.js b/deployment_test/QtQuick/Controls/Private/style.js new file mode 100644 index 0000000000000000000000000000000000000000..844fdbda6cd40be32e51373b14c9152e936077f9 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Private/style.js @@ -0,0 +1,62 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +.pragma library + +function underlineAmpersands(match, p1, p2, p3) { + if (p2 === "&") + return p1.concat(p2, p3) + return p1.concat("<u>", p2, "</u>", p3) +} + +function removeAmpersands(match, p1, p2, p3) { + return p1.concat(p2, p3) +} + +function replaceAmpersands(text, replaceFunction) { + return text.replace(/([^&]*)&(.)([^&]*)/g, replaceFunction) +} + +function stylizeMnemonics(text) { + return replaceAmpersands(text, underlineAmpersands) +} + +function removeMnemonics(text) { + return replaceAmpersands(text, removeAmpersands) +} diff --git a/deployment_test/QtQuick/Controls/Private/style.jsc b/deployment_test/QtQuick/Controls/Private/style.jsc new file mode 100644 index 0000000000000000000000000000000000000000..f079143e5432726c431415c054a60817344ffcac Binary files /dev/null and b/deployment_test/QtQuick/Controls/Private/style.jsc differ diff --git a/deployment_test/QtQuick/Controls/ProgressBar.qml b/deployment_test/QtQuick/Controls/ProgressBar.qml new file mode 100644 index 0000000000000000000000000000000000000000..9171f7d7763356197ff9c2281fc45a6698dea7b7 --- /dev/null +++ b/deployment_test/QtQuick/Controls/ProgressBar.qml @@ -0,0 +1,167 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype ProgressBar + \inqmlmodule QtQuick.Controls + \since 5.1 + \ingroup controls + \brief A progress indicator. + + \image progressbar.png + + The ProgressBar is used to give an indication of the progress of an operation. + \l value is updated regularly and must be between \l minimumValue and \l maximumValue. + + \code + Column { + ProgressBar { + value: 0.5 + } + ProgressBar { + indeterminate: true + } + } + \endcode + + You can create a custom appearance for a ProgressBar by + assigning a \l {ProgressBarStyle}. +*/ + +Control { + id: progressbar + + /*! This property holds the progress bar's current value. + Attempting to change the current value to one outside the minimum-maximum + range has no effect on the current value. + + The default value is \c{0}. + */ + property real value: 0 + + /*! This property is the progress bar's minimum value. + The \l value is clamped to this value. + The default value is \c{0}. + */ + property real minimumValue: 0 + + /*! This property is the progress bar's maximum value. + The \l value is clamped to this value. + If maximumValue is smaller than \l minimumValue, \l minimumValue will be enforced. + The default value is \c{1}. + */ + property real maximumValue: 1 + + /*! This property toggles indeterminate mode. + When the actual progress is unknown, use this option. + The progress bar will be animated as a busy indicator instead. + The default value is \c false. + */ + property bool indeterminate: false + + /*! \qmlproperty enumeration orientation + + This property holds the orientation of the progress bar. + + \list + \li Qt.Horizontal - Horizontal orientation. (Default) + \li Qt.Vertical - Vertical orientation. + \endlist + */ + property int orientation: Qt.Horizontal + + /*! \qmlproperty bool ProgressBar::hovered + + This property indicates whether the control is being hovered. + */ + readonly property alias hovered: hoverArea.containsMouse + + /*! \internal */ + style: Settings.styleComponent(Settings.style, "ProgressBarStyle.qml", progressbar) + + /*! \internal */ + property bool __initialized: false + /*! \internal */ + onMaximumValueChanged: setValue(value) + /*! \internal */ + onMinimumValueChanged: setValue(value) + /*! \internal */ + onValueChanged: if (__initialized) setValue(value) + /*! \internal */ + Component.onCompleted: { + __initialized = true; + setValue(value) + } + + activeFocusOnTab: false + + Accessible.role: Accessible.ProgressBar + Accessible.name: value + + implicitWidth:(__panel ? __panel.implicitWidth : 0) + implicitHeight: (__panel ? __panel.implicitHeight: 0) + + MouseArea { + id: hoverArea + anchors.fill: parent + hoverEnabled: Settings.hoverEnabled + } + + /*! \internal */ + function setValue(v) { + var newval = parseFloat(v) + if (!isNaN(newval)) { + // we give minimumValue priority over maximum if they are inconsistent + if (newval > maximumValue) { + if (maximumValue >= minimumValue) + newval = maximumValue; + else + newval = minimumValue + } else if (v < minimumValue) { + newval = minimumValue + } + if (value !== newval) + value = newval + } + } +} diff --git a/deployment_test/QtQuick/Controls/ProgressBar.qmlc b/deployment_test/QtQuick/Controls/ProgressBar.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..aac176b72859a7766d011c10a7bd090b666a7c6d Binary files /dev/null and b/deployment_test/QtQuick/Controls/ProgressBar.qmlc differ diff --git a/deployment_test/QtQuick/Controls/RadioButton.qml b/deployment_test/QtQuick/Controls/RadioButton.qml new file mode 100644 index 0000000000000000000000000000000000000000..cc191f5b8df0ef979d13c09997e4dc2617e64540 --- /dev/null +++ b/deployment_test/QtQuick/Controls/RadioButton.qml @@ -0,0 +1,99 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype RadioButton + \inqmlmodule QtQuick.Controls + \since 5.1 + \ingroup controls + \brief A radio button with a text label. + + \image radiobutton.png + + A RadioButton is an option button that can be switched on (checked) or off + (unchecked). Radio buttons typically present the user with a "one of many" + choices. In a group of radio buttons, only one radio button can be + checked at a time; if the user selects another button, the previously + selected button is switched off. + + \qml + GroupBox { + title: "Tab Position" + + RowLayout { + ExclusiveGroup { id: tabPositionGroup } + RadioButton { + text: "Top" + checked: true + exclusiveGroup: tabPositionGroup + } + RadioButton { + text: "Bottom" + exclusiveGroup: tabPositionGroup + } + } + } + \endqml + + You can create a custom appearance for a RadioButton by + assigning a \l {RadioButtonStyle}. +*/ + +AbstractCheckable { + id: radioButton + + activeFocusOnTab: true + + Accessible.name: text + Accessible.role: Accessible.RadioButton + + /*! + The style that should be applied to the radio button. Custom style + components can be created with: + + \codeline Qt.createComponent("path/to/style.qml", radioButtonId); + */ + style: Settings.styleComponent(Settings.style, "RadioButtonStyle.qml", radioButton) + + __cycleStatesHandler: function() { checked = !checked; } +} diff --git a/deployment_test/QtQuick/Controls/RadioButton.qmlc b/deployment_test/QtQuick/Controls/RadioButton.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..8969b581a245371252499201f65f55c4f544815e Binary files /dev/null and b/deployment_test/QtQuick/Controls/RadioButton.qmlc differ diff --git a/deployment_test/QtQuick/Controls/ScrollView.qml b/deployment_test/QtQuick/Controls/ScrollView.qml new file mode 100644 index 0000000000000000000000000000000000000000..f79cfc8e7ebc2b32388337731399ae4343272444 --- /dev/null +++ b/deployment_test/QtQuick/Controls/ScrollView.qml @@ -0,0 +1,374 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQml 2.14 as Qml +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 +import QtQuick.Controls.Styles 1.1 + +/*! + \qmltype ScrollView + \inqmlmodule QtQuick.Controls + \since 5.1 + \ingroup views + \ingroup controls + \brief Provides a scrolling view within another Item. + + \image scrollview.png + + A ScrollView can be used either to replace a \l Flickable or decorate an + existing \l Flickable. Depending on the platform, it will add scroll bars and + a content frame. + + Only one Item can be a direct child of the ScrollView and the child is implicitly anchored + to fill the scroll view. + + Example: + \code + ScrollView { + Image { source: "largeImage.png" } + } + \endcode + + In the previous example the Image item will implicitly get scroll behavior as if it was + used within a \l Flickable. The width and height of the child item will be used to + define the size of the content area. + + Example: + \code + ScrollView { + ListView { + ... + } + } + \endcode + + In this case the content size of the ScrollView will simply mirror that of its contained + \l flickableItem. + + You can create a custom appearance for a ScrollView by + assigning a \l {ScrollViewStyle}. +*/ + +FocusScope { + id: root + + implicitWidth: 240 + implicitHeight: 150 + + /*! + This property tells the ScrollView if it should render + a frame around its content. + + The default value is \c false. + */ + property bool frameVisible: false + + /*! \qmlproperty enumeration ScrollView::horizontalScrollBarPolicy + \since QtQuick.Controls 1.3 + + This property holds the policy for showing the horizontal scrollbar. + It can be any of the following values: + \list + \li Qt.ScrollBarAsNeeded + \li Qt.ScrollBarAlwaysOff + \li Qt.ScrollBarAlwaysOn + \endlist + + The default policy is \c Qt.ScrollBarAsNeeded. + */ + property alias horizontalScrollBarPolicy: scroller.horizontalScrollBarPolicy + + /*! \qmlproperty enumeration ScrollView::verticalScrollBarPolicy + \since QtQuick.Controls 1.3 + + This property holds the policy for showing the vertical scrollbar. + It can be any of the following values: + \list + \li Qt.ScrollBarAsNeeded + \li Qt.ScrollBarAlwaysOff + \li Qt.ScrollBarAlwaysOn + \endlist + + The default policy is \c Qt.ScrollBarAsNeeded. + */ + property alias verticalScrollBarPolicy: scroller.verticalScrollBarPolicy + + /*! + This property controls if there should be a highlight + around the frame when the ScrollView has input focus. + + The default value is \c false. + + \note This property is only applicable on some platforms, such + as Mac OS. + */ + property bool highlightOnFocus: false + + /*! + \qmlproperty Item ScrollView::viewport + + The viewport determines the current "window" on the contentItem. + In other words, it clips it and the size of the viewport tells you + how much of the content area is visible. + */ + property alias viewport: viewportItem + + /*! + \qmlproperty Item ScrollView::flickableItem + + The flickableItem of the ScrollView. If the contentItem provided + to the ScrollView is a Flickable, it will be the \l contentItem. + */ + readonly property alias flickableItem: internal.flickableItem + + /*! + The contentItem of the ScrollView. This is set by the user. + + Note that the definition of contentItem is somewhat different to that + of a Flickable, where the contentItem is implicitly created. + */ + default property Item contentItem + + /*! \internal */ + property alias __scroller: scroller + /*! \internal */ + property alias __verticalScrollbarOffset: scroller.verticalScrollbarOffset + /*! \internal */ + property alias __wheelAreaScrollSpeed: wheelArea.scrollSpeed + /*! \internal */ + property int __scrollBarTopMargin: 0 + /*! \internal */ + property int __viewTopMargin: 0 + /*! \internal */ + property alias __horizontalScrollBar: scroller.horizontalScrollBar + /*! \internal */ + property alias __verticalScrollBar: scroller.verticalScrollBar + /*! \qmlproperty Component ScrollView::style + + The style Component for this control. + \sa {Qt Quick Controls 1 Styles QML Types} + + */ + property Component style: Settings.styleComponent(Settings.style, "ScrollViewStyle.qml", root) + + /*! \internal */ + property Style __style: styleLoader.item + + activeFocusOnTab: false + + onContentItemChanged: { + + if (contentItem.hasOwnProperty("contentY") && // Check if flickable + contentItem.hasOwnProperty("contentHeight")) { + internal.flickableItem = contentItem // "Use content if it is a flickable + internal.flickableItem.parent = viewportItem + } else { + internal.flickableItem = flickableComponent.createObject(viewportItem) + contentItem.parent = internal.flickableItem.contentItem + } + internal.flickableItem.anchors.fill = viewportItem + if (!Settings.hasTouchScreen) + internal.flickableItem.interactive = false + } + + + children: Item { + id: internal + + property Flickable flickableItem + + Loader { + id: styleLoader + sourceComponent: style + onStatusChanged: { + if (status === Loader.Error) + console.error("Failed to load Style for", root) + } + property alias __control: root + } + + Qml.Binding { + target: flickableItem + property: "contentHeight" + when: contentItem !== flickableItem + value: contentItem ? contentItem.height : 0 + restoreMode: Binding.RestoreBinding + } + + Qml.Binding { + target: flickableItem + when: contentItem !== flickableItem + property: "contentWidth" + value: contentItem ? contentItem.width : 0 + restoreMode: Binding.RestoreBinding + } + + Connections { + target: flickableItem + + function onContentYChanged() { + scroller.blockUpdates = true + scroller.verticalScrollBar.value = flickableItem.contentY - flickableItem.originY + scroller.blockUpdates = false + } + + function onContentXChanged() { + scroller.blockUpdates = true + scroller.horizontalScrollBar.value = flickableItem.contentX - flickableItem.originX + scroller.blockUpdates = false + } + + } + + anchors.fill: parent + + Component { + id: flickableComponent + Flickable {} + } + + WheelArea { + id: wheelArea + parent: flickableItem + z: -1 + // ### Note this is needed due to broken mousewheel behavior in Flickable. + + anchors.fill: parent + + property int acceleration: 40 + property int flickThreshold: Settings.dragThreshold + property real speedThreshold: 3 + property real ignored: 0.001 // ## flick() does not work with 0 yVelocity + property int maxFlick: 400 + + property bool horizontalRecursionGuard: false + property bool verticalRecursionGuard: false + + horizontalMinimumValue: 0 + horizontalMaximumValue: flickableItem ? flickableItem.contentWidth - viewport.width : 0 + onHorizontalMaximumValueChanged: { + wheelArea.horizontalRecursionGuard = true + //if horizontalMaximumValue changed, horizontalValue may be actually synced with + wheelArea.horizontalValue = flickableItem.contentX - flickableItem.originX; + wheelArea.horizontalRecursionGuard = false + } + + verticalMinimumValue: 0 + verticalMaximumValue: flickableItem ? flickableItem.contentHeight - viewport.height + __viewTopMargin : 0 + onVerticalMaximumValueChanged: { + wheelArea.verticalRecursionGuard = true + //if verticalMaximumValue changed, verticalValue may be actually synced with + wheelArea.verticalValue = flickableItem.contentY - flickableItem.originY; + wheelArea.verticalRecursionGuard = false + } + + // The default scroll speed for typical angle-based mouse wheels. The value + // comes originally from QTextEdit, which sets 20px steps by default, as well as + // QQuickWheelArea. + // TODO: centralize somewhere, QPlatformTheme? + scrollSpeed: 20 * (__style && __style.__wheelScrollLines || 1) + + Connections { + target: flickableItem + + function onContentYChanged() { + wheelArea.verticalRecursionGuard = true + wheelArea.verticalValue = flickableItem.contentY - flickableItem.originY + wheelArea.verticalRecursionGuard = false + } + function onContentXChanged() { + wheelArea.horizontalRecursionGuard = true + wheelArea.horizontalValue = flickableItem.contentX - flickableItem.originX + wheelArea.horizontalRecursionGuard = false + } + } + + onVerticalValueChanged: { + if (!verticalRecursionGuard) { + var effectiveContentY = flickableItem.contentY - flickableItem.originY + if (effectiveContentY < flickThreshold && verticalDelta > speedThreshold) { + flickableItem.flick(ignored, Math.min(maxFlick, acceleration * verticalDelta)) + } else if (effectiveContentY > flickableItem.contentHeight - flickThreshold - viewport.height + && verticalDelta < -speedThreshold) { + flickableItem.flick(ignored, Math.max(-maxFlick, acceleration * verticalDelta)) + } else { + flickableItem.contentY = verticalValue + flickableItem.originY + } + } + } + + onHorizontalValueChanged: { + if (!horizontalRecursionGuard) + flickableItem.contentX = horizontalValue + flickableItem.originX + } + } + + ScrollViewHelper { + id: scroller + anchors.fill: parent + active: wheelArea.active + property bool outerFrame: !frameVisible || !(__style ? __style.__externalScrollBars : 0) + property int scrollBarSpacing: outerFrame ? 0 : (__style ? __style.__scrollBarSpacing : 0) + property int verticalScrollbarOffset: verticalScrollBar.visible && !verticalScrollBar.isTransient ? + verticalScrollBar.width + scrollBarSpacing : 0 + property int horizontalScrollbarOffset: horizontalScrollBar.visible && !horizontalScrollBar.isTransient ? + horizontalScrollBar.height + scrollBarSpacing : 0 + Loader { + id: frameLoader + sourceComponent: __style ? __style.frame : null + anchors.fill: parent + anchors.rightMargin: scroller.outerFrame ? 0 : scroller.verticalScrollbarOffset + anchors.bottomMargin: scroller.outerFrame ? 0 : scroller.horizontalScrollbarOffset + } + + Item { + id: viewportItem + anchors.fill: frameLoader + anchors.topMargin: frameVisible ? __style.padding.top : 0 + anchors.leftMargin: frameVisible ? __style.padding.left : 0 + anchors.rightMargin: (frameVisible ? __style.padding.right : 0) + (scroller.outerFrame ? scroller.verticalScrollbarOffset : 0) + anchors.bottomMargin: (frameVisible ? __style.padding.bottom : 0) + (scroller.outerFrame ? scroller.horizontalScrollbarOffset : 0) + clip: true + } + } + FocusFrame { visible: highlightOnFocus && root.activeFocus } + } +} diff --git a/deployment_test/QtQuick/Controls/ScrollView.qmlc b/deployment_test/QtQuick/Controls/ScrollView.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..e454b14f09c9ebeca2c4a806e3b89c46ebc4fd63 Binary files /dev/null and b/deployment_test/QtQuick/Controls/ScrollView.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Slider.qml b/deployment_test/QtQuick/Controls/Slider.qml new file mode 100644 index 0000000000000000000000000000000000000000..ff2f0c234d5546c7b886e4ba44b13d69be33f596 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Slider.qml @@ -0,0 +1,347 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQml 2.14 as Qml +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype Slider + \inqmlmodule QtQuick.Controls + \since 5.1 + \ingroup controls + \brief Provides a vertical or horizontal slider control. + + \image slider.png + + The slider is the classic control for providing a bounded value. It lets + the user move a slider handle along a horizontal or vertical groove + and translates the handle's position into a value within the legal range. + + \code + Slider { + value: 0.5 + } + \endcode + + The slider value is by default in the range [0, 1]. If integer values are + needed, you can set the \l stepSize. + + You can create a custom appearance for a Slider by + assigning a \l {SliderStyle}. +*/ + +Control { + id: slider + + /*! + \qmlproperty enumeration Slider::orientation + + This property holds the layout orientation of the slider. + The default value is \c Qt.Horizontal. + */ + property int orientation: Qt.Horizontal + + /*! + \qmlproperty real Slider::minimumValue + + This property holds the minimum value of the slider. + The default value is \c{0.0}. + */ + property alias minimumValue: range.minimumValue + + /*! + \qmlproperty real Slider::maximumValue + + This property holds the maximum value of the slider. + The default value is \c{1.0}. + */ + property alias maximumValue: range.maximumValue + + /*! + \qmlproperty bool Slider::updateValueWhileDragging + + This property indicates whether the current \l value should be updated while + the user is moving the slider handle, or only when the button has been released. + This property could for instance be modified if changing the slider value would turn + out to be too time consuming. + + The default value is \c true. + */ + property bool updateValueWhileDragging: true + + /*! + \qmlproperty bool Slider::pressed + + This property indicates whether the slider handle is being pressed. + */ + readonly property alias pressed: mouseArea.pressed + + /*! + \qmlproperty bool Slider::hovered + + This property indicates whether the slider handle is being hovered. + */ + readonly property alias hovered: mouseArea.handleHovered + + /*! + \qmlproperty real Slider::stepSize + + This property indicates the slider step size. + + A value of 0 indicates that the value of the slider operates in a + continuous range between \l minimumValue and \l maximumValue. + + Any non 0 value indicates a discrete stepSize. The following example + will generate a slider with integer values in the range [0-5]. + + \qml + Slider { + maximumValue: 5.0 + stepSize: 1.0 + } + \endqml + + The default value is \c{0.0}. + */ + property alias stepSize: range.stepSize + + /*! + \qmlproperty real Slider::value + + This property holds the current value of the slider. + The default value is \c{0.0}. + */ + property alias value: range.value + + /*! + \qmlproperty bool Slider::activeFocusOnPress + + This property indicates whether the slider should receive active focus when + pressed. + */ + property bool activeFocusOnPress: false + + /*! + \qmlproperty bool Slider::tickmarksEnabled + + This property indicates whether the slider should display tickmarks + at step intervals. Tick mark spacing is calculated based on the + \l stepSize property. + + The default value is \c false. + + \note This property may be ignored on some platforms when using the native style (e.g. Android). + */ + property bool tickmarksEnabled: false + + /*! + \qmlproperty bool Slider::wheelEnabled + + This property determines whether the control handles wheel events. + The default value is \c true. + + \since QtQuick.Controls 1.6 + */ + property alias wheelEnabled: wheelarea.enabled + + /*! \internal */ + property bool __horizontal: orientation === Qt.Horizontal + + /*! \internal + The extra arguments positionAtMinimum and positionAtMaximum are there to force + re-evaluation of the handle position when the constraints change (QTBUG-41255), + and the same for range.minimumValue (QTBUG-51765) and range.maximumValue (QTBUG-63354). + */ + property real __handlePos: range.valueForPosition(__horizontal ? fakeHandle.x : fakeHandle.y, + range.positionAtMinimum, range.positionAtMaximum, range.minimumValue, range.maximumValue) + + activeFocusOnTab: true + + Accessible.role: Accessible.Slider + /*! \internal */ + function accessibleIncreaseAction() { + range.increaseSingleStep() + } + /*! \internal */ + function accessibleDecreaseAction() { + range.decreaseSingleStep() + } + + style: Settings.styleComponent(Settings.style, "SliderStyle.qml", slider) + + Keys.onRightPressed: if (__horizontal) range.increaseSingleStep() + Keys.onLeftPressed: if (__horizontal) range.decreaseSingleStep() + Keys.onUpPressed: if (!__horizontal) range.increaseSingleStep() + Keys.onDownPressed: if (!__horizontal) range.decreaseSingleStep() + + RangeModel { + id: range + minimumValue: 0.0 + maximumValue: 1.0 + value: 0 + stepSize: 0.0 + inverted: __horizontal ? false : true + + positionAtMinimum: 0 + positionAtMaximum: __horizontal ? slider.width - fakeHandle.width : slider.height - fakeHandle.height + } + + Item { + id: fakeHandle + anchors.verticalCenter: __horizontal ? parent.verticalCenter : undefined + anchors.horizontalCenter: !__horizontal ? parent.horizontalCenter : undefined + width: __panel.handleWidth + height: __panel.handleHeight + + function updatePos() { + if (updateValueWhileDragging && !mouseArea.drag.active) + range.position = __horizontal ? x : y + } + + onXChanged: updatePos(); + onYChanged: updatePos(); + } + + MouseArea { + id: mouseArea + + anchors.fill: parent + hoverEnabled: Settings.hoverEnabled + property int clickOffset: 0 + property real pressX: 0 + property real pressY: 0 + property bool handleHovered: false + + function clamp ( val ) { + return Math.max(range.positionAtMinimum, Math.min(range.positionAtMaximum, val)) + } + + function updateHandlePosition(mouse, force) { + var pos, overThreshold + if (__horizontal) { + pos = clamp (mouse.x + clickOffset - fakeHandle.width/2) + overThreshold = Math.abs(mouse.x - pressX) >= Settings.dragThreshold + if (overThreshold) + preventStealing = true + if (overThreshold || force) + fakeHandle.x = pos + } else if (!__horizontal) { + pos = clamp (mouse.y + clickOffset- fakeHandle.height/2) + overThreshold = Math.abs(mouse.y - pressY) >= Settings.dragThreshold + if (overThreshold) + preventStealing = true + if (overThreshold || force) + fakeHandle.y = pos + } + } + + onPositionChanged: { + if (pressed) + updateHandlePosition(mouse, !Settings.hasTouchScreen || preventStealing) + + var point = mouseArea.mapToItem(fakeHandle, mouse.x, mouse.y) + handleHovered = fakeHandle.contains(Qt.point(point.x, point.y)) + } + + onPressed: { + if (slider.activeFocusOnPress) + slider.forceActiveFocus(); + + if (handleHovered) { + var point = mouseArea.mapToItem(fakeHandle, mouse.x, mouse.y) + clickOffset = __horizontal ? fakeHandle.width/2 - point.x : fakeHandle.height/2 - point.y + } + pressX = mouse.x + pressY = mouse.y + updateHandlePosition(mouse, !Settings.hasTouchScreen) + } + + onReleased: { + updateHandlePosition(mouse, Settings.hasTouchScreen) + // If we don't update while dragging, this is the only + // moment that the range is updated. + if (!slider.updateValueWhileDragging) + range.position = __horizontal ? fakeHandle.x : fakeHandle.y; + clickOffset = 0 + preventStealing = false + } + + onExited: handleHovered = false + } + + + // During the drag, we simply ignore the position set from the range, this + // means that setting a value while dragging will not "interrupt" the + // dragging activity. + Qml.Binding { + when: !mouseArea.drag.active + target: fakeHandle + property: __horizontal ? "x" : "y" + value: range.position + restoreMode: Binding.RestoreBinding + } + + WheelArea { + id: wheelarea + anchors.fill: parent + verticalValue: slider.value + horizontalValue: slider.value + horizontalMinimumValue: slider.minimumValue + horizontalMaximumValue: slider.maximumValue + verticalMinimumValue: slider.minimumValue + verticalMaximumValue: slider.maximumValue + property real step: (slider.maximumValue - slider.minimumValue)/(range.positionAtMaximum - range.positionAtMinimum) + + onVerticalWheelMoved: { + if (verticalDelta !== 0) { + var delta = Math.abs(verticalDelta)*step > stepSize ? verticalDelta*step : verticalDelta/Math.abs(verticalDelta)*stepSize + range.position = range.positionForValue(value - delta * (inverted ? 1 : -1)) + } + } + + onHorizontalWheelMoved: { + if (horizontalDelta !== 0) { + var delta = Math.abs(horizontalDelta)*step > stepSize ? horizontalDelta*step : horizontalDelta/Math.abs(horizontalDelta)*stepSize + range.position = range.positionForValue(value + delta * (inverted ? 1 : -1)) + } + } + } +} diff --git a/deployment_test/QtQuick/Controls/Slider.qmlc b/deployment_test/QtQuick/Controls/Slider.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..3aaa4e2c84e36377c10279014ca79786753dad12 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Slider.qmlc differ diff --git a/deployment_test/QtQuick/Controls/SpinBox.qml b/deployment_test/QtQuick/Controls/SpinBox.qml new file mode 100644 index 0000000000000000000000000000000000000000..b7ec6a8f82484911a2f1553ef1afe43aed0ecbde --- /dev/null +++ b/deployment_test/QtQuick/Controls/SpinBox.qml @@ -0,0 +1,397 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype SpinBox + \inqmlmodule QtQuick.Controls + \since 5.1 + \ingroup controls + \brief Provides a spin box control. + + \image spinbox.png + + SpinBox allows the user to choose a value by clicking the up or down buttons, or by + pressing up or down on the keyboard. The user can also type the value in manually. + + By default the SpinBox provides discrete values in the range [0-99] with a \l stepSize of 1 and 0 \l decimals. + + \code + SpinBox { + id: spinbox + } + \endcode + + Note that if you require decimal values you will need to set the \l decimals to a non 0 value. + + \code + SpinBox { + id: spinbox + decimals: 2 + } + \endcode + +*/ + +Control { + id: spinbox + + /*! + \qmlproperty real SpinBox::value + + The value of this SpinBox, clamped to \l minimumValue and \l maximumValue. + + The default value is \c{0.0}. + */ + property alias value: validator.value + + /*! + \qmlproperty real SpinBox::minimumValue + + The minimum value of the SpinBox range. + The \l value is clamped to this value. + + The default value is \c{0.0}. + */ + property alias minimumValue: validator.minimumValue + + /*! + \qmlproperty real SpinBox::maximumValue + + The maximum value of the SpinBox range. + The \l value is clamped to this value. If maximumValue is smaller than + \l minimumValue, \l minimumValue will be enforced. + + The default value is \c{99}. + */ + property alias maximumValue: validator.maximumValue + + /*! \qmlproperty real SpinBox::stepSize + The amount by which the \l value is incremented/decremented when a + spin button is pressed. + + The default value is \c{1.0}. + */ + property alias stepSize: validator.stepSize + + /*! \qmlproperty string SpinBox::suffix + The suffix for the value. I.e "cm" */ + property alias suffix: validator.suffix + + /*! \qmlproperty string SpinBox::prefix + The prefix for the value. I.e "$" */ + property alias prefix: validator.prefix + + /*! \qmlproperty int SpinBox::decimals + This property indicates the amount of decimals. + Note that if you enter more decimals than specified, they will + be truncated to the specified amount of decimal places. + The default value is \c{0}. + */ + property alias decimals: validator.decimals + + /*! \qmlproperty font SpinBox::font + + This property indicates the current font used by the SpinBox. + */ + property alias font: input.font + + /*! + \qmlproperty int SpinBox::cursorPosition + \since QtQuick.Controls 1.5 + + This property holds the position of the cursor in the SpinBox. + */ + property alias cursorPosition: input.cursorPosition + + + /*! This property indicates whether the Spinbox should get active + focus when pressed. + The default value is \c true. + */ + property bool activeFocusOnPress: true + + /*! \qmlproperty enumeration horizontalAlignment + \since QtQuick.Controls 1.1 + + This property indicates how the content is horizontally aligned + within the text field. + + The supported values are: + \list + \li Qt.AlignLeft + \li Qt.AlignHCenter + \li Qt.AlignRight + \endlist + + The default value is style dependent. + */ + property int horizontalAlignment: __panel ? __panel.horizontalAlignment : Qt.AlignLeft + + /*! + \qmlproperty bool SpinBox::hovered + + This property indicates whether the control is being hovered. + */ + readonly property bool hovered: mouseArea.containsMouse || input.containsMouse + || mouseUp.containsMouse || mouseDown.containsMouse + + /*! + \qmlsignal SpinBox::editingFinished() + \since QtQuick.Controls 1.1 + + This signal is emitted when the Return or Enter key is pressed or + the control loses focus. + + The corresponding handler is \c onEditingFinished. + */ + signal editingFinished() + + /*! + \qmlproperty bool SpinBox::selectByMouse + \since QtQuick.Controls 1.3 + + This property determines if the user can select the text with the + mouse. + + The default value is \c true. + */ + property bool selectByMouse: true + + /*! + \qmlproperty bool SpinBox::inputMethodComposing + \since QtQuick.Controls 1.3 + + This property holds whether the SpinBox has partial text input from an input method. + + While it is composing an input method may rely on mouse or key events from the SpinBox + to edit or commit the partial text. This property can be used to determine when to disable + events handlers that may interfere with the correct operation of an input method. + */ + readonly property bool inputMethodComposing: !!input.inputMethodComposing + + /*! + \since QtQuick.Controls 1.3 + + This property contains the edit \l Menu for working + with text selection. Set it to \c null if no menu + is wanted. + */ + property Component menu: input.editMenu.defaultMenu + + style: Settings.styleComponent(Settings.style, "SpinBoxStyle.qml", spinbox) + + /*! \internal */ + function __increment() { + validator.increment() + if (activeFocus) + input.selectValue() + } + + /*! \internal */ + function __decrement() { + validator.decrement() + if (activeFocus) + input.selectValue() + } + + /*! \internal */ + property alias __text: input.text + + /*! \internal */ + property alias __baselineOffset: input.baselineOffset + + __styleData: QtObject { + readonly property bool upEnabled: value != maximumValue; + readonly property alias upHovered: mouseUp.containsMouse + readonly property alias upPressed: mouseUp.pressed + + readonly property bool downEnabled: value != minimumValue; + readonly property alias downPressed: mouseDown.pressed + readonly property alias downHovered: mouseDown.containsMouse + + readonly property int contentHeight: Math.max(input.implicitHeight, 16) + readonly property int contentWidth: Math.max(maxSizeHint.implicitWidth, minSizeHint.implicitWidth) + } + + Text { + id: maxSizeHint + text: prefix + maximumValue.toFixed(decimals) + suffix + font: input.font + visible: false + } + + Text { + id: minSizeHint + text: prefix + minimumValue.toFixed(decimals) + suffix + font: input.font + visible: false + } + + activeFocusOnTab: true + + onActiveFocusChanged: if (activeFocus) input.selectValue() + + Accessible.name: input.text + Accessible.role: Accessible.SpinBox + Accessible.editable: true + + MouseArea { + id: mouseArea + anchors.fill: parent + hoverEnabled: Settings.hoverEnabled + onPressed: if (activeFocusOnPress) input.forceActiveFocus() + onWheel: { + if (wheel.angleDelta.y > 0) + __increment(); + else + __decrement(); + } + } + + TextInputWithHandles { + id: input + clip: contentWidth > width + anchors.fill: parent + anchors.leftMargin: __style ? __style.padding.left : 0 + anchors.topMargin: __style ? __style.padding.top : 0 + anchors.rightMargin: __style ? __style.padding.right: 0 + anchors.bottomMargin: __style ? __style.padding.bottom: 0 + + control: spinbox + cursorHandle: __style ? __style.__cursorHandle : undefined + selectionHandle: __style ? __style.__selectionHandle : undefined + + focus: true + activeFocusOnPress: spinbox.activeFocusOnPress + + horizontalAlignment: spinbox.horizontalAlignment + verticalAlignment: __panel ? __panel.verticalAlignment : Qt.AlignVCenter + inputMethodHints: Qt.ImhFormattedNumbersOnly + + validator: SpinBoxValidator { + id: validator + property bool ready: false // Delay validation until all properties are ready + onTextChanged: if (ready) input.text = validator.text + Component.onCompleted: {input.text = validator.text ; ready = true} + } + onAccepted: { + input.text = validator.text + selectValue() + } + + Keys.forwardTo: spinbox + + onEditingFinished: spinbox.editingFinished() + + font: __panel ? __panel.font : TextSingleton.font + color: __panel ? __panel.foregroundColor : "black" + selectionColor: __panel ? __panel.selectionColor : "black" + selectedTextColor: __panel ? __panel.selectedTextColor : "black" + + opacity: parent.enabled ? 1 : 0.5 + renderType: __style ? __style.renderType : Text.NativeRendering + + function selectValue() { + select(prefix.length, text.length - suffix.length) + } + } + + // Spinbox increment button + + MouseArea { + id: mouseUp + objectName: "mouseUp" + hoverEnabled: Settings.hoverEnabled + + property var upRect: __panel ? __panel.upRect : null + + anchors.left: parent.left + anchors.top: parent.top + + anchors.leftMargin: upRect ? upRect.x : 0 + anchors.topMargin: upRect ? upRect.y : 0 + + width: upRect ? upRect.width : 0 + height: upRect ? upRect.height : 0 + + onClicked: __increment() + onPressed: if (!Settings.hasTouchScreen && activeFocusOnPress) input.forceActiveFocus() + + property bool autoincrement: false; + onReleased: autoincrement = false + onExited: autoincrement = false + Timer { running: mouseUp.pressed; interval: 350 ; onTriggered: mouseUp.autoincrement = true } + Timer { running: mouseUp.autoincrement && mouseUp.containsMouse; interval: 60 ; repeat: true ; onTriggered: __increment() } + } + + // Spinbox decrement button + + MouseArea { + id: mouseDown + objectName: "mouseDown" + hoverEnabled: Settings.hoverEnabled + + onClicked: __decrement() + onPressed: if (!Settings.hasTouchScreen && activeFocusOnPress) input.forceActiveFocus() + + property var downRect: __panel ? __panel.downRect : null + + anchors.left: parent.left + anchors.top: parent.top + + anchors.leftMargin: downRect ? downRect.x : 0 + anchors.topMargin: downRect ? downRect.y : 0 + + width: downRect ? downRect.width : 0 + height: downRect ? downRect.height : 0 + + property bool autoincrement: false; + onReleased: autoincrement = false + onExited: autoincrement = false + Timer { running: mouseDown.pressed; interval: 350 ; onTriggered: mouseDown.autoincrement = true } + Timer { running: mouseDown.autoincrement && mouseDown.containsMouse; interval: 60 ; repeat: true ; onTriggered: __decrement() } + } + + Keys.onUpPressed: __increment() + Keys.onDownPressed: __decrement() +} diff --git a/deployment_test/QtQuick/Controls/SpinBox.qmlc b/deployment_test/QtQuick/Controls/SpinBox.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..b6947e4f26c38675ac0b758f197fd8fefdcbc87f Binary files /dev/null and b/deployment_test/QtQuick/Controls/SpinBox.qmlc differ diff --git a/deployment_test/QtQuick/Controls/SplitView.qml b/deployment_test/QtQuick/Controls/SplitView.qml new file mode 100644 index 0000000000000000000000000000000000000000..471e70a07a0e5c2269bbd71c2e22e243f18b32f4 --- /dev/null +++ b/deployment_test/QtQuick/Controls/SplitView.qml @@ -0,0 +1,633 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Layouts 1.0 +import QtQuick.Controls.Private 1.0 as Private +import QtQuick.Window 2.1 + +/*! + \qmltype SplitView + \inqmlmodule QtQuick.Controls + \since 5.1 + \ingroup views + \ingroup controls + \brief Lays out items with a draggable splitter between each item. + + \image splitview.png + + SplitView is a control that lays out items horizontally or + vertically with a draggable splitter between each item. + + There will always be one (and only one) item in the SplitView that has \l{Layout::fillWidth}{Layout.fillWidth} + set to \c true (or \l{Layout::fillHeight}{Layout.fillHeight}, if orientation is Qt.Vertical). This means that the + item will get all leftover space when other items have been laid out. + By default, the last visible child of the SplitView will have this set, but + it can be changed by explicitly setting fillWidth to \c true on another item. + + As the fillWidth item will automatically be resized to fit the extra space, explicit assignments + to its width and height properties will be ignored (but \l{Layout::minimumWidth}{Layout.minimumWidth} and + \l{Layout::maximumWidth}{Layout.maximumWidth} will still be respected). + The initial sizes of other items should be set via their width and height properties. + Any binding assignment to an item's width or height will be broken as soon as the user + drags that item's splitter handle. + + A handle can belong to the item either on the left or top side, or on the right or bottom side: + \list + \li If the fillWidth item is to the right: the handle belongs to the left item. + \li if the fillWidth item is on the left: the handle belongs to the right item. + \endlist + + This will again control which item gets resized when the user drags a handle, + and which handle gets hidden when an item is told to hide. + + SplitView supports setting attached Layout properties on child items, which + means that you can set the following attached properties for each child: + \list + \li \l{Layout::minimumWidth}{Layout.minimumWidth} + \li \l{Layout::minimumHeight}{Layout.minimumHeight} + \li \l{Layout::maximumWidth}{Layout.maximumWidth} + \li \l{Layout::maximumHeight}{Layout.maximumHeight} + \li \l{Layout::fillWidth}{Layout.fillWidth} (\c true for only one child) + \li \l{Layout::fillHeight}{Layout.fillHeight} (\c true for only one child) + \endlist + + \note import QtQuick.Layouts 1.0 in your QML file in order to use the Layout + attached properties inside SplitView. + + Example: + + To create a SplitView with three items, and let the center item get superfluous space, one + could do the following: + + \qml + SplitView { + anchors.fill: parent + orientation: Qt.Horizontal + + Rectangle { + width: 200 + Layout.maximumWidth: 400 + color: "lightblue" + Text { + text: "View 1" + anchors.centerIn: parent + } + } + Rectangle { + id: centerItem + Layout.minimumWidth: 50 + Layout.fillWidth: true + color: "lightgray" + Text { + text: "View 2" + anchors.centerIn: parent + } + } + Rectangle { + width: 200 + color: "lightgreen" + Text { + text: "View 3" + anchors.centerIn: parent + } + } + } + + \endqml +*/ + +Item { + id: root + + /*! + \qmlproperty enumeration SplitView::orientation + + This property holds the orientation of the SplitView. + The value can be either \c Qt.Horizontal or \c Qt.Vertical. + The default value is \c Qt.Horizontal. + */ + property int orientation: Qt.Horizontal + + /*! + This property holds the delegate that will be instantiated between each + child item. Inside the delegate the following properties are available: + + \table + \row \li readonly property bool styleData.index \li Specifies the index of the splitter handle. The handle + between the first and the second item will get index 0, + the next handle index 1 etc. + \row \li readonly property bool styleData.hovered \li The handle is being hovered. + \row \li readonly property bool styleData.pressed \li The handle is being pressed. + \row \li readonly property bool styleData.resizing \li The handle is being dragged. + \endtable + +*/ + property Component handleDelegate: Rectangle { + width: 1 + height: 1 + color: Qt.darker(pal.window, 1.5) + } + + /*! + This propery is \c true when the user is resizing any of the items by + dragging on the splitter handles. + */ + property bool resizing: false + + /*! \internal */ + default property alias __contents: contents.data + /*! \internal */ + property alias __items: splitterItems.children + /*! \internal */ + property alias __handles: splitterHandles.children + + clip: true + Component.onCompleted: d.init() + onWidthChanged: d.updateLayout() + onHeightChanged: d.updateLayout() + onOrientationChanged: d.changeOrientation() + + /*! \qmlmethod void SplitView::addItem(Item item) + Add an \a item to the end of the view. + \since QtQuick.Controls 1.3 */ + function addItem(item) { + d.updateLayoutGuard = true + d.addItem_impl(item) + d.calculateImplicitSize() + d.updateLayoutGuard = false + d.updateFillIndex() + } + + /*! \qmlmethod void SplitView::removeItem(Item item) + Remove \a item from the view. + \since QtQuick.Controls 1.4 */ + function removeItem(item) { + d.updateLayoutGuard = true + var result = d.removeItem_impl(item) + if (result !== null) { + d.calculateImplicitSize() + d.updateLayoutGuard = false + d.updateFillIndex() + } + else { + d.updateLayoutGuard = false + } + } + + SystemPalette { id: pal } + + QtObject { + id: d + + readonly property string leftMargin: horizontal ? "leftMargin" : "topMargin" + readonly property string topMargin: horizontal ? "topMargin" : "leftMargin" + readonly property string rightMargin: horizontal ? "rightMargin" : "bottomMargin" + + property bool horizontal: orientation == Qt.Horizontal + readonly property string minimum: horizontal ? "minimumWidth" : "minimumHeight" + readonly property string maximum: horizontal ? "maximumWidth" : "maximumHeight" + readonly property string otherMinimum: horizontal ? "minimumHeight" : "minimumWidth" + readonly property string otherMaximum: horizontal ? "maximumHeight" : "maximumWidth" + readonly property string offset: horizontal ? "x" : "y" + readonly property string otherOffset: horizontal ? "y" : "x" + readonly property string size: horizontal ? "width" : "height" + readonly property string otherSize: horizontal ? "height" : "width" + readonly property string implicitSize: horizontal ? "implicitWidth" : "implicitHeight" + readonly property string implicitOtherSize: horizontal ? "implicitHeight" : "implicitWidth" + + property int fillIndex: -1 + property bool updateLayoutGuard: true + + function extraMarginSize(item, other) { + if (typeof(other) === 'undefined') + other = false; + if (other === horizontal) + // vertical + return item.Layout.topMargin + item.Layout.bottomMargin + return item.Layout.leftMargin + item.Layout.rightMargin + } + + function addItem_impl(item) + { + // temporarily set fillIndex to new item + fillIndex = __items.length + if (splitterItems.children.length > 0) + handleLoader.createObject(splitterHandles, {"__handleIndex":splitterItems.children.length - 1}) + + item.parent = splitterItems + d.initItemConnections(item) + } + + function initItemConnections(item) + { + // should match disconnections in terminateItemConnections + item.widthChanged.connect(d.updateLayout) + item.heightChanged.connect(d.updateLayout) + item.Layout.maximumWidthChanged.connect(d.updateLayout) + item.Layout.minimumWidthChanged.connect(d.updateLayout) + item.Layout.maximumHeightChanged.connect(d.updateLayout) + item.Layout.minimumHeightChanged.connect(d.updateLayout) + item.Layout.leftMarginChanged.connect(d.updateLayout) + item.Layout.topMarginChanged.connect(d.updateLayout) + item.Layout.rightMarginChanged.connect(d.updateLayout) + item.Layout.bottomMarginChanged.connect(d.updateLayout) + item.visibleChanged.connect(d.updateFillIndex) + item.Layout.fillWidthChanged.connect(d.updateFillIndex) + item.Layout.fillHeightChanged.connect(d.updateFillIndex) + } + + function terminateItemConnections(item) + { + // should match connections in initItemConnections + item.widthChanged.disconnect(d.updateLayout) + item.heightChanged.disconnect(d.updateLayout) + item.Layout.maximumWidthChanged.disconnect(d.updateLayout) + item.Layout.minimumWidthChanged.disconnect(d.updateLayout) + item.Layout.maximumHeightChanged.disconnect(d.updateLayout) + item.Layout.minimumHeightChanged.disconnect(d.updateLayout) + item.visibleChanged.disconnect(d.updateFillIndex) + item.Layout.fillWidthChanged.disconnect(d.updateFillIndex) + item.Layout.fillHeightChanged.disconnect(d.updateFillIndex) + } + + function removeItem_impl(item) + { + var pos = itemPos(item) + + // Check pos range + if (pos < 0 || pos >= __items.length) + return null + + // Temporary unset the fillIndex + fillIndex = __items.length - 1 + + // Remove the handle at the left/right of the item that + // is going to be removed + var handlePos = -1 + var hasPrevious = pos > 0 + var hasNext = (pos + 1) < __items.length + + if (hasPrevious) + handlePos = pos-1 + else if (hasNext) + handlePos = pos + if (handlePos >= 0) { + var handle = __handles[handlePos] + handle.visible = false + handle.parent = null + handle.destroy() + for (var i = handlePos; i < __handles.length; ++i) + __handles[i].__handleIndex = i + } + + // Remove the item. + // Disconnect the item to be removed + terminateItemConnections(item) + item.parent = null + + return item + } + + function itemPos(item) + { + for (var i = 0; i < __items.length; ++i) + if (item === __items[i]) + return i + return -1 + } + + function init() + { + for (var i=0; i<__contents.length; ++i) { + var item = __contents[i]; + if (!item.hasOwnProperty("x")) + continue + addItem_impl(item) + i-- // item was removed from list + } + + d.calculateImplicitSize() + d.updateLayoutGuard = false + d.updateFillIndex() + } + + function updateFillIndex() + { + if (lastItem.visible !== root.visible) + return + var policy = (root.orientation === Qt.Horizontal) ? "fillWidth" : "fillHeight" + for (var i=0; i<__items.length-1; ++i) { + if (__items[i].Layout[policy] === true) + break; + } + + d.fillIndex = i + d.updateLayout() + } + + function changeOrientation() + { + if (__items.length == 0) + return; + d.updateLayoutGuard = true + + // Swap width/height for items and handles: + for (var i=0; i<__items.length; ++i) { + var item = __items[i] + var tmp = item.x + item.x = item.y + item.y = tmp + tmp = item.width + item.width = item.height + item.height = tmp + + var handle = __handles[i] + if (handle) { + tmp = handle.x + handle.x = handle.y + handle.y = handle.x + tmp = handle.width + handle.width = handle.height + handle.height = tmp + } + } + + // Change d.horizontal explicit, since the binding will change too late: + d.horizontal = orientation == Qt.Horizontal + d.updateLayoutGuard = false + d.updateFillIndex() + } + + function calculateImplicitSize() + { + var implicitSize = 0 + var implicitOtherSize = 0 + + for (var i=0; i<__items.length; ++i) { + var item = __items[i]; + implicitSize += clampedMinMax(item[d.size], item.Layout[minimum], item.Layout[maximum]) + extraMarginSize(item) + var os = clampedMinMax(item[otherSize], item.Layout[otherMinimum], item.Layout[otherMaximum]) + extraMarginSize(item, true) + implicitOtherSize = Math.max(implicitOtherSize, os) + + var handle = __handles[i] + if (handle) + implicitSize += handle[d.size] //### Can handles have margins?? + } + + root[d.implicitSize] = implicitSize + root[d.implicitOtherSize] = implicitOtherSize + } + + function clampedMinMax(value, minimum, maximum) + { + if (value < minimum) + value = minimum + if (value > maximum) + value = maximum + return value + } + + function accumulatedSize(firstIndex, lastIndex, includeFillItemMinimum) + { + // Go through items and handles, and + // calculate their accummulated width. + var w = 0 + for (var i=firstIndex; i<lastIndex; ++i) { + + var item = __items[i] + if (item.visible || i == d.fillIndex) { + if (i !== d.fillIndex) + w += item[d.size] + extraMarginSize(item) + else if (includeFillItemMinimum && item.Layout[minimum] !== undefined) + w += item.Layout[minimum] + extraMarginSize(item) + } + + var handle = __handles[i] + if (handle && handle.visible) + w += handle[d.size] + } + return w + } + + function updateLayout() + { + // This function will reposition both handles and + // items according to the their width/height: + if (__items.length === 0) + return; + if (!lastItem.visible) + return; + if (d.updateLayoutGuard === true) + return + d.updateLayoutGuard = true + + // Ensure all items within their min/max: + for (var i=0; i<__items.length; ++i) { + if (i !== d.fillIndex) { + var item = __items[i]; + var clampedSize = clampedMinMax(item[d.size], item.Layout[d.minimum], item.Layout[d.maximum]) + if (clampedSize != item[d.size]) + item[d.size] = clampedSize + } + } + + // Set size of fillItem to remaining available space. + // Special case: If SplitView size is zero, we leave fillItem with the size + // it already got, and assume that SplitView ends up with implicit size as size: + if (root[d.size] != 0) { + var fillItem = __items[fillIndex] + var superfluous = root[d.size] - d.accumulatedSize(0, __items.length, false) + fillItem[d.size] = clampedMinMax(superfluous - extraMarginSize(fillItem), fillItem.Layout[minimum], fillItem.Layout[maximum]); + } + + // Position items and handles according to their width: + var lastVisibleItem, lastVisibleHandle, handle + var pos = 0; + for (i=0; i<__items.length; ++i) { + // Position item to the right of the previous visible handle: + item = __items[i]; + if (item.visible || i == d.fillIndex) { + pos += item.Layout[leftMargin] + item[d.offset] = pos + item[d.otherOffset] = item.Layout[topMargin] + item[d.otherSize] = clampedMinMax(root[otherSize], item.Layout[otherMinimum], item.Layout[otherMaximum]) - extraMarginSize(item, true) + lastVisibleItem = item + pos += Math.max(0, item[d.size]) + item.Layout[rightMargin] + } + + handle = __handles[i] + if (handle && handle.visible) { + handle[d.offset] = pos + handle[d.otherOffset] = 0 //### can handles have margins? + handle[d.otherSize] = root[d.otherSize] + lastVisibleHandle = handle + pos += handle[d.size] + } + } + + d.updateLayoutGuard = false + } + } + + Component { + id: handleLoader + Loader { + id: itemHandle + + property int __handleIndex: -1 + property QtObject styleData: QtObject { + readonly property int index: __handleIndex + readonly property alias hovered: mouseArea.containsMouse + readonly property alias pressed: mouseArea.pressed + readonly property bool resizing: mouseArea.drag.active + onResizingChanged: root.resizing = resizing + } + property bool resizeLeftItem: (d.fillIndex > __handleIndex) + visible: __items[__handleIndex + (resizeLeftItem ? 0 : 1)].visible + sourceComponent: handleDelegate + onWidthChanged: d.updateLayout() + onHeightChanged: d.updateLayout() + onXChanged: moveHandle() + onYChanged: moveHandle() + + MouseArea { + id: mouseArea + anchors.fill: parent + property real defaultMargin: Private.Settings.hasTouchScreen ? Screen.pixelDensity * 3.5 : 2 + anchors.leftMargin: (parent.width <= 1) ? -defaultMargin : 0 + anchors.rightMargin: (parent.width <= 1) ? -defaultMargin : 0 + anchors.topMargin: (parent.height <= 1) ? -defaultMargin : 0 + anchors.bottomMargin: (parent.height <= 1) ? -defaultMargin : 0 + hoverEnabled: Private.Settings.hoverEnabled + drag.threshold: 0 + drag.target: parent + drag.axis: root.orientation === Qt.Horizontal ? Drag.XAxis : Drag.YAxis + cursorShape: root.orientation === Qt.Horizontal ? Qt.SplitHCursor : Qt.SplitVCursor + } + + function moveHandle() { + // Moving the handle means resizing an item. Which one, + // left or right, depends on where the fillItem is. + // 'updateLayout' will be overridden in case new width violates max/min. + // 'updateLayout' will be triggered when an item changes width. + if (d.updateLayoutGuard) + return + + var leftHandle, leftItem, rightItem, rightHandle + var leftEdge, rightEdge, newWidth, leftStopX, rightStopX + var i + + if (resizeLeftItem) { + // Ensure that the handle is not crossing other handles. So + // find the first visible handle to the left to determine the left edge: + leftEdge = 0 + for (i=__handleIndex-1; i>=0; --i) { + leftHandle = __handles[i] + if (leftHandle.visible) { + leftEdge = leftHandle[d.offset] + leftHandle[d.size] + break; + } + } + + // Ensure: leftStopX >= itemHandle[d.offset] >= rightStopX + var min = d.accumulatedSize(__handleIndex+1, __items.length, true) + rightStopX = root[d.size] - min - itemHandle[d.size] + leftStopX = Math.max(leftEdge, itemHandle[d.offset]) + itemHandle[d.offset] = Math.min(rightStopX, Math.max(leftStopX, itemHandle[d.offset])) + + newWidth = itemHandle[d.offset] - leftEdge + leftItem = __items[__handleIndex] + // The next line will trigger 'updateLayout': + leftItem[d.size] = newWidth + } else { + // Resize item to the right. + // Ensure that the handle is not crossing other handles. So + // find the first visible handle to the right to determine the right edge: + rightEdge = root[d.size] + for (i=__handleIndex+1; i<__handles.length; ++i) { + rightHandle = __handles[i] + if (rightHandle.visible) { + rightEdge = rightHandle[d.offset] + break; + } + } + + // Ensure: leftStopX <= itemHandle[d.offset] <= rightStopX + min = d.accumulatedSize(0, __handleIndex+1, true) + leftStopX = min - itemHandle[d.size] + rightStopX = Math.min((rightEdge - itemHandle[d.size]), itemHandle[d.offset]) + itemHandle[d.offset] = Math.max(leftStopX, Math.min(itemHandle[d.offset], rightStopX)) + + newWidth = rightEdge - (itemHandle[d.offset] + itemHandle[d.size]) + rightItem = __items[__handleIndex+1] + // The next line will trigger 'updateLayout': + rightItem[d.size] = newWidth + } + } + } + } + + Item { + id: contents + visible: false + anchors.fill: parent + } + Item { + id: splitterItems + anchors.fill: parent + } + Item { + id: splitterHandles + anchors.fill: parent + } + + Item { + id: lastItem + onVisibleChanged: d.updateFillIndex() + } + + Component.onDestruction: { + for (var i=0; i<splitterItems.children.length; ++i) { + var item = splitterItems.children[i]; + d.terminateItemConnections(item) + } + } +} diff --git a/deployment_test/QtQuick/Controls/SplitView.qmlc b/deployment_test/QtQuick/Controls/SplitView.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..6e0d43ed5b1e3895685346b8bdd5933777d4222e Binary files /dev/null and b/deployment_test/QtQuick/Controls/SplitView.qmlc differ diff --git a/deployment_test/QtQuick/Controls/StackView.qml b/deployment_test/QtQuick/Controls/StackView.qml new file mode 100644 index 0000000000000000000000000000000000000000..290d24c23038f96d487bb1a6c51cc29ee9ea744b --- /dev/null +++ b/deployment_test/QtQuick/Controls/StackView.qml @@ -0,0 +1,996 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype StackView + \inherits Item + \ingroup views + \ingroup controls + \inqmlmodule QtQuick.Controls + \since 5.1 + + \brief Provides a stack-based navigation model. + + \image stackview.png + + StackView implements a stack-based navigation model, which can be used + with a set of interlinked information pages. Items are pushed onto the stack + as the user navigates deeper into the material, and popped off again when he + chooses to go back. + + The \l{Qt Quick Controls 1 - Touch Gallery}{touch gallery} example is a good + starting point to understand how StackView works. The following snippet + from the example shows how it can be used: + + \qml + StackView { + id: stack + initialItem: view + + Component { + id: view + + MouseArea { + Text { + text: stack.depth + anchors.centerIn: parent + } + onClicked: stack.push(view) + } + } + } + \endqml + + \section1 Using StackView in an Application + Using StackView in an application is typically a simple matter of adding + the StackView as a child of a Window. The stack is usually anchored to the + edges of the window, except at the top or bottom where it might be anchored + to a status bar, or some other similar UI component. The stack can then be + used by invoking its navigation methods. The first item to show in the StackView + is the one that was assigned to \l initialItem. + + \note Items pushed onto the stack view have \l{Supported Attached Properties}{Stack attached properties}. + + \section1 Basic Navigation + There are three primary navigation operations in StackView: push(), pop(), and + replace (replace by specifying argument \c replace to push()). + These correspond to classic stack operations where "push" adds an item to the + top of a stack, "pop" removes the top item from the stack, and "replace" is like a + pop followed by a push, in that it replaces the topmost item on the stack with + a new item (but the applied transtition might be different). The topmost item + in the stack corresponds to the one that is \l{StackView::currentItem} {currently} + visible on the screen. That means that "push" is the logical equivalent of navigating + forward or deeper into the application, "pop" is the equivalent of navigating back, + and "replace" is the equivalent of replacing the current item. + + Sometimes it is necessary to go back more than a single step in the stack, for + example, to return to a "main" item or some kind of section item in the application. + For this use case, it is possible to specify an item as a parameter for pop(). + This is called an "unwind" operation as the stack gets unwound to the specified item. + If the item is not found, then the stack unwinds until there is only a single item in + the stack, which then becomes the current item. To explicitly unwind to the bottom + of the stack, it is recommended to use \l{pop()} {pop(null)}, though technically any + non-existent item will do. + + Given the stack [A, B, C]: + + \list + \li \l{push()}{push(D)} => [A, B, C, D] - "push" transition animation between C and D + \li pop() => [A, B] - "pop" transition animation between C and B + \li \l{push()}{push(D, replace)} => [A, B, D] - "replace" transition between C and D + \li \l{pop()}{pop(A)} => [A] - "pop" transition between C and A + \endlist + + \note When the stack is empty, a push() will not perform a + transition animation because there is nothing to transition from (typically during + application start-up). A pop() on a stack with depth 1 or 0 is a no-operation. + If all items need to be removed from the stack, a separate function clear() is + available. + + Calling push() returns the item that was pushed onto the stack. + Calling pop() returns the item that was popped off the stack. When pop() is + called in an unwind operation, the top-most item (the first item that was + popped, which will also be the one transitioning out) is returned. + + \section1 Deep Linking + \e{Deep linking} means launching an application into a particular state. For example, + a newspaper application could be launched into showing a particular article, + bypassing the front item (and possibly a section item) that would normally have + to be navigated through to get to the article concerned. In terms of StackView, deep + linking means the ability to modify the state of the stack, so much so that it is + possible to push a set of items to the top of the stack, or to completely reset + the stack to a given state. + + The API for deep linking in StackView is the same as for basic navigation. Pushing + an array instead of a single item, will involve that all the items in that array will + be pushed onto the stack. The transition animation, however, will be conducted as + if only the last item in the array was pushed onto the stack. The normal semantics + of push() apply for deep linking, meaning that push() adds whatever is pushed onto + the stack. Note also that only the last item of the array will be loaded. + The rest will be lazy-loaded as needed when entering the screen upon subsequent + calls to pop (or when requesting the item by using \a get). + + This gives us the following result, given the stack [A, B, C]: + + \list + \li \l{push()}{push([D, E, F])} => [A, B, C, D, E, F] - "push" transition animation between C and F + \li \l{push()}{push([D, E, F], replace)} => [A, B, D, E, F] - "replace" transition animation between C and F + \li clear(); \l{push()}{push([D, E, F])} => [D, E, F] - no transition animation (since the stack was empty) + \endlist + + \section1 Pushing items + + An item pushed onto the StackView can be either an Item, a URL, a string + containing a URL, or a Component. To push it, assign it to a property "item" + inside a property list, and pass it as an argument to \l{StackView::push}{push}: + + \code + stackView.push({item: yourItem}) + \endcode + + The list can contain several properties that control how the item should be pushed: + \list + \li \c item: this property is required, and holds the item to be pushed. + \li \c properties: a list of QML properties to be assigned to the item upon push. These + properties will be copied into the item at load time, or when the item will become + the current item (normally upon push). + \li \c immediate: set this property to \c true to skip transition effects. When pushing + an array, this property only needs to be set on the first element to make the + whole operation immediate. + \li \c replace: set this property to replace the current item on the stack. When pushing + an array, you only need to set this property on the first element to replace + as many elements on the stack as inside the array. + \li \c destroyOnPop: set this boolean to \c true if StackView needs to destroy the item when + it is popped off the stack. By default (if \a destroyOnPop is not specified), StackView + will destroy items pushed as components or URLs. Items not destroyed will be re-parented + back to the original parents they had before being pushed onto the stack and hidden. + If you need to set this property, do it with care, so that items are not leaked. + \endlist + + If the only argument needed is "item", the following short-hand notation can be applied: + + \code + stackView.push(yourItem) + \endcode + + You can push several items in one go by using an array of property lists. This is + more efficient than pushing items one by one, as StackView can then load only the + last item in the list. The rest will be loaded as they are about to become + the current item (which happens when the stack is popped). The following example shows how + to push an array of items: + + \code + stackView.push([{item: yourItem1}, {item: yourItem2}]) + \endcode + + If an inline item is pushed, the item is temporarily re-parented into the StackView. When the item + is later popped off, it gets re-parented back to its original owner again. + If, however, an item is pushed as a component or a URL, the actual item will be created as an + item from that component. This happens automatically when the item is about to become the current + item in the stack. Ownership of the item will then normally be taken by the StackView, which will + automatically destroy the item when it is later popped off. The component that declared the item, by + contrast, remains in the ownership of the application and is not destroyed by the stack. + This can be overridden by explicitly setting \c{destroyOnPop} in the list of arguments given to push. + + If the \c properties to be pushed are specified, they will be copied into the item at loading time + (in case of a component or URL), or when the item becomes the current item (in case of an inline + item). The following example shows how this can be done: + + \code + stackView.push({item: someItem, properties: {fgcolor: "red", bgcolor: "blue"}}) + \endcode + + + \note If an item is declared inside another item, and that parent gets destroyed, + (even if a component was used), that child item will also be destroyed. + This follows normal Qt parent-child destruction rules, but sometimes comes as a surprise + for developers. + + \section1 Lifecycle + An item's lifecycle in the StackView can have the following transitions: + \list 1 + \li instantiation + \li inactive + \li activating + \li active + \li deactivating + \li inactive + \li destruction + \endlist + + It can move any number of times between inactive and active. When an item is activated, + it's visible on the screen and is considered to be the current item. An item + in a StackView that is not visible is not activated, even if the item is currently the + top-most item in the stack. When the stack becomes visible, the item that is top-most gets + activated. Likewise if the stack is then hidden, the topmost item would be deactivated. + Popping the item off the top of the stack at this point would not result in further + deactivation since the item is not active. + + There is an attached \l{Stack::status}{Stack.status} property that tracks the lifecycle. This + property is an enumeration with the following values: \c Stack.Inactive, \c Stack.Activating, + \c Stack.Active and \c Stack.Deactivating. Combined with the normal \c Component.onComplete and + \c Component.onDestruction signals, the entire lifecycle is thus: + + \list + \li Created: Component.onCompleted() + \li Activating: Stack.onStatusChanged (Stack.status is Stack.Activating) + \li Acivated: Stack.onStatusChanged (Stack.status is Stack.Active) + \li Deactivating: Stack.onStatusChanged (Stack.status is Stack.Deactivating) + \li Deactivated: Stack.onStatusChanged (Stack.status is Stack.Inactive) + \li Destruction: Component.onDestruction() + \endlist + + \section1 Finding items + Sometimes it is necessary to search for an item, for example, in order to unwind the stack to + an item to which the application does not have a reference. This is facilitated using a + function find() in StackView. The find() function takes a callback function as its + only argument. The callback gets invoked for each item in the stack (starting at the top). + If the callback returns true, then it signals that a match has been found and the find() + function returns that item. If the callback fails to return true (no match is found), + then find() returns \c null. + + The code below searches for an item in the stack that has a name "order_id" and then unwinds to + that item. Note that since find() returns \c {null} if no item is found, and since pop unwinds to + the bottom of the stack if null is given as the target item, the code works well even in + case no matching item is found. + + \code + stackView.pop(stackView.find(function(item) { + return item.name == "order_id"; + })); + \endcode + + You can also get to an item in the stack using \l {get()}{get(index)}. You should use + this function if your item depends on another item in the stack, as the function will + ensure that the item at the given index gets loaded before it is returned. + + \code + previousItem = stackView.get(myItem.Stack.index - 1)); + \endcode + + \section1 Transitions + + A transition is performed whenever a item is pushed or popped, and consists of + two items: enterItem and exitItem. The StackView itself will never move items + around, but instead delegates the job to an external animation set provided + by the style or the application developer. How items should visually enter and leave the stack + (and the geometry they should end up with) is therefore completely controlled from the outside. + + When the transition starts, the StackView will search for a transition that + matches the operation executed. There are three transitions to choose + from: \l {StackViewDelegate::}{pushTransition}, \l {StackViewDelegate::}{popTransition}, + and \l {StackViewDelegate::}{replaceTransition}. Each implements how + \c enterItem should animate in, and \c exitItem out. The transitions are + collected inside a StackViewDelegate object assigned to + \l {StackView::delegate}{delegate}. By default, popTransition and + replaceTransition will be the same as pushTransition, unless you set them + to something else. + + A simple fade transition could be implemented as: + + \qml + StackView { + delegate: StackViewDelegate { + function transitionFinished(properties) + { + properties.exitItem.opacity = 1 + } + + pushTransition: StackViewTransition { + PropertyAnimation { + target: enterItem + property: "opacity" + from: 0 + to: 1 + } + PropertyAnimation { + target: exitItem + property: "opacity" + from: 1 + to: 0 + } + } + } + } + \endqml + + PushTransition needs to inherit from StackViewTransition, which is a ParallelAnimation that + contains the properties \c enterItem and \c exitItem. These items should be assigned to the + \c target property of animations within the transition. Since the same items instance can + be pushed several times to a StackView, you should always override + \l {StackViewDelegate::transitionFinished()}{StackViewDelegate.transitionFinished()}. + Implement this function to reset any properties animated on the exitItem so that later + transitions can expect the items to be in a default state. + + A more complex example could look like the following. Here, the items are lying on the side before + being rotated to an upright position: + + \qml + StackView { + delegate: StackViewDelegate { + function transitionFinished(properties) + { + properties.exitItem.x = 0 + properties.exitItem.rotation = 0 + } + + pushTransition: StackViewTransition { + SequentialAnimation { + ScriptAction { + script: enterItem.rotation = 90 + } + PropertyAnimation { + target: enterItem + property: "x" + from: enterItem.width + to: 0 + } + PropertyAnimation { + target: enterItem + property: "rotation" + from: 90 + to: 0 + } + } + PropertyAnimation { + target: exitItem + property: "x" + from: 0 + to: -exitItem.width + } + } + } + } + \endqml + + \section2 Advanced usage + + When the StackView needs a new transition, it first calls + \l {StackViewDelegate::getTransition()}{StackViewDelegate.getTransition()}. + The base implementation of this function just looks for a property named \c properties.name inside + itself (root), which is how it finds \c {property Component pushTransition} in the examples above. + + \code + function getTransition(properties) + { + return root[properties.name] + } + \endcode + + You can override this function for your delegate if you need extra logic to decide which + transition to return. You could for example introspect the items, and return different animations + depending on the their internal state. StackView will expect you to return a Component that + contains a StackViewTransition, or a StackViewTransition directly. The former is easier, as StackView will + then create the transition and later destroy it when it's done, while avoiding any side effects + caused by the transition being alive long after it has run. Returning a StackViewTransition directly + can be useful if you need to write some sort of transition caching for performance reasons. + As an optimization, you can also return \c null to signal that you just want to show/hide the items + immediately without creating or running any transitions. You can also override this function if + you need to alter the items in any way before the transition starts. + + \c properties contains the properties that will be assigned to the StackViewTransition before + it runs. In fact, you can add more properties to this object during the call + if you need to initialize additional properties of your custom StackViewTransition when the returned + component is instantiated. + + The following example shows how you can decide which animation to use at runtime: + + \qml + StackViewDelegate { + function getTransition(properties) + { + return (properties.enterItem.Stack.index % 2) ? horizontalTransition : verticalTransition + } + + function transitionFinished(properties) + { + properties.exitItem.x = 0 + properties.exitItem.y = 0 + } + + property Component horizontalTransition: StackViewTransition { + PropertyAnimation { + target: enterItem + property: "x" + from: target.width + to: 0 + duration: 300 + } + PropertyAnimation { + target: exitItem + property: "x" + from: 0 + to: target.width + duration: 300 + } + } + + property Component verticalTransition: StackViewTransition { + PropertyAnimation { + target: enterItem + property: "y" + from: target.height + to: 0 + duration: 300 + } + PropertyAnimation { + target: exitItem + property: "y" + from: 0 + to: target.height + duration: 300 + } + } + } + \endqml + + \section1 Supported Attached Properties + + Items in a StackView support these attached properties: + \list + \li \l{Stack::index}{Stack.index} - Contains the index of the item inside the StackView + \li \l{Stack::view}{Stack.view} - Contains the StackView the item is in + \li \l{Stack::status}{Stack.status} - Contains the status of the item + \endlist +*/ + +FocusScope { + id: root + + /*! \qmlproperty int StackView::depth + \readonly + The number of items currently pushed onto the stack. + */ + readonly property alias depth: root.__depth + + /*! \qmlproperty Item StackView::currentItem + \readonly + The currently top-most item in the stack. + */ + readonly property alias currentItem: root.__currentItem + + /*! The first item that should be shown when the StackView is created. + \a initialItem can take same value as the first argument to \l{StackView::push()} + {StackView.push()}. Note that this is just a convenience for writing + \c{Component.onCompleted: stackView.push(myInitialItem)} + + Examples: + + \list + \li initialItem: Qt.resolvedUrl("MyItem.qml") + \li initialItem: myItem + \li initialItem: {"item" : Qt.resolvedUrl("MyRectangle.qml"), "properties" : {"color" : "red"}} + \endlist + \sa push + */ + property var initialItem: null + + /*! \readonly + \a busy is \c true if a transition is running, and \c false otherwise. */ + readonly property bool busy: __currentTransition !== null + + /*! The transitions to use when pushing or popping items. + For better understanding on how to apply custom transitions, read \l{Transitions}. + \sa {Transitions} */ + property StackViewDelegate delegate: StackViewSlideDelegate {} + + /*! \qmlmethod Item StackView::push(Item item) + Pushes an \a item onto the stack. + + The function can also take a property list as argument - \c {Item StackView::push(jsobject dict)}, which + should contain one or more of the following properties: + \list + \li \a item: this property is required, and holds the item you want to push. + \li \e properties: a list of QML properties that should be assigned + to the item upon push. These properties will be copied into the item when it is + loaded (in case of a component or URL), or when it becomes the current item for the + first time (normally upon push). + \li \e immediate: set this property to \c true to skip transition effects. When pushing + an array, you only need to set this property on the first element to make the + whole operation immediate. + \li \e replace: set this property to replace the current item on the stack. When pushing + an array, you only need to set this property on the first element to replace + as many elements on the stack as inside the array. + \li \e destroyOnPop: set this property to specify if the item needs to be destroyed + when its popped off the stack. By default (if \e destroyOnPop is not specified), + StackView will destroy items pushed as components or URLs. Items + not destroyed will be re-parented to the original parents they had before being + pushed onto the stack, and hidden. If you need to set this property, do it with + care, so that items are not leaked. + \endlist + + You can also push an array of items (property lists) if you need to push several items + in one go. A transition will then only occur between the current item and the last + item in the list. Loading the other items will be deferred until needed. + + Examples: + \list + \li stackView.push({item:anItem}) + \li stackView.push({item:aURL, immediate: true, replace: true}) + \li stackView.push({item:aRectangle, properties:{color:"red"}}) + \li stackView.push({item:aComponent, properties:{color:"red"}}) + \li stackView.push({item:aComponent.createObject(), destroyOnPop:true}) + \li stackView.push([{item:anitem, immediate:true}, {item:aURL}]) + \endlist + + \note If the only argument needed is "item", you can apply the following short- + hand notation: \c{stackView.push(anItem)}. + + Returns the item that became current. + + \sa initialItem + \sa {Pushing items} + */ + function push(item) { + // Note: we support two different APIs in this function; The old meego API, and + // the new "property list" API. Hence the reason for hiding the fact that you + // can pass more arguments than shown in the signature: + if (__recursionGuard(true)) + return + var properties = arguments[1] + var immediate = arguments[2] + var replace = arguments[3] + var arrayPushed = (item instanceof Array) + var firstItem = arrayPushed ? item[0] : item + immediate = (immediate || JSArray.stackView.length === 0) + + if (firstItem && firstItem.item && firstItem.hasOwnProperty("x") === false) { + // Property list API used: + immediate = immediate || firstItem.immediate + replace = replace || firstItem.replace + } + + // Create, and push, a new javascript object, called "element", onto the stack. + // This element contains all the information necessary to construct the item, and + // will, after loaded, also contain the loaded item: + if (arrayPushed) { + if (item.length === 0) + return + var outElement = replace ? JSArray.pop() : JSArray.current() + for (var i=0; i<item.length; ++i) + JSArray.push({itemComponent:item[i], loaded: false, index: __depth, properties: properties}); + } else { + outElement = replace ? JSArray.pop() : JSArray.current() + JSArray.push({itemComponent:item, loaded: false, index: __depth, properties: properties}) + } + + var currentElement = JSArray.current() + var transition = { + inElement: currentElement, + outElement: outElement, + immediate: immediate, + replace: replace, + push: true + } + __performTransition(transition) + __recursionGuard(false) + return __currentItem + } + + /*! \qmlmethod Item StackView::pop(Item item = undefined) + Pops one or more items off the stack. + + The function can also take a property list as argument - \c {Item StackView::pop(jsobject dict)}, + which can contain one or more of the following properties: + \list + \li \c item: if specified, all items down to (but not including) \a item will be + popped off. If \a item is \c null, all items down to (but not including) the + first item will be popped. If not specified, only the current item will be + popped. + \li \c immediate: set this property to \c true to skip transition effects. + \endlist + + Examples: + \list + \li stackView.pop() + \li stackView.pop({item:someItem, immediate: true}) + \li stackView.pop({immediate: true}) + \li stackView.pop(null) + \endlist + + \note If the only argument needed is "item", you can apply the following short- + hand notation: \c{stackView.pop(anItem)}. + + Returns the item that was popped off + \sa clear() + */ + function pop(item) { + if (__depth <= 1) + return null + if (item && item.hasOwnProperty("x") === false) { + // Property list API used: + var immediate = (item.immediate === true) + item = item.item + } else { + immediate = (arguments[1] === true) + } + + if (item === __currentItem) + return + + if (__recursionGuard(true)) + return + + var outElement = JSArray.pop() + var inElement = JSArray.current() + + if (__depth > 1 && item !== undefined && item !== inElement.item) { + // Pop from the top until we find 'item', and return the corresponding + // element. Skip all non-loaded items (except the first), since no one + // has any references to such items anyway: + while (__depth > 1 && !JSArray.current().loaded) + JSArray.pop() + inElement = JSArray.current() + while (__depth > 1 && item !== inElement.item) { + JSArray.pop() + __cleanup(inElement) + while (__depth > 1 && !JSArray.current().loaded) + JSArray.pop() + inElement = JSArray.current() + } + } + + var transition = { + inElement: inElement, + outElement: outElement, + immediate: immediate, + replace: false, + push: false + } + __performTransition(transition) + __recursionGuard(false) + return outElement.item; + } + + /*! \qmlmethod void StackView::clear() + Remove all items from the stack. No animations will be applied. */ + function clear() { + if (__recursionGuard(true)) + return + if (__currentTransition) + __currentTransition.animation.complete() + __currentItem = null + var count = __depth + for (var i=0; i<count; ++i) { + var element = JSArray.pop() + if (element.item) + __cleanup(element); + } + __recursionGuard(false) + } + + /*! \qmlmethod Item StackView::find(function, bool onlySearchLoadedItems = false) + Search for a specific item inside the stack. \a function will + be called for each item in the stack (with the item as argument) + until the function returns true. Return value will be the item found. For + example: + find(function(item, index) { return item.isTheOne }) + Set \a onlySearchLoadedItems to \c true to not load items that are + not loaded into memory */ + function find(func, onlySearchLoadedItems) { + for (var i=__depth-1; i>=0; --i) { + var element = JSArray.stackView[i]; + if (onlySearchLoadedItems !== true) + __loadElement(element) + else if (!element.item) + continue + if (func(element.item)) + return element.item + } + return null; + } + + /*! \qmlmethod Item StackView::get(int index, bool dontLoad = false) + Returns the item at position \a index in + the stack. If \a dontLoad is true, the + item will not be forced to load (and \c null + will be returned if not yet loaded) */ + function get(index, dontLoad) + { + if (index < 0 || index >= JSArray.stackView.length) + return null + var element = JSArray.stackView[index] + if (dontLoad !== true) { + __loadElement(element) + return element.item + } else if (element.item) { + return element.item + } else { + return null + } + } + + /*! \qmlmethod void StackView::completeTransition() + Immediately completes any ongoing transition. + /sa Animation.complete + */ + function completeTransition() + { + if (__recursionGuard(true)) + return + if (__currentTransition) + __currentTransition.animation.complete() + __recursionGuard(false) + } + + /********* DEPRECATED API *********/ + + /*! \internal + \deprecated Use Push() instead */ + function replace(item, properties, immediate) { + push(item, properties, immediate, true) + } + + /********* PRIVATE API *********/ + + /*! \internal The currently top-most item on the stack. */ + property Item __currentItem: null + /*! \internal The number of items currently pushed onto the stack. */ + property int __depth: 0 + /*! \internal Stores the transition info while a transition is ongoing */ + property var __currentTransition: null + /*! \internal Stops the user from pushing items while preparing a transition */ + property bool __guard: false + + Component.onCompleted: { + if (initialItem) + push(initialItem) + } + + Component.onDestruction: { + if (__currentTransition) + __currentTransition.animation.complete() + __currentItem = null + } + + /*! \internal */ + function __recursionGuard(use) + { + if (use && __guard) { + console.warn("Warning: StackView: You cannot push/pop recursively!") + console.trace() + return true + } + __guard = use + } + + /*! \internal */ + function __loadElement(element) + { + if (element.loaded) { + if (!element.item) { + element.item = invalidItemReplacement.createObject(root) + element.item.text = "\nError: The item has been deleted outside StackView!" + } + return + } + if (!element.itemComponent) { + element.item = invalidItemReplacement.createObject(root) + element.item.text = "\nError: Invalid item (item was 'null'). " + + "This might indicate that the item was deleted outside StackView!" + return + } + + var comp = __resolveComponent(element.itemComponent, element) + + // Assign properties to item: + if (!element.properties) + element.properties = {} + + if (comp.hasOwnProperty("createObject")) { + if (comp.status === Component.Error) { + element.item = invalidItemReplacement.createObject(root) + element.item.text = "\nError: Could not load: " + comp.errorString() + } else { + element.item = comp.createObject(root, element.properties) + // Destroy items we create unless the user specified something else: + if (!element.hasOwnProperty("destroyOnPop")) + element.destroyOnPop = true + } + } else { + // comp is already an Item, so just re-parent it into the StackView: + element.item = comp + element.originalParent = parent + element.item.parent = root + for (var prop in element.properties) { + if (element.item.hasOwnProperty(prop)) + element.item[prop] = element.properties[prop]; + } + // Do not destroy items we didn't create, unless the user specified something else: + if (!element.hasOwnProperty("destroyOnPop")) + element.destroyOnPop = false + } + + element.item.Stack.__index = element.index + element.item.Stack.__view = root + // Let item fill all available space by default: + element.item.width = Qt.binding(function() { return root.width }) + element.item.height = Qt.binding(function() { return root.height }) + element.loaded = true + } + + /*! \internal */ + function __resolveComponent(unknownObjectType, element) + { + // We need this extra resolve function since we don't really + // know what kind of object the user pushed. So we try to + // figure it out by inspecting the object: + if (unknownObjectType.hasOwnProperty("createObject")) { + return unknownObjectType + } else if (typeof unknownObjectType == "string") { + return Qt.createComponent(unknownObjectType) + } else if (unknownObjectType.hasOwnProperty("x")) { + return unknownObjectType + } else if (unknownObjectType.hasOwnProperty("item")) { + // INVARIANT: user pushed a JS-object + element.properties = unknownObjectType.properties + if (!unknownObjectType.item) + unknownObjectType.item = invalidItemReplacement + if (unknownObjectType.hasOwnProperty("destroyOnPop")) + element.destroyOnPop = unknownObjectType.destroyOnPop + return __resolveComponent(unknownObjectType.item, element) + } else { + // We cannot determine the type, so assume its a URL: + return Qt.createComponent(unknownObjectType) + } + } + + /*! \internal */ + function __cleanup(element) { + // INVARIANT: element has been removed from JSArray. Destroy its + // item, or re-parent it back to the parent it had before it was pushed: + var item = element.item + if (element.destroyOnPop) { + item.destroy() + } else { + // Mark the item as no longer part of the StackView. It + // might reenter on pop if pushed several times: + item.visible = false + __setStatus(item, Stack.Inactive) + item.Stack.__view = null + item.Stack.__index = -1 + if (element.originalParent) + item.parent = element.originalParent + } + } + + /*! \internal */ + function __setStatus(item, status) { + item.Stack.__status = status + } + + /*! \internal */ + function __performTransition(transition) + { + // Animate item in "outElement" out, and item in "inElement" in. Set a guard to protect + // the user from pushing new items on signals that will fire while preparing for the transition + // (e.g Stack.onCompleted, Stack.onStatusChanged, Stack.onIndexChanged etc). Otherwise, we will enter + // this function several times, which causes the items to be updated half-way. + if (__currentTransition) + __currentTransition.animation.complete() + __loadElement(transition.inElement) + + transition.name = transition.replace ? "replaceTransition" : (transition.push ? "pushTransition" : "popTransition") + var enterItem = transition.inElement.item + transition.enterItem = enterItem + + // Since an item can be pushed several times, we need to update its properties: + enterItem.parent = root + enterItem.Stack.__view = root + enterItem.Stack.__index = transition.inElement.index + __currentItem = enterItem + + if (!transition.outElement) { + // A transition consists of two items, but we got just one. So just show the item: + enterItem.visible = true + __setStatus(enterItem, Stack.Activating) + __setStatus(enterItem, Stack.Active) + return + } + + var exitItem = transition.outElement.item + transition.exitItem = exitItem + if (enterItem === exitItem) + return + + if (root.delegate) { + transition.properties = { + "name":transition.name, + "enterItem":transition.enterItem, + "exitItem":transition.exitItem, + "immediate":transition.immediate } + var anim = root.delegate.getTransition(transition.properties) + if (anim.createObject) { + anim = anim.createObject(null, transition.properties) + anim.runningChanged.connect(function(){ if (anim.running === false) anim.destroy() }) + } + transition.animation = anim + } + + if (!transition.animation) { + console.warn("Warning: StackView: no", transition.name, "found!") + return + } + if (enterItem.anchors.fill || exitItem.anchors.fill) + console.warn("Warning: StackView: cannot transition an item that is anchored!") + + __currentTransition = transition + __setStatus(exitItem, Stack.Deactivating) + enterItem.visible = true + __setStatus(enterItem, Stack.Activating) + transition.animation.runningChanged.connect(animationFinished) + transition.animation.start() + // NB! For empty animations, "animationFinished" is already + // executed at this point, leaving __animation === null: + if (transition.immediate === true && transition.animation) + transition.animation.complete() + } + + /*! \internal */ + function animationFinished() + { + if (!__currentTransition || __currentTransition.animation.running) + return + + __currentTransition.animation.runningChanged.disconnect(animationFinished) + __currentTransition.exitItem.visible = false + __setStatus(__currentTransition.exitItem, Stack.Inactive); + __setStatus(__currentTransition.enterItem, Stack.Active); + __currentTransition.properties.animation = __currentTransition.animation + root.delegate.transitionFinished(__currentTransition.properties) + + if (!__currentTransition.push || __currentTransition.replace) + __cleanup(__currentTransition.outElement) + + __currentTransition = null + } + + /*! \internal */ + property Component invalidItemReplacement: Component { + Text { + width: parent.width + height: parent.height + wrapMode: Text.WrapAtWordBoundaryOrAnywhere + } + } +} diff --git a/deployment_test/QtQuick/Controls/StackView.qmlc b/deployment_test/QtQuick/Controls/StackView.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..24e5c23112b32bd0cf62b10703a44cd5ad0ee158 Binary files /dev/null and b/deployment_test/QtQuick/Controls/StackView.qmlc differ diff --git a/deployment_test/QtQuick/Controls/StackViewDelegate.qml b/deployment_test/QtQuick/Controls/StackViewDelegate.qml new file mode 100644 index 0000000000000000000000000000000000000000..f85eb0ae050967d75ba51504c305dea7c9df9372 --- /dev/null +++ b/deployment_test/QtQuick/Controls/StackViewDelegate.qml @@ -0,0 +1,100 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 + +/*! + \qmltype StackViewDelegate + \inqmlmodule QtQuick.Controls + \ingroup controls + \since 5.1 + + \brief A delegate used by StackView for loading transitions. + + See the documentation for the \l {StackView} component. + +*/ +QtObject { + id: root + + /*! + \qmlmethod Transition StackViewDelegate::getTransition(properties) + + The base implementation of this function just looks for a property named + \a {properties}.name inside itself and returns it. + \sa {Transitions} + */ + function getTransition(properties) + { + return root[properties.name] + } + + /*! + \qmlmethod void StackViewDelegate::transitionFinished(properties) + + Handles the completion of a transition for \a properties. The base + implementation of this function is empty. + + \sa {Transitions} + */ + function transitionFinished(properties) + { + } + + /*! + \qmlproperty Component StackViewDelegate::pushTransition + + The transition used on push operation. + */ + property Component pushTransition: StackViewTransition {} + /*! + \qmlproperty Component StackViewDelegate::popTransition + + The transition used on pop operation. + Unless set, the popTransition is the same as pushTransition + */ + property Component popTransition: root["pushTransition"] + /*! + \qmlproperty Component StackViewDelegate::replaceTransition + + The transition used on replace operation. + Unless set, the replaceTransition is the same as pushTransition + */ + property Component replaceTransition: root["pushTransition"] +} diff --git a/deployment_test/QtQuick/Controls/StackViewDelegate.qmlc b/deployment_test/QtQuick/Controls/StackViewDelegate.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..23e3c2bb268437b0fe757f7de3b11a4efec2bf0b Binary files /dev/null and b/deployment_test/QtQuick/Controls/StackViewDelegate.qmlc differ diff --git a/deployment_test/QtQuick/Controls/StackViewTransition.qml b/deployment_test/QtQuick/Controls/StackViewTransition.qml new file mode 100644 index 0000000000000000000000000000000000000000..9f4719e37ed14e3ac38cd70b12f7ea51c5327c02 --- /dev/null +++ b/deployment_test/QtQuick/Controls/StackViewTransition.qml @@ -0,0 +1,59 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 + +ParallelAnimation { + id: root + /*! The name of the animation that is running. Can be one of the following: + \list + \li 'PushTransition' + \li 'PopTransition' + \li 'ReplaceTransition' + \endlist + */ + property string name + /*! The page that is transitioning in. */ + property Item enterItem + /*! The page that is transitioning out */ + property Item exitItem + /*! Set to \c true if the transition is told to + fast-forward directly to its end-state */ + property bool immediate +} diff --git a/deployment_test/QtQuick/Controls/StackViewTransition.qmlc b/deployment_test/QtQuick/Controls/StackViewTransition.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..b2f97001a295bb83d0938f2c9add7aee0c19a7da Binary files /dev/null and b/deployment_test/QtQuick/Controls/StackViewTransition.qmlc differ diff --git a/deployment_test/QtQuick/Controls/StatusBar.qml b/deployment_test/QtQuick/Controls/StatusBar.qml new file mode 100644 index 0000000000000000000000000000000000000000..c1168d5406709cfa0d5211f83c2c32afb8748563 --- /dev/null +++ b/deployment_test/QtQuick/Controls/StatusBar.qml @@ -0,0 +1,154 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype StatusBar + \inqmlmodule QtQuick.Controls + \since 5.1 + \ingroup applicationwindow + \ingroup controls + \brief Contains status information in your app. + + The common way of using StatusBar is in relation to \l ApplicationWindow. + + Note that the StatusBar does not provide a layout of its own, but requires + you to position its contents, for instance by creating a \l RowLayout. + + If only a single item is used within the StatusBar, it will resize to fit the implicitHeight + of its contained item. This makes it particularly suitable for use together with layouts. + Otherwise the height is platform dependent. + + \code + import QtQuick.Controls 1.2 + import QtQuick.Layouts 1.0 + + ApplicationWindow { + statusBar: StatusBar { + RowLayout { + anchors.fill: parent + Label { text: "Read Only" } + } + } + } + \endcode +*/ + +FocusScope { + id: statusbar + + activeFocusOnTab: false + Accessible.role: Accessible.StatusBar + + width: parent ? parent.width : implicitWidth + implicitWidth: container.leftMargin + container.rightMargin + + Math.max(container.layoutWidth, __panel ? __panel.implicitWidth : 0) + implicitHeight: container.topMargin + container.bottomMargin + + Math.max(container.layoutHeight, __panel ? __panel.implicitHeight : 0) + + /*! \qmlproperty Component StatusBar::style + + The style Component for this control. + \sa {StatusBarStyle} + + */ + property Component style: Settings.styleComponent(Settings.style, "StatusBarStyle.qml", statusbar) + + /*! \internal */ + property alias __style: styleLoader.item + + /*! \internal */ + property Item __panel: panelLoader.item + + /*! \internal */ + default property alias __content: container.data + + /*! + \qmlproperty Item StatusBar::contentItem + + This property holds the content Item of the status bar. + + Items declared as children of a StatusBar are automatically parented to the StatusBar's contentItem. + Items created dynamically need to be explicitly parented to the contentItem: + + \note The implicit size of the StatusBar is calculated based on the size of its content. If you want to anchor + items inside the status bar, you must specify an explicit width and height on the StatusBar itself. + */ + readonly property alias contentItem: container + + data: [ + Loader { + id: panelLoader + anchors.fill: parent + sourceComponent: styleLoader.item ? styleLoader.item.panel : null + onLoaded: item.z = -1 + Loader { + id: styleLoader + property alias __control: statusbar + sourceComponent: style + } + }, + Item { + id: container + z: 1 + focus: true + anchors.fill: parent + + anchors.topMargin: topMargin + anchors.leftMargin: leftMargin + anchors.rightMargin: rightMargin + anchors.bottomMargin: bottomMargin + + property int topMargin: __style ? __style.padding.top : 0 + property int bottomMargin: __style ? __style.padding.bottom : 0 + property int leftMargin: __style ? __style.padding.left : 0 + property int rightMargin: __style ? __style.padding.right : 0 + + property Item layoutItem: container.children.length === 1 ? container.children[0] : null + property real layoutWidth: layoutItem ? (layoutItem.implicitWidth || layoutItem.width) + + (layoutItem.anchors.fill ? layoutItem.anchors.leftMargin + + layoutItem.anchors.rightMargin : 0) : 0 + property real layoutHeight: layoutItem ? (layoutItem.implicitHeight || layoutItem.height) + + (layoutItem.anchors.fill ? layoutItem.anchors.topMargin + + layoutItem.anchors.bottomMargin : 0) : 0 + }] +} diff --git a/deployment_test/QtQuick/Controls/StatusBar.qmlc b/deployment_test/QtQuick/Controls/StatusBar.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..b4a6f20d9e3b44ce5da5a5a64c76056077f3af23 Binary files /dev/null and b/deployment_test/QtQuick/Controls/StatusBar.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/ApplicationWindowStyle.qml b/deployment_test/QtQuick/Controls/Styles/Base/ApplicationWindowStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..398567bbd9ba416ea09497405b83f7a4de2e713d --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Base/ApplicationWindowStyle.qml @@ -0,0 +1,136 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype ApplicationWindowStyle + \inqmlmodule QtQuick.Controls.Styles + \since 5.4 + \ingroup controlsstyling + \brief Provides custom styling for ApplicationWindow. + + You can create a custom window background by replacing the "background" + delegate of ApplicationWindowStyle with a custom design. + + Example: + \qml + ApplicationWindow { + style: ApplicationWindowStyle { + background: BorderImage { + source: "background.png" + border { left: 20; top: 20; right: 20; bottom: 20 } + } + } + } + \endqml +*/ +QtObject { + /*! The window attached to this style. */ + readonly property ApplicationWindow control: __control + + /*! A custom background for the window. + + \note The window might have a custom background color set. The custom + background color is automatically filled by the window. The background + delegate should respect the custom background color by either hiding + itself altogether when a custom background color is set, or by letting + the custom background color shine through. + + The following read-only property is available within the scope + of the background delegate: + \table + \row \li \b {styleData.hasColor} : bool \li Whether the window has a custom background color set. + \endtable + */ + property Component background: Rectangle { + visible: !styleData.hasColor + color: SystemPaletteSingleton.window(true) + } + + /*! \internal */ + property Component panel: Item { + readonly property alias contentArea: contentArea + readonly property alias menuBarArea: menuBarArea + readonly property alias toolBarArea: toolBarArea + readonly property alias statusBarArea: statusBarArea + + Loader { + anchors.fill: parent + sourceComponent: background + } + + Item { + id: contentArea + anchors.top: toolBarArea.bottom + anchors.left: parent.left + anchors.right: parent.right + anchors.bottom: statusBarArea.top + } + + Item { + id: toolBarArea + anchors.top: parent.menuBarArea.bottom + anchors.left: parent.left + anchors.right: parent.right + implicitHeight: childrenRect.height + height: visibleChildren.length > 0 ? implicitHeight: 0 + } + + Item { + id: menuBarArea + anchors.top: parent.top + anchors.left: parent.left + anchors.right: parent.right + implicitHeight: childrenRect.height + height: visibleChildren.length > 0 ? implicitHeight: 0 + } + + Item { + id: statusBarArea + anchors.bottom: parent.bottom + anchors.left: parent.left + anchors.right: parent.right + implicitHeight: childrenRect.height + height: visibleChildren.length > 0 ? implicitHeight: 0 + } + } +} diff --git a/deployment_test/QtQuick/Controls/Styles/Base/ApplicationWindowStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Base/ApplicationWindowStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..36455522fe9a731b236f722a95e30ed9471b73a2 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/ApplicationWindowStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/BasicTableViewStyle.qml b/deployment_test/QtQuick/Controls/Styles/Base/BasicTableViewStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..334ee665239a7f70232f048bcbb35ec7d7b0e708 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Base/BasicTableViewStyle.qml @@ -0,0 +1,164 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype BasicTableViewStyle + \internal + \inqmlmodule QtQuick.Controls.Styles + \inherits ScrollViewStyle + \qmlabstract +*/ + +ScrollViewStyle { + id: root + + /*! \qmlproperty BasicTableView BasicTableViewStyle::control + \internal */ + readonly property BasicTableView control: __control + + /*! \qmlproperty color BasicTableViewStyle::textColor + The text color. */ + property color textColor: SystemPaletteSingleton.text(control.enabled) + + /*! \qmlproperty color BasicTableViewStyle::backgroundColor + The background color. */ + property color backgroundColor: control.backgroundVisible ? SystemPaletteSingleton.base(control.enabled) : "transparent" + + /*! \qmlproperty color BasicTableViewStyle::alternateBackgroundColor + The alternate background color. */ + property color alternateBackgroundColor: "#f5f5f5" + + /*! \qmlproperty color BasicTableViewStyle::highlightedTextColor + The text highlight color, used within selections. */ + property color highlightedTextColor: "white" + + /*! \qmlproperty bool BasicTableViewStyle::activateItemOnSingleClick + Activates items on single click. + + Its default value is \c false. + */ + property bool activateItemOnSingleClick: false + + padding.top: control.headerVisible ? 0 : 1 + + /*! \qmlproperty Component BasicTableViewStyle::headerDelegate + \internal + + Different documentation for TableViewStyle and TreeViewStyle. + See qtquickcontrolsstyles-tableviewstyle.qdoc and qtquickcontrolsstyles-treeviewstyle.qdoc + */ + property Component headerDelegate: BorderImage { + height: Math.round(textItem.implicitHeight * 1.2) + source: "images/header.png" + border.left: 4 + border.bottom: 2 + border.top: 2 + Text { + id: textItem + anchors.fill: parent + verticalAlignment: Text.AlignVCenter + horizontalAlignment: styleData.textAlignment + anchors.leftMargin: horizontalAlignment === Text.AlignLeft ? 12 : 1 + anchors.rightMargin: horizontalAlignment === Text.AlignRight ? 8 : 1 + text: styleData.value + elide: Text.ElideRight + color: textColor + renderType: Settings.isMobile ? Text.QtRendering : Text.NativeRendering + } + Rectangle { + width: 1 + height: parent.height - 2 + y: 1 + color: "#ccc" + } + } + + /*! \qmlproperty Component BasicTableViewStyle::rowDelegate + \internal + + Different documentation for TableViewStyle and TreeViewStyle. + See qtquickcontrolsstyles-tableviewstyle.qdoc and qtquickcontrolsstyles-treeviewstyle.qdoc + */ + property Component rowDelegate: Rectangle { + height: Math.round(TextSingleton.implicitHeight * 1.2) + property color selectedColor: control.activeFocus ? "#07c" : "#999" + color: styleData.selected ? selectedColor : + !styleData.alternate ? alternateBackgroundColor : backgroundColor + } + + /*! \qmlproperty Component BasicTableViewStyle::itemDelegate + \internal + + Different documentation for TableViewStyle and TreeViewStyle. + See qtquickcontrolsstyles-tableviewstyle.qdoc and qtquickcontrolsstyles-treeviewstyle.qdoc + */ + property Component itemDelegate: Item { + height: Math.max(16, label.implicitHeight) + property int implicitWidth: label.implicitWidth + 20 + + Text { + id: label + objectName: "label" + width: parent.width - x - (horizontalAlignment === Text.AlignRight ? 8 : 1) + x: (styleData.hasOwnProperty("depth") && styleData.column === 0) ? 0 : + horizontalAlignment === Text.AlignRight ? 1 : 8 + horizontalAlignment: styleData.textAlignment + anchors.verticalCenter: parent.verticalCenter + anchors.verticalCenterOffset: 1 + elide: styleData.elideMode + text: styleData.value !== undefined ? styleData.value.toString() : "" + color: styleData.textColor + renderType: Settings.isMobile ? Text.QtRendering : Text.NativeRendering + } + } + + /*! \internal + Part of TreeViewStyle + */ + property Component __branchDelegate: null + + /*! \internal + Part of TreeViewStyle + */ + property int __indentation: 12 +} diff --git a/deployment_test/QtQuick/Controls/Styles/Base/BasicTableViewStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Base/BasicTableViewStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..9942a0fd8b24344d6387027f717de3baf565b4b0 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/BasicTableViewStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/BusyIndicatorStyle.qml b/deployment_test/QtQuick/Controls/Styles/Base/BusyIndicatorStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..da2a2aa5d04ac091e6e5195ec751fd4c444e46d7 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Base/BusyIndicatorStyle.qml @@ -0,0 +1,120 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype BusyIndicatorStyle + \inqmlmodule QtQuick.Controls.Styles + \since 5.2 + \ingroup controlsstyling + \brief Provides custom styling for BusyIndicatorStyle. + + You can create a busy indicator by replacing the "indicator" delegate + of the BusyIndicatorStyle with a custom design. + + Example: + \qml + BusyIndicator { + style: BusyIndicatorStyle { + indicator: Image { + visible: control.running + source: "spinner.png" + RotationAnimator on rotation { + running: control.running + loops: Animation.Infinite + duration: 2000 + from: 0 ; to: 360 + } + } + } + } + \endqml +*/ +Style { + id: indicatorstyle + + /*! The \l BusyIndicator this style is attached to. */ + readonly property BusyIndicator control: __control + + /*! This defines the appearance of the busy indicator. */ + property Component indicator: Item { + id: indicatorItem + + implicitWidth: 48 + implicitHeight: 48 + + opacity: control.running ? 1 : 0 + Behavior on opacity { OpacityAnimator { duration: 250 } } + + Image { + anchors.centerIn: parent + anchors.alignWhenCentered: true + width: Math.min(parent.width, parent.height) + height: width + source: width <= 32 ? "images/spinner_small.png" : + width >= 48 ? "images/spinner_large.png" : + "images/spinner_medium.png" + RotationAnimator on rotation { + duration: 800 + loops: Animation.Infinite + from: 0 + to: 360 + running: indicatorItem.visible && (control.running || indicatorItem.opacity > 0); + } + } + } + + /*! \internal */ + property Component panel: Item { + anchors.fill: parent + implicitWidth: indicatorLoader.implicitWidth + implicitHeight: indicatorLoader.implicitHeight + + Loader { + id: indicatorLoader + sourceComponent: indicator + anchors.centerIn: parent + width: Math.min(parent.width, parent.height) + height: width + } + } +} diff --git a/deployment_test/QtQuick/Controls/Styles/Base/BusyIndicatorStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Base/BusyIndicatorStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..5ca5f86bdbece0d41f709ab3e093c6b49d01c11b Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/BusyIndicatorStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/ButtonStyle.qml b/deployment_test/QtQuick/Controls/Styles/Base/ButtonStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..5a3fa5511421c4598f9ce492ed7484e1acc87c28 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Base/ButtonStyle.qml @@ -0,0 +1,175 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype ButtonStyle + \inqmlmodule QtQuick.Controls.Styles + \since 5.1 + \ingroup controlsstyling + \brief Provides custom styling for Button. + + You can create a custom button by replacing the "background" delegate + of the ButtonStyle with a custom design. + + Example: + \qml + Button { + text: "A button" + style: ButtonStyle { + background: Rectangle { + implicitWidth: 100 + implicitHeight: 25 + border.width: control.activeFocus ? 2 : 1 + border.color: "#888" + radius: 4 + gradient: Gradient { + GradientStop { position: 0 ; color: control.pressed ? "#ccc" : "#eee" } + GradientStop { position: 1 ; color: control.pressed ? "#aaa" : "#ccc" } + } + } + } + } + \endqml + If you need a custom label, you can replace the label item. +*/ + +Style { + id: buttonstyle + + /*! The \l {QtQuick.Controls::}{Button} this style is attached to. */ + readonly property Button control: __control + + /*! The padding between the background and the label components. */ + padding { + top: 4 + left: 4 + right: 4 + (control.menu !== null ? Math.round(TextSingleton.implicitHeight * 0.5) : 0) + bottom: 4 + } + + /*! This defines the background of the button. */ + property Component background: Item { + property bool down: control.pressed || (control.checkable && control.checked) + implicitWidth: Math.round(TextSingleton.implicitHeight * 4.5) + implicitHeight: Math.max(25, Math.round(TextSingleton.implicitHeight * 1.2)) + Rectangle { + anchors.fill: parent + anchors.bottomMargin: down ? 0 : -1 + color: "#10000000" + radius: baserect.radius + } + Rectangle { + id: baserect + gradient: Gradient { + GradientStop {color: down ? "#aaa" : "#fefefe" ; position: 0} + GradientStop {color: down ? "#ccc" : "#e3e3e3" ; position: down ? 0.1: 1} + } + radius: TextSingleton.implicitHeight * 0.16 + anchors.fill: parent + border.color: control.activeFocus ? "#47b" : "#999" + Rectangle { + anchors.fill: parent + radius: parent.radius + color: control.activeFocus ? "#47b" : "white" + opacity: control.hovered || control.activeFocus ? 0.1 : 0 + Behavior on opacity {NumberAnimation{ duration: 100 }} + } + } + Image { + id: imageItem + visible: control.menu !== null + source: "images/arrow-down.png" + anchors.verticalCenter: parent.verticalCenter + anchors.right: parent.right + anchors.rightMargin: 4 + opacity: control.enabled ? 0.6 : 0.5 + } + } + + /*! This defines the label of the button. */ + property Component label: Item { + implicitWidth: row.implicitWidth + implicitHeight: row.implicitHeight + baselineOffset: row.y + text.y + text.baselineOffset + Row { + id: row + anchors.centerIn: parent + spacing: 2 + Image { + source: control.iconSource + anchors.verticalCenter: parent.verticalCenter + } + Text { + id: text + renderType: Settings.isMobile ? Text.QtRendering : Text.NativeRendering + anchors.verticalCenter: parent.verticalCenter + text: StyleHelpers.stylizeMnemonics(control.text) + color: SystemPaletteSingleton.buttonText(control.enabled) + } + } + } + + /*! \internal */ + property Component panel: Item { + anchors.fill: parent + implicitWidth: Math.max(labelLoader.implicitWidth + padding.left + padding.right, backgroundLoader.implicitWidth) + implicitHeight: Math.max(labelLoader.implicitHeight + padding.top + padding.bottom, backgroundLoader.implicitHeight) + baselineOffset: labelLoader.item ? padding.top + labelLoader.item.baselineOffset : 0 + + Loader { + id: backgroundLoader + anchors.fill: parent + sourceComponent: background + } + + Loader { + id: labelLoader + sourceComponent: label + anchors.fill: parent + anchors.leftMargin: padding.left + anchors.topMargin: padding.top + anchors.rightMargin: padding.right + anchors.bottomMargin: padding.bottom + } + } +} diff --git a/deployment_test/QtQuick/Controls/Styles/Base/ButtonStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Base/ButtonStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..132f55c9bdeb8e15727dce4e73c679fffa0f47e2 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/ButtonStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/CalendarStyle.qml b/deployment_test/QtQuick/Controls/Styles/Base/CalendarStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..bde2f2cce0c5327c116d1e15e44886cbd2dc2025 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Base/CalendarStyle.qml @@ -0,0 +1,703 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype CalendarStyle + \inqmlmodule QtQuick.Controls.Styles + \since 5.3 + \ingroup controlsstyling + \brief Provides custom styling for \l Calendar. + + \section2 Component Map + + \image calendarstyle-components-week-numbers.png + + The calendar has the following styleable components: + + \table + \row \li \image square-white.png + \li \l background + \li Fills the entire control. + \row \li \image square-yellow.png + \li \l navigationBar + \li + \row \li \image square-green.png + \li \l dayOfWeekDelegate + \li One instance per day of week. + \row \li \image square-red.png + \li \l weekNumberDelegate + \li One instance per week. + \row \li \image square-blue.png + \li \l dayDelegate + \li One instance per day of month. + \endtable + + \section2 Custom Style Example + \qml + Calendar { + anchors.centerIn: parent + + style: CalendarStyle { + gridVisible: false + dayDelegate: Rectangle { + gradient: Gradient { + GradientStop { + position: 0.00 + color: styleData.selected ? "#111" : (styleData.visibleMonth && styleData.valid ? "#444" : "#666"); + } + GradientStop { + position: 1.00 + color: styleData.selected ? "#444" : (styleData.visibleMonth && styleData.valid ? "#111" : "#666"); + } + GradientStop { + position: 1.00 + color: styleData.selected ? "#777" : (styleData.visibleMonth && styleData.valid ? "#111" : "#666"); + } + } + + Label { + text: styleData.date.getDate() + anchors.centerIn: parent + color: styleData.valid ? "white" : "grey" + } + + Rectangle { + width: parent.width + height: 1 + color: "#555" + anchors.bottom: parent.bottom + } + + Rectangle { + width: 1 + height: parent.height + color: "#555" + anchors.right: parent.right + } + } + } + } + \endqml +*/ + +Style { + id: calendarStyle + + /*! + The Calendar this style is attached to. + */ + readonly property Calendar control: __control + + /*! + The color of the grid lines. + */ + property color gridColor: "#d3d3d3" + + /*! + This property determines the visibility of the grid. + + The default value is \c true. + */ + property bool gridVisible: true + + /*! + \internal + + The width of each grid line. + */ + property real __gridLineWidth: 1 + + /*! \internal */ + property color __horizontalSeparatorColor: gridColor + + /*! \internal */ + property color __verticalSeparatorColor: gridColor + + function __cellRectAt(index) { + return CalendarUtils.cellRectAt(index, control.__panel.columns, control.__panel.rows, + control.__panel.availableWidth, control.__panel.availableHeight, gridVisible ? __gridLineWidth : 0); + } + + function __isValidDate(date) { + return date !== undefined + && date.getTime() >= control.minimumDate.getTime() + && date.getTime() <= control.maximumDate.getTime(); + } + + /*! + The background of the calendar. + + The implicit size of the calendar is calculated based on the implicit size of the background delegate. + */ + property Component background: Rectangle { + color: "#fff" + implicitWidth: Math.max(250, Math.round(TextSingleton.implicitHeight * 14)) + implicitHeight: Math.max(250, Math.round(TextSingleton.implicitHeight * 14)) + } + + /*! + The navigation bar of the calendar. + + Styles the bar at the top of the calendar that contains the + next month/previous month buttons and the selected date label. + + The properties provided to the delegate are: + \table + \row \li readonly property string \b styleData.title + \li The title of the calendar. + \endtable + */ + property Component navigationBar: Rectangle { + height: Math.round(TextSingleton.implicitHeight * 2.73) + color: "#f9f9f9" + + Rectangle { + color: Qt.rgba(1,1,1,0.6) + height: 1 + width: parent.width + } + + Rectangle { + anchors.bottom: parent.bottom + height: 1 + width: parent.width + color: "#ddd" + } + HoverButton { + id: previousMonth + width: parent.height + height: width + anchors.verticalCenter: parent.verticalCenter + anchors.left: parent.left + source: "images/leftanglearrow.png" + onClicked: control.showPreviousMonth() + } + Label { + id: dateText + text: styleData.title + elide: Text.ElideRight + horizontalAlignment: Text.AlignHCenter + font.pixelSize: TextSingleton.implicitHeight * 1.25 + anchors.verticalCenter: parent.verticalCenter + anchors.left: previousMonth.right + anchors.leftMargin: 2 + anchors.right: nextMonth.left + anchors.rightMargin: 2 + } + HoverButton { + id: nextMonth + width: parent.height + height: width + anchors.verticalCenter: parent.verticalCenter + anchors.right: parent.right + source: "images/rightanglearrow.png" + onClicked: control.showNextMonth() + } + } + + /*! + The delegate that styles each date in the calendar. + + The properties provided to each delegate are: + \table + \row \li readonly property date \b styleData.date + \li The date this delegate represents. + \row \li readonly property bool \b styleData.selected + \li \c true if this is the selected date. + \row \li readonly property int \b styleData.index + \li The index of this delegate. + \row \li readonly property bool \b styleData.valid + \li \c true if this date is greater than or equal to than \l {Calendar::minimumDate}{minimumDate} and + less than or equal to \l {Calendar::maximumDate}{maximumDate}. + \row \li readonly property bool \b styleData.today + \li \c true if this date is equal to today's date. + \row \li readonly property bool \b styleData.visibleMonth + \li \c true if the month in this date is the visible month. + \row \li readonly property bool \b styleData.hovered + \li \c true if the mouse is over this cell. + \note This property is \c true even when the mouse is hovered over an invalid date. + \row \li readonly property bool \b styleData.pressed + \li \c true if the mouse is pressed on this cell. + \note This property is \c true even when the mouse is pressed on an invalid date. + \endtable + */ + property Component dayDelegate: Rectangle { + anchors.fill: parent + anchors.leftMargin: (!addExtraMargin || control.weekNumbersVisible) && styleData.index % CalendarUtils.daysInAWeek === 0 ? 0 : -1 + anchors.rightMargin: !addExtraMargin && styleData.index % CalendarUtils.daysInAWeek === CalendarUtils.daysInAWeek - 1 ? 0 : -1 + anchors.bottomMargin: !addExtraMargin && styleData.index >= CalendarUtils.daysInAWeek * (CalendarUtils.weeksOnACalendarMonth - 1) ? 0 : -1 + anchors.topMargin: styleData.selected ? -1 : 0 + color: styleData.date !== undefined && styleData.selected ? selectedDateColor : "transparent" + + readonly property bool addExtraMargin: control.frameVisible && styleData.selected + readonly property color sameMonthDateTextColor: "#444" + readonly property color selectedDateColor: Qt.platform.os === "osx" ? "#3778d0" : SystemPaletteSingleton.highlight(control.enabled) + readonly property color selectedDateTextColor: "white" + readonly property color differentMonthDateTextColor: "#bbb" + readonly property color invalidDateColor: "#dddddd" + Label { + id: dayDelegateText + text: styleData.date.getDate() + anchors.centerIn: parent + horizontalAlignment: Text.AlignRight + font.pixelSize: Math.min(parent.height/3, parent.width/3) + color: { + var theColor = invalidDateColor; + if (styleData.valid) { + // Date is within the valid range. + theColor = styleData.visibleMonth ? sameMonthDateTextColor : differentMonthDateTextColor; + if (styleData.selected) + theColor = selectedDateTextColor; + } + theColor; + } + } + } + + /*! + The delegate that styles each weekday. + + The height of the weekday row is calculated based on the maximum implicit height of the delegates. + + The properties provided to each delegate are: + \table + \row \li readonly property int \b styleData.index + \li The index (0-6) of the delegate. + \row \li readonly property int \b styleData.dayOfWeek + \li The day of the week this delegate represents. Possible values: + \list + \li \c Locale.Sunday + \li \c Locale.Monday + \li \c Locale.Tuesday + \li \c Locale.Wednesday + \li \c Locale.Thursday + \li \c Locale.Friday + \li \c Locale.Saturday + \endlist + \endtable + */ + property Component dayOfWeekDelegate: Rectangle { + color: gridVisible ? "#fcfcfc" : "transparent" + implicitHeight: Math.round(TextSingleton.implicitHeight * 2.25) + Label { + text: control.locale.dayName(styleData.dayOfWeek, control.dayOfWeekFormat) + anchors.centerIn: parent + } + } + + /*! + The delegate that styles each week number. + + The width of the week number column is calculated based on the maximum implicit width of the delegates. + + The properties provided to each delegate are: + \table + \row \li readonly property int \b styleData.index + \li The index (0-5) of the delegate. + \row \li readonly property int \b styleData.weekNumber + \li The number of the week this delegate represents. + \endtable + */ + property Component weekNumberDelegate: Rectangle { + implicitWidth: Math.round(TextSingleton.implicitHeight * 2) + Label { + text: styleData.weekNumber + anchors.centerIn: parent + color: "#444" + } + } + + /*! \internal */ + property Component panel: Item { + id: panelItem + + implicitWidth: backgroundLoader.implicitWidth + implicitHeight: backgroundLoader.implicitHeight + + property alias navigationBarItem: navigationBarLoader.item + + property alias dayOfWeekHeaderRow: dayOfWeekHeaderRow + + readonly property int weeksToShow: 6 + readonly property int rows: weeksToShow + readonly property int columns: CalendarUtils.daysInAWeek + + // The combined available width and height to be shared amongst each cell. + readonly property real availableWidth: viewContainer.width + readonly property real availableHeight: viewContainer.height + + property int hoveredCellIndex: -1 + property int pressedCellIndex: -1 + property int pressCellIndex: -1 + property var pressDate: null + + Rectangle { + anchors.fill: parent + color: "transparent" + border.color: gridColor + visible: control.frameVisible + } + + Item { + id: container + anchors.fill: parent + anchors.margins: control.frameVisible ? 1 : 0 + + Loader { + id: backgroundLoader + anchors.fill: parent + sourceComponent: background + } + + Loader { + id: navigationBarLoader + anchors.left: parent.left + anchors.right: parent.right + anchors.top: parent.top + sourceComponent: navigationBar + active: control.navigationBarVisible + + property QtObject styleData: QtObject { + readonly property string title: control.locale.standaloneMonthName(control.visibleMonth) + + new Date(control.visibleYear, control.visibleMonth, 1).toLocaleDateString(control.locale, " yyyy") + } + } + + Row { + id: dayOfWeekHeaderRow + anchors.top: navigationBarLoader.bottom + anchors.left: parent.left + anchors.leftMargin: (control.weekNumbersVisible ? weekNumbersItem.width : 0) + anchors.right: parent.right + spacing: gridVisible ? __gridLineWidth : 0 + property alias __repeater: repeater + + Repeater { + id: repeater + model: CalendarHeaderModel { + locale: control.locale + } + Loader { + id: dayOfWeekDelegateLoader + sourceComponent: dayOfWeekDelegate + width: __cellRectAt(index).width + + readonly property int __index: index + readonly property var __dayOfWeek: dayOfWeek + + property QtObject styleData: QtObject { + readonly property alias index: dayOfWeekDelegateLoader.__index + readonly property alias dayOfWeek: dayOfWeekDelegateLoader.__dayOfWeek + } + } + } + } + + Rectangle { + id: topGridLine + color: __horizontalSeparatorColor + width: parent.width + height: __gridLineWidth + visible: gridVisible + anchors.top: dayOfWeekHeaderRow.bottom + } + + Row { + id: gridRow + width: weekNumbersItem.width + viewContainer.width + height: viewContainer.height + anchors.top: topGridLine.bottom + + Column { + id: weekNumbersItem + visible: control.weekNumbersVisible + height: viewContainer.height + spacing: gridVisible ? __gridLineWidth : 0 + Repeater { + id: weekNumberRepeater + model: panelItem.weeksToShow + + Loader { + id: weekNumberDelegateLoader + height: __cellRectAt(index * panelItem.columns).height + sourceComponent: weekNumberDelegate + + readonly property int __index: index + property int __weekNumber: control.__model.weekNumberAt(index) + + Connections { + target: control + + function onVisibleMonthChanged() { + __weekNumber = control.__model.weekNumberAt(index) + } + + function onVisibleYearChanged() { + __weekNumber = control.__model.weekNumberAt(index) + } + } + + Connections { + target: control.__model + function onCountChanged() { + __weekNumber = control.__model.weekNumberAt(index) + } + } + + property QtObject styleData: QtObject { + readonly property alias index: weekNumberDelegateLoader.__index + readonly property int weekNumber: weekNumberDelegateLoader.__weekNumber + } + } + } + } + + Rectangle { + id: separator + anchors.topMargin: - dayOfWeekHeaderRow.height - 1 + anchors.top: weekNumbersItem.top + anchors.bottom: weekNumbersItem.bottom + + width: __gridLineWidth + color: __verticalSeparatorColor + visible: control.weekNumbersVisible + } + + // Contains the grid lines and the grid itself. + Item { + id: viewContainer + width: container.width - (control.weekNumbersVisible ? weekNumbersItem.width + separator.width : 0) + height: container.height - navigationBarLoader.height - dayOfWeekHeaderRow.height - topGridLine.height + + Repeater { + id: verticalGridLineRepeater + model: panelItem.columns - 1 + delegate: Rectangle { + x: __cellRectAt(index + 1).x - __gridLineWidth + y: 0 + width: __gridLineWidth + height: viewContainer.height + color: gridColor + visible: gridVisible + } + } + + Repeater { + id: horizontalGridLineRepeater + model: panelItem.rows - 1 + delegate: Rectangle { + x: 0 + y: __cellRectAt((index + 1) * panelItem.columns).y - __gridLineWidth + width: viewContainer.width + height: __gridLineWidth + color: gridColor + visible: gridVisible + } + } + + MouseArea { + id: mouseArea + anchors.fill: parent + + hoverEnabled: Settings.hoverEnabled + + function cellIndexAt(mouseX, mouseY) { + var viewContainerPos = viewContainer.mapFromItem(mouseArea, mouseX, mouseY); + var child = viewContainer.childAt(viewContainerPos.x, viewContainerPos.y); + // In the tests, the mouseArea sometimes gets picked instead of the cells, + // probably because stuff is still loading. To be safe, we check for that here. + return child && child !== mouseArea ? child.__index : -1; + } + + onEntered: { + hoveredCellIndex = cellIndexAt(mouseX, mouseY); + if (hoveredCellIndex === undefined) { + hoveredCellIndex = cellIndexAt(mouseX, mouseY); + } + + var date = view.model.dateAt(hoveredCellIndex); + if (__isValidDate(date)) { + control.hovered(date); + } + } + + onExited: { + hoveredCellIndex = -1; + } + + onPositionChanged: { + var indexOfCell = cellIndexAt(mouse.x, mouse.y); + var previousHoveredCellIndex = hoveredCellIndex; + hoveredCellIndex = indexOfCell; + if (indexOfCell !== -1) { + var date = view.model.dateAt(indexOfCell); + if (__isValidDate(date)) { + if (hoveredCellIndex !== previousHoveredCellIndex) + control.hovered(date); + + // The date must be different for the pressed signal to be emitted. + if (pressed && date.getTime() !== control.selectedDate.getTime()) { + control.pressed(date); + + // You can't select dates in a different month while dragging. + if (date.getMonth() === control.selectedDate.getMonth()) { + control.selectedDate = date; + pressedCellIndex = indexOfCell; + } + } + } + } + } + + onPressed: { + pressCellIndex = cellIndexAt(mouse.x, mouse.y); + pressDate = null; + if (pressCellIndex !== -1) { + var date = view.model.dateAt(pressCellIndex); + pressedCellIndex = pressCellIndex; + pressDate = date; + if (__isValidDate(date)) { + control.selectedDate = date; + control.pressed(date); + } + } + } + + onReleased: { + var indexOfCell = cellIndexAt(mouse.x, mouse.y); + if (indexOfCell !== -1) { + // The cell index might be valid, but the date has to be too. We could let the + // selected date validation take care of this, but then the selected date would + // change to the earliest day if a day before the minimum date is clicked, for example. + var date = view.model.dateAt(indexOfCell); + if (__isValidDate(date)) { + control.released(date); + } + } + pressedCellIndex = -1; + } + + onClicked: { + var indexOfCell = cellIndexAt(mouse.x, mouse.y); + if (indexOfCell !== -1 && indexOfCell === pressCellIndex) { + if (__isValidDate(pressDate)) + control.clicked(pressDate); + } + } + + onDoubleClicked: { + var indexOfCell = cellIndexAt(mouse.x, mouse.y); + if (indexOfCell !== -1) { + var date = view.model.dateAt(indexOfCell); + if (__isValidDate(date)) + control.doubleClicked(date); + } + } + + onPressAndHold: { + var indexOfCell = cellIndexAt(mouse.x, mouse.y); + if (indexOfCell !== -1 && indexOfCell === pressCellIndex) { + var date = view.model.dateAt(indexOfCell); + if (__isValidDate(date)) + control.pressAndHold(date); + } + } + } + + Connections { + target: control + function onSelectedDateChanged() { view.selectedDateChanged() } + } + + Repeater { + id: view + + property int currentIndex: -1 + + model: control.__model + + Component.onCompleted: selectedDateChanged() + + function selectedDateChanged() { + if (model !== undefined && model.locale !== undefined) { + currentIndex = model.indexAt(control.selectedDate); + } + } + + delegate: Loader { + id: delegateLoader + + x: __cellRectAt(index).x + y: __cellRectAt(index).y + width: __cellRectAt(index).width + height: __cellRectAt(index).height + sourceComponent: dayDelegate + + readonly property int __index: index + readonly property date __date: date + // We rely on the fact that an invalid QDate will be converted to a Date + // whose year is -4713, which is always an invalid date since our + // earliest minimum date is the year 1. + readonly property bool valid: __isValidDate(date) + + property QtObject styleData: QtObject { + readonly property alias index: delegateLoader.__index + readonly property bool selected: control.selectedDate.getFullYear() === date.getFullYear() && + control.selectedDate.getMonth() === date.getMonth() && + control.selectedDate.getDate() === date.getDate() + readonly property alias date: delegateLoader.__date + readonly property bool valid: delegateLoader.valid + // TODO: this will not be correct if the app is running when a new day begins. + readonly property bool today: date.getTime() === new Date().setHours(0, 0, 0, 0) + readonly property bool visibleMonth: date.getMonth() === control.visibleMonth + readonly property bool hovered: panelItem.hoveredCellIndex == index + readonly property bool pressed: panelItem.pressedCellIndex == index + // todo: pressed property here, clicked and doubleClicked in the control itself + } + } + } + } + } + } + } +} diff --git a/deployment_test/QtQuick/Controls/Styles/Base/CalendarStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Base/CalendarStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..f47d9789c5f878969addceda526382debcc75ef1 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/CalendarStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/CheckBoxStyle.qml b/deployment_test/QtQuick/Controls/Styles/Base/CheckBoxStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..a476a953a045a399eb38b9ed6b47ea7e284c6378 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Base/CheckBoxStyle.qml @@ -0,0 +1,193 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Layouts 1.1 +import QtQuick.Window 2.1 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype CheckBoxStyle + \inqmlmodule QtQuick.Controls.Styles + \since 5.1 + \ingroup controlsstyling + \brief Provides custom styling for CheckBox. + + Example: + \qml + CheckBox { + text: "Check Box" + style: CheckBoxStyle { + indicator: Rectangle { + implicitWidth: 16 + implicitHeight: 16 + radius: 3 + border.color: control.activeFocus ? "darkblue" : "gray" + border.width: 1 + Rectangle { + visible: control.checked + color: "#555" + border.color: "#333" + radius: 1 + anchors.margins: 4 + anchors.fill: parent + } + } + } + } + \endqml +*/ +Style { + id: checkboxStyle + + /*! The \l CheckBox this style is attached to. */ + readonly property CheckBox control: __control + + /*! This defines the text label. */ + property Component label: Item { + implicitWidth: text.implicitWidth + 2 + implicitHeight: text.implicitHeight + baselineOffset: text.baselineOffset + Rectangle { + anchors.fill: text + anchors.margins: -1 + anchors.leftMargin: -3 + anchors.rightMargin: -3 + visible: control.activeFocus + height: 6 + radius: 3 + color: "#224f9fef" + border.color: "#47b" + opacity: 0.6 + } + Text { + id: text + text: StyleHelpers.stylizeMnemonics(control.text) + anchors.centerIn: parent + color: SystemPaletteSingleton.text(control.enabled) + renderType: Settings.isMobile ? Text.QtRendering : Text.NativeRendering + } + } + /*! The background under indicator and label. */ + property Component background + + /*! The spacing between indicator and label. */ + property int spacing: Math.round(TextSingleton.implicitHeight/4) + + /*! This defines the indicator button. */ + property Component indicator: Item { + implicitWidth: Math.round(TextSingleton.implicitHeight) + implicitHeight: implicitWidth + Rectangle { + anchors.fill: parent + anchors.bottomMargin: -1 + color: "#44ffffff" + radius: baserect.radius + } + Rectangle { + id: baserect + gradient: Gradient { + GradientStop {color: "#eee" ; position: 0} + GradientStop {color: control.pressed ? "#eee" : "#fff" ; position: 0.1} + GradientStop {color: "#fff" ; position: 1} + } + radius: TextSingleton.implicitHeight * 0.16 + anchors.fill: parent + border.color: control.activeFocus ? "#47b" : "#999" + } + + Image { + source: "images/check.png" + opacity: control.checkedState === Qt.Checked ? control.enabled ? 1 : 0.5 : 0 + anchors.centerIn: parent + anchors.verticalCenterOffset: 1 + Behavior on opacity {NumberAnimation {duration: 80}} + } + + Rectangle { + anchors.fill: parent + anchors.margins: Math.round(baserect.radius) + antialiasing: true + gradient: Gradient { + GradientStop {color: control.pressed ? "#555" : "#999" ; position: 0} + GradientStop {color: "#555" ; position: 1} + } + radius: baserect.radius - 1 + anchors.centerIn: parent + anchors.alignWhenCentered: true + border.color: "#222" + Behavior on opacity {NumberAnimation {duration: 80}} + opacity: control.checkedState === Qt.PartiallyChecked ? control.enabled ? 1 : 0.5 : 0 + } + } + + /*! \internal */ + property Component panel: Item { + implicitWidth: Math.max(backgroundLoader.implicitWidth, row.implicitWidth + padding.left + padding.right) + implicitHeight: Math.max(backgroundLoader.implicitHeight, labelLoader.implicitHeight + padding.top + padding.bottom,indicatorLoader.implicitHeight + padding.top + padding.bottom) + baselineOffset: labelLoader.item ? padding.top + labelLoader.item.baselineOffset : 0 + + Loader { + id: backgroundLoader + sourceComponent: background + anchors.fill: parent + } + RowLayout { + id: row + anchors.fill: parent + + anchors.leftMargin: padding.left + anchors.rightMargin: padding.right + anchors.topMargin: padding.top + anchors.bottomMargin: padding.bottom + + spacing: checkboxStyle.spacing + Loader { + id: indicatorLoader + sourceComponent: indicator + } + Loader { + id: labelLoader + Layout.fillWidth: true + sourceComponent: label + } + } + } +} diff --git a/deployment_test/QtQuick/Controls/Styles/Base/CheckBoxStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Base/CheckBoxStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..26a5a290b0d469cf0c7bdf70bb387cf5a67fd244 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/CheckBoxStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/CircularButtonStyle.qml b/deployment_test/QtQuick/Controls/Styles/Base/CircularButtonStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..b2324e0e1bffebbd1f14a086b556b8f49cabe910 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Base/CircularButtonStyle.qml @@ -0,0 +1,87 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Extras module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls.Styles 1.4 +import QtQuick.Extras.Private 1.0 + +ButtonStyle { + id: buttonStyle + + label: Text { + anchors.fill: parent + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + text: control.text + font.pixelSize: TextSingleton.font.pixelSize * 1.25 + color: control.pressed || control.checked ? __buttonHelper.textColorDown : __buttonHelper.textColorUp + styleColor: control.pressed || control.checked ? __buttonHelper.textRaisedColorDown : __buttonHelper.textRaisedColorUp + style: Text.Raised + wrapMode: Text.Wrap + fontSizeMode: Text.Fit + } + + /*! \internal */ + property alias __buttonHelper: buttonHelper + + CircularButtonStyleHelper { + id: buttonHelper + control: buttonStyle.control + } + + background: Item { + implicitWidth: __buttonHelper.implicitWidth + implicitHeight: __buttonHelper.implicitHeight + + Canvas { + id: backgroundCanvas + anchors.fill: parent + + Connections { + target: control + function onPressedChanged() { backgroundCanvas.requestPaint() } + } + + onPaint: { + var ctx = getContext("2d"); + __buttonHelper.paintBackground(ctx); + } + } + } +} diff --git a/deployment_test/QtQuick/Controls/Styles/Base/CircularButtonStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Base/CircularButtonStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..60a11ef1b32898b4d0baaaf0fa3b914df1de748a Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/CircularButtonStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/CircularGaugeStyle.qml b/deployment_test/QtQuick/Controls/Styles/Base/CircularGaugeStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..e40b8bb463bab3345bcde8ecbe01f02e6e73e73e --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Base/CircularGaugeStyle.qml @@ -0,0 +1,497 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Extras module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtGraphicalEffects 1.0 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 +import QtQuick.Controls.Private 1.0 +import QtQuick.Extras 1.4 +import QtQuick.Extras.Private 1.0 + +/*! + \qmltype CircularGaugeStyle + \inqmlmodule QtQuick.Controls.Styles + \since 5.5 + \ingroup controlsstyling + \brief Provides custom styling for CircularGauge. + + You can create a custom circular gauge by replacing the following delegates: + \list + \li \l background + \li \l tickmark + \li \l minorTickmark + \li \l tickmarkLabel + \li \l needle + \li \l foreground + \endlist + + Below is an example that changes the needle to a basic orange \l Rectangle: + \code + CircularGauge { + style: CircularGaugeStyle { + needle: Rectangle { + y: outerRadius * 0.15 + implicitWidth: outerRadius * 0.03 + implicitHeight: outerRadius * 0.9 + antialiasing: true + color: Qt.rgba(0.66, 0.3, 0, 1) + } + } + } + \endcode + + The result: + \image circulargauge-needle-example-2.png CircularGaugeStyle example + + \section2 Direction + + \l minimumValueAngle and \l maximumValueAngle determine not only the + position of the tickmarks, labels and needle, but the direction in which + they are displayed around the gauge. For example, if \l minimumValueAngle + is greater than \l maximumValueAngle, the gauge will be anti-clockwise. + Below, there are two gauges: the top gauge has a \l minimumValueAngle of + \c -90 degrees and a \l maximumValueAngle of \c 90 degrees, and the bottom + gauge has the opposite. + + \image circulargauge-reversed.png Reversed CircularGauge + + \sa {Styling CircularGauge} +*/ + +Style { + id: circularGaugeStyle + + /*! + The \l CircularGauge that this style is attached to. + */ + readonly property CircularGauge control: __control + + /*! + The distance from the center of the gauge to the outer edge of the + gauge. + + This property is useful for determining the size of the various + components of the style, in order to ensure that they are scaled + proportionately when the gauge is resized. + */ + readonly property real outerRadius: Math.min(control.width, control.height) * 0.5 + + /*! + This property determines the angle at which the minimum value is + displayed on the gauge. + + The angle set affects the following components of the gauge: + \list + \li The angle of the needle + \li The position of the tickmarks and labels + \endlist + + The angle origin points north: + + \image circulargauge-angles.png + + There is no minimum or maximum angle for this property, but the default + style only supports angles whose absolute range is less than or equal + to \c 360 degrees. This is because ranges higher than \c 360 degrees + will cause the tickmarks and labels to overlap each other. + + The default value is \c -145. + */ + property real minimumValueAngle: -145 + + /*! + This property determines the angle at which the maximum value is + displayed on the gauge. + + The angle set affects the following components of the gauge: + \list + \li The angle of the needle + \li The position of the tickmarks and labels + \endlist + + The angle origin points north: + + \image circulargauge-angles.png + + There is no minimum or maximum angle for this property, but the default + style only supports angles whose absolute range is less than or equal + to \c 360 degrees. This is because ranges higher than \c 360 degrees + will cause the tickmarks and labels to overlap each other. + + The default value is \c 145. + */ + property real maximumValueAngle: 145 + + /*! + The range between \l minimumValueAngle and \l maximumValueAngle, in + degrees. This value will always be positive. + */ + readonly property real angleRange: control.__panel.circularTickmarkLabel.angleRange + + /*! + This property holds the rotation of the needle in degrees. + */ + property real needleRotation: { + var percentage = (control.value - control.minimumValue) / (control.maximumValue - control.minimumValue); + minimumValueAngle + percentage * angleRange; + } + + /*! + The interval at which tickmarks are displayed. + + For example, if this property is set to \c 10 (the default), + control.minimumValue to \c 0, and control.maximumValue to \c 100, + the tickmarks displayed will be 0, 10, 20, etc., to 100, + around the gauge. + */ + property real tickmarkStepSize: 10 + + /*! + The distance in pixels from the outside of the gauge (outerRadius) at + which the outermost point of the tickmark line is drawn. + */ + property real tickmarkInset: 0 + + + /*! + The amount of tickmarks displayed by the gauge, calculated from + \l tickmarkStepSize and the control's + \l {CircularGauge::minimumValue}{minimumValue} and + \l {CircularGauge::maximumValue}{maximumValue}. + + \sa minorTickmarkCount + */ + readonly property int tickmarkCount: control.__panel.circularTickmarkLabel.tickmarkCount + + /*! + The amount of minor tickmarks between each tickmark. + + The default value is \c 4. + + \sa tickmarkCount + */ + property int minorTickmarkCount: 4 + + /*! + The distance in pixels from the outside of the gauge (outerRadius) at + which the outermost point of the minor tickmark line is drawn. + */ + property real minorTickmarkInset: 0 + + /*! + The distance in pixels from the outside of the gauge (outerRadius) at + which the center of the value marker text is drawn. + */ + property real labelInset: __protectedScope.toPixels(0.19) + + /*! + The interval at which tickmark labels are displayed. + + For example, if this property is set to \c 10 (the default), + control.minimumValue to \c 0, and control.maximumValue to \c 100, the + tickmark labels displayed will be 0, 10, 20, etc., to 100, + around the gauge. + */ + property real labelStepSize: tickmarkStepSize + + /*! + The amount of tickmark labels displayed by the gauge, calculated from + \l labelStepSize and the control's + \l {CircularGauge::minimumValue}{minimumValue} and + \l {CircularGauge::maximumValue}{maximumValue}. + + \sa tickmarkCount, minorTickmarkCount + */ + readonly property int labelCount: control.__panel.circularTickmarkLabel.labelCount + + /*! \qmlmethod real CircularGaugeStyle::valueToAngle(real value) + Returns \a value as an angle in degrees. + + This function is useful for custom drawing or positioning of items in + the style's components. For example, it can be used to calculate the + angles at which to draw an arc around the gauge indicating the safe + area for the needle to be within. + + For example, if minimumValueAngle is set to \c 270 and + maximumValueAngle is set to \c 90, this function will return \c 270 + when passed minimumValue and \c 90 when passed maximumValue. + + \sa {Styling CircularGauge#styling-circulargauge-background}{ + Styling CircularGauge's background} + */ + function valueToAngle(value) { + return control.__panel.circularTickmarkLabel.valueToAngle(value); + } + + property QtObject __protectedScope: QtObject { + /*! + Converts a value expressed as a percentage of \l outerRadius to + a pixel value. + */ + function toPixels(percentageOfOuterRadius) { + return percentageOfOuterRadius * outerRadius; + } + } + + /*! + The background of the gauge. + + If set, the background determines the implicit size of the gauge. + + By default, there is no background defined. + + \sa {Styling CircularGauge#styling-circulargauge-background}{ + Styling CircularGauge's background} + */ + property Component background + + /*! + This component defines each individual tickmark. The position of each + tickmark is already set; only the + \l {Item::implicitWidth}{implicitWidth} and + \l {Item::implicitHeight}{implicitHeight} need to be specified. + + Each instance of this component has access to the following properties: + + \table + \row \li \c {readonly property int} \b styleData.index + \li The index of this tickmark. + \row \li \c {readonly property real} \b styleData.value + \li The value that this tickmark represents. + \endtable + + To illustrate what these properties refer to, we can use the following + example: + + \snippet circulargauge-tickmark-indices-values.qml tickmarks + + We've replaced the conventional \e line tickmarks with \l Text items + and have hidden the tickmarkLabel component in order to make the + association clearer: + + \image circulargauge-tickmark-indices-values.png Tickmarks + + The index property can be useful if you have another model that + contains images to display for each index, for example. + + The value property is useful for drawing lower and upper limits around + the gauge to indicate the recommended value ranges. For example, speeds + above 200 kilometers an hour in a car's speedometer could be indicated + as dangerous using this property. + + \sa {Styling CircularGauge#styling-circulargauge-tickmark}{ + Styling CircularGauge's tickmark} + */ + property Component tickmark: Rectangle { + implicitWidth: outerRadius * 0.02 + antialiasing: true + implicitHeight: outerRadius * 0.06 + color: "#c8c8c8" + } + + /*! + This component defines each individual minor tickmark. The position of + each minor tickmark is already set; only the + \l {Item::implicitWidth}{implicitWidth} and + \l {Item::implicitHeight}{implicitHeight} need to be specified. + + Each instance of this component has access to the following properties: + + \table + \row \li \c {readonly property int} \b styleData.index + \li The index of this tickmark. + \row \li \c {readonly property real} \b styleData.value + \li The value that this tickmark represents. + \endtable + + \sa {Styling CircularGauge#styling-circulargauge-minorTickmark}{ + Styling CircularGauge's minorTickmark} + */ + property Component minorTickmark: Rectangle { + implicitWidth: outerRadius * 0.01 + antialiasing: true + implicitHeight: outerRadius * 0.03 + color: "#c8c8c8" + } + + /*! + This defines the text of each tickmark label on the gauge. + + Each instance of this component has access to the following properties: + + \table + \row \li \c {readonly property int} \b styleData.index + \li The index of this label. + \row \li \c {readonly property real} \b styleData.value + \li The value that this label represents. + \endtable + + \sa {Styling CircularGauge#styling-circulargauge-tickmarkLabel}{ + Styling CircularGauge's tickmarkLabel} + */ + property Component tickmarkLabel: Text { + font.pixelSize: Math.max(6, __protectedScope.toPixels(0.12)) + text: styleData.value + color: "#c8c8c8" + antialiasing: true + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + } + + /*! + The needle that points to the gauge's current value. + + This component is drawn below the \l foreground component. + + The style expects the needle to be pointing up at a rotation of \c 0, + in order for the rotation to be correct. For example: + + \image circulargauge-needle.png CircularGauge's needle + + When defining your own needle component, the only properties that the + style requires you to set are the + \l {Item::implicitWidth}{implicitWidth} and + \l {Item::implicitHeight}{implicitHeight}. + + Optionally, you can set \l {Item::x}{x} and \l {Item::y}{y} to change + the needle's transform origin. Setting the \c x position can be useful + for needle images where the needle is not centered exactly + horizontally. Setting the \c y position allows you to make the base of + the needle hang over the center of the gauge. + + \sa {Styling CircularGauge#styling-circulargauge-needle}{ + Styling CircularGauge's needle} + */ + property Component needle: Item { + implicitWidth: __protectedScope.toPixels(0.08) + implicitHeight: 0.9 * outerRadius + + Image { + anchors.fill: parent + source: "images/needle.png" + } + } + + /*! + The foreground of the gauge. This component is drawn above all others. + + Like \l background, the foreground component fills the entire gauge. + + By default, the knob of the gauge is defined here. + + \sa {Styling CircularGauge#styling-circulargauge-foreground}{ + Styling CircularGauge's foreground} + */ + property Component foreground: Item { + Image { + source: "images/knob.png" + anchors.centerIn: parent + scale: { + var idealHeight = __protectedScope.toPixels(0.2); + var originalImageHeight = sourceSize.height; + idealHeight / originalImageHeight; + } + } + } + + /*! \internal */ + property Component panel: Item { + id: panelItem + implicitWidth: backgroundLoader.item ? backgroundLoader.implicitWidth : TextSingleton.implicitHeight * 16 + implicitHeight: backgroundLoader.item ? backgroundLoader.implicitHeight : TextSingleton.implicitHeight * 16 + + property alias background: backgroundLoader.item + property alias circularTickmarkLabel: circularTickmarkLabel_ + + Loader { + id: backgroundLoader + sourceComponent: circularGaugeStyle.background + width: outerRadius * 2 + height: outerRadius * 2 + anchors.centerIn: parent + } + + CircularTickmarkLabel { + id: circularTickmarkLabel_ + anchors.fill: backgroundLoader + + minimumValue: control.minimumValue + maximumValue: control.maximumValue + stepSize: control.stepSize + tickmarksVisible: control.tickmarksVisible + minimumValueAngle: circularGaugeStyle.minimumValueAngle + maximumValueAngle: circularGaugeStyle.maximumValueAngle + tickmarkStepSize: circularGaugeStyle.tickmarkStepSize + tickmarkInset: circularGaugeStyle.tickmarkInset + minorTickmarkCount: circularGaugeStyle.minorTickmarkCount + minorTickmarkInset: circularGaugeStyle.minorTickmarkInset + labelInset: circularGaugeStyle.labelInset + labelStepSize: circularGaugeStyle.labelStepSize + + style: CircularTickmarkLabelStyle { + tickmark: circularGaugeStyle.tickmark + minorTickmark: circularGaugeStyle.minorTickmark + tickmarkLabel: circularGaugeStyle.tickmarkLabel + } + } + + Loader { + id: needleLoader + sourceComponent: circularGaugeStyle.needle + transform: [ + Rotation { + angle: needleRotation + origin.x: needleLoader.width / 2 + origin.y: needleLoader.height + }, + Translate { + x: panelItem.width / 2 - needleLoader.width / 2 + y: panelItem.height / 2 - needleLoader.height + } + ] + } + + Loader { + id: foreground + sourceComponent: circularGaugeStyle.foreground + anchors.fill: backgroundLoader + } + } +} diff --git a/deployment_test/QtQuick/Controls/Styles/Base/CircularGaugeStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Base/CircularGaugeStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..4afb71df2414499b9314693ae2183aef5c08077c Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/CircularGaugeStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/CircularTickmarkLabelStyle.qml b/deployment_test/QtQuick/Controls/Styles/Base/CircularTickmarkLabelStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..494a7f28ca36a7ada819d29ecedc939b0b6d8b91 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Base/CircularTickmarkLabelStyle.qml @@ -0,0 +1,309 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Extras module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls.Private 1.0 +import QtQuick.Extras.Private 1.0 +import QtQuick.Extras.Private.CppUtils 1.0 + +Style { + id: circularTickmarkLabelStyle + + /*! + The distance from the center of the control to the outer edge. + */ + readonly property real outerRadius: Math.min(control.width, control.height) * 0.5 + + property QtObject __protectedScope: QtObject { + /*! + Converts a value expressed as a percentage of \l outerRadius to + a pixel value. + */ + function toPixels(percentageOfOuterRadius) { + return percentageOfOuterRadius * outerRadius; + } + } + + /*! + This component defines each individual tickmark. The position of each + tickmark is already set; only the size needs to be specified. + */ + property Component tickmark: Rectangle { + width: outerRadius * 0.02 + antialiasing: true + height: outerRadius * 0.06 + color: "#c8c8c8" + } + + /*! + This component defines each individual minor tickmark. The position of + each minor tickmark is already set; only the size needs to be specified. + */ + property Component minorTickmark: Rectangle { + width: outerRadius * 0.01 + antialiasing: true + height: outerRadius * 0.03 + color: "#c8c8c8" + } + + /*! + This defines the text of each tickmark label on the gauge. + */ + property Component tickmarkLabel: Text { + font.pixelSize: Math.max(6, __protectedScope.toPixels(0.12)) + text: styleData.value + color: "#c8c8c8" + antialiasing: true + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + } + + /*! \internal */ + property Component panel: Item { + id: panelItem + implicitWidth: 250 + implicitHeight: 250 + + function rangeUsed(count, stepSize) { + return (((count - 1) * stepSize) / (control.maximumValue - control.minimumValue)) * control.angleRange; + } + + readonly property real tickmarkSectionSize: rangeUsed(control.tickmarkCount, control.tickmarkStepSize) / (control.tickmarkCount - 1) + readonly property real tickmarkSectionValue: (control.maximumValue - control.minimumValue) / (control.tickmarkCount - 1) + readonly property real minorTickmarkSectionSize: tickmarkSectionSize / (control.minorTickmarkCount + 1) + readonly property real minorTickmarkSectionValue: tickmarkSectionValue / (control.minorTickmarkCount + 1) + readonly property int totalMinorTickmarkCount: { + // The size of each section within two major tickmarks, expressed as a percentage. + var minorSectionPercentage = 1 / (control.minorTickmarkCount + 1); + // The amount of major tickmarks not able to be displayed; will be 0 if they all fit. + var tickmarksNotDisplayed = control.__tickmarkCount - control.tickmarkCount; + var count = control.minorTickmarkCount * (control.tickmarkCount - 1); + // We'll try to display as many minor tickmarks as we can to fill up the space. + count + tickmarksNotDisplayed / minorSectionPercentage; + } + readonly property real labelSectionSize: rangeUsed(control.labelCount, control.labelStepSize) / (control.labelCount - 1) + + function toPixels(percentageOfOuterRadius) { + return percentageOfOuterRadius * outerRadius; + } + + /*! + Returns the angle of \a marker (in the range 0 ... n - 1, where n + is the amount of markers) on the gauge where sections are of size + tickmarkSectionSize. + */ + function tickmarkAngleFromIndex(tickmarkIndex) { + return tickmarkIndex * tickmarkSectionSize + control.minimumValueAngle; + } + + function labelAngleFromIndex(labelIndex) { + return labelIndex * labelSectionSize + control.minimumValueAngle; + } + + function labelPosFromIndex(index, labelWidth, labelHeight) { + return MathUtils.centerAlongCircle(outerRadius, outerRadius, labelWidth, labelHeight, + MathUtils.degToRadOffset(labelAngleFromIndex(index)), + outerRadius - control.labelInset) + } + + function minorTickmarkAngleFromIndex(minorTickmarkIndex) { + var baseAngle = tickmarkAngleFromIndex(Math.floor(minorTickmarkIndex / control.minorTickmarkCount)); + // + minorTickmarkSectionSize because we don't want the first minor tickmark to start on top of its "parent" tickmark. + var relativeMinorAngle = (minorTickmarkIndex % control.minorTickmarkCount * minorTickmarkSectionSize) + minorTickmarkSectionSize; + return baseAngle + relativeMinorAngle; + } + + function tickmarkValueFromIndex(majorIndex) { + return (majorIndex * tickmarkSectionValue) + control.minimumValue; + } + + function tickmarkValueFromMinorIndex(minorIndex) { + var majorIndex = Math.floor(minorIndex / control.minorTickmarkCount); + var relativeMinorIndex = minorIndex % control.minorTickmarkCount; + return tickmarkValueFromIndex(majorIndex) + ((relativeMinorIndex * minorTickmarkSectionValue) + minorTickmarkSectionValue); + } + + Loader { + active: control.tickmarksVisible && tickmark != null + width: outerRadius * 2 + height: outerRadius * 2 + anchors.centerIn: parent + + sourceComponent: Repeater { + id: tickmarkRepeater + model: control.tickmarkCount + delegate: Loader { + id: tickmarkLoader + objectName: "tickmark" + styleData.index + x: tickmarkRepeater.width / 2 + y: tickmarkRepeater.height / 2 + + transform: [ + Translate { + y: -outerRadius + control.tickmarkInset + }, + Rotation { + angle: panelItem.tickmarkAngleFromIndex(styleData.index) - __tickmarkWidthAsAngle / 2 + } + ] + + sourceComponent: tickmark + + property int __index: index + property QtObject styleData: QtObject { + readonly property alias index: tickmarkLoader.__index + readonly property real value: tickmarkValueFromIndex(index) + } + + readonly property real __tickmarkWidthAsAngle: MathUtils.radToDeg((width / (MathUtils.pi2 * outerRadius)) * MathUtils.pi2) + } + } + } + Loader { + active: control.tickmarksVisible && minorTickmark != null + width: outerRadius * 2 + height: outerRadius * 2 + anchors.centerIn: parent + + sourceComponent: Repeater { + id: minorRepeater + anchors.fill: parent + model: totalMinorTickmarkCount + delegate: Loader { + id: minorTickmarkLoader + objectName: "minorTickmark" + styleData.index + x: minorRepeater.width / 2 + y: minorRepeater.height / 2 + transform: [ + Translate { + y: -outerRadius + control.minorTickmarkInset + }, + Rotation { + angle: panelItem.minorTickmarkAngleFromIndex(styleData.index) - __minorTickmarkWidthAsAngle / 2 + } + ] + + sourceComponent: minorTickmark + + property int __index: index + property QtObject styleData: QtObject { + readonly property alias index: minorTickmarkLoader.__index + readonly property real value: tickmarkValueFromMinorIndex(index) + } + + readonly property real __minorTickmarkWidthAsAngle: MathUtils.radToDeg((width / (MathUtils.pi2 * outerRadius)) * MathUtils.pi2) + } + } + } + Loader { + id: labelLoader + active: control.tickmarksVisible && tickmarkLabel != null + width: outerRadius * 2 + height: outerRadius * 2 + anchors.centerIn: parent + + sourceComponent: Item { + id: labelItem + width: outerRadius * 2 + height: outerRadius * 2 + anchors.centerIn: parent + + Connections { + target: control + function onMinimumValueChanged() { valueTextModel.update() } + function onMaximumValueChanged() { valueTextModel.update() } + function onTickmarkStepSizeChanged() { valueTextModel.update() } + function onLabelStepSizeChanged() { valueTextModel.update() } + } + + Repeater { + id: labelItemRepeater + + Component.onCompleted: valueTextModel.update(); + + model: ListModel { + id: valueTextModel + + function update() { + if (control.labelStepSize === 0) { + return; + } + + // Make bigger if it's too small and vice versa. + // +1 because we want to show 11 values, with, for example: 0, 10, 20... 100. + var difference = control.labelCount - count; + if (difference > 0) { + for (; difference > 0; --difference) { + append({ value: 0 }); + } + } else if (difference < 0) { + for (; difference < 0; ++difference) { + remove(count - 1); + } + } + + var index = 0; + for (var value = control.minimumValue; + value <= control.maximumValue && index < count; + value += control.labelStepSize, ++index) { + setProperty(index, "value", value); + } + } + } + delegate: Loader { + id: tickmarkLabelDelegateLoader + objectName: "labelDelegateLoader" + index + sourceComponent: tickmarkLabel + x: pos.x + y: pos.y + + readonly property point pos: panelItem.labelPosFromIndex(index, width, height); + + readonly property int __index: index + readonly property real __value: value + property QtObject styleData: QtObject { + readonly property var value: index != -1 ? tickmarkLabelDelegateLoader.__value : 0 + readonly property alias index: tickmarkLabelDelegateLoader.__index + } + } + } + } + } + } +} diff --git a/deployment_test/QtQuick/Controls/Styles/Base/CircularTickmarkLabelStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Base/CircularTickmarkLabelStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..ba7fd8553324948274e2778152f1086ce33163f5 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/CircularTickmarkLabelStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/ComboBoxStyle.qml b/deployment_test/QtQuick/Controls/Styles/Base/ComboBoxStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..ea13696c0ac83874f5e1f45b1e15de98a08afbee --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Base/ComboBoxStyle.qml @@ -0,0 +1,328 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Window 2.1 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Styles 1.1 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype ComboBoxStyle + \inqmlmodule QtQuick.Controls.Styles + \since 5.1 + \ingroup controlsstyling + \brief Provides custom styling for ComboBox. +*/ + +Style { + id: cbStyle + + /*! + \qmlproperty enumeration renderType + \since QtQuick.Controls.Styles 1.2 + + Override the default rendering type for the control. + + Supported render types are: + \list + \li Text.QtRendering + \li Text.NativeRendering + \endlist + + The default value is platform dependent. + + \sa Text::renderType + */ + property int renderType: Settings.isMobile ? Text.QtRendering : Text.NativeRendering + + /*! + \since QtQuick.Controls.Styles 1.3 + The font of the control. + */ + property font font + + /*! + \since QtQuick.Controls.Styles 1.3 + The text color. + */ + property color textColor: SystemPaletteSingleton.text(control.enabled) + + /*! + \since QtQuick.Controls.Styles 1.3 + The text highlight color, used behind selections. + */ + property color selectionColor: SystemPaletteSingleton.highlight(control.enabled) + + /*! + \since QtQuick.Controls.Styles 1.3 + The highlighted text color, used in selections. + */ + property color selectedTextColor: SystemPaletteSingleton.highlightedText(control.enabled) + + /*! The \l ComboBox this style is attached to. */ + readonly property ComboBox control: __control + + /*! The padding between the background and the label components. */ + padding { top: 4 ; left: 6 ; right: 6 ; bottom:4 } + + /*! The size of the drop down button when the combobox is editable. */ + property int dropDownButtonWidth: Math.round(TextSingleton.implicitHeight) + + /*! \internal Alias kept for backwards compatibility with a spelling mistake in 5.2.0) */ + property alias drowDownButtonWidth: cbStyle.dropDownButtonWidth + + /*! This defines the background of the button. */ + property Component background: Item { + implicitWidth: Math.round(TextSingleton.implicitHeight * 4.5) + implicitHeight: Math.max(25, Math.round(TextSingleton.implicitHeight * 1.2)) + Rectangle { + anchors.fill: parent + anchors.bottomMargin: control.pressed ? 0 : -1 + color: "#10000000" + radius: baserect.radius + } + Rectangle { + id: baserect + gradient: Gradient { + GradientStop {color: control.pressed ? "#bababa" : "#fefefe" ; position: 0} + GradientStop {color: control.pressed ? "#ccc" : "#e3e3e3" ; position: 1} + } + radius: TextSingleton.implicitHeight * 0.16 + anchors.fill: parent + border.color: control.activeFocus ? "#47b" : "#999" + Rectangle { + anchors.fill: parent + radius: parent.radius + color: control.activeFocus ? "#47b" : "white" + opacity: control.hovered || control.activeFocus ? 0.1 : 0 + Behavior on opacity {NumberAnimation{ duration: 100 }} + } + } + Image { + id: imageItem + visible: control.menu !== null + source: "images/arrow-down.png" + anchors.verticalCenter: parent.verticalCenter + anchors.right: parent.right + anchors.rightMargin: dropDownButtonWidth / 2 + opacity: control.enabled ? 0.6 : 0.3 + } + } + + /*! \internal */ + property Component __editor: Item { + implicitWidth: 100 + implicitHeight: Math.max(25, Math.round(TextSingleton.implicitHeight * 1.2)) + clip: true + Rectangle { + anchors.fill: parent + anchors.bottomMargin: 0 + color: "#44ffffff" + radius: baserect.radius + } + Rectangle { + id: baserect + anchors.rightMargin: -radius + anchors.bottomMargin: 1 + gradient: Gradient { + GradientStop {color: "#e0e0e0" ; position: 0} + GradientStop {color: "#fff" ; position: 0.1} + GradientStop {color: "#fff" ; position: 1} + } + radius: TextSingleton.implicitHeight * 0.16 + anchors.fill: parent + border.color: control.activeFocus ? "#47b" : "#999" + } + Rectangle { + color: "#aaa" + anchors.bottomMargin: 2 + anchors.topMargin: 1 + anchors.right: parent.right + anchors.top: parent.top + anchors.bottom: parent.bottom + width: 1 + } + } + + /*! This defines the label of the button. */ + property Component label: Item { + implicitWidth: textitem.implicitWidth + 20 + baselineOffset: textitem.y + textitem.baselineOffset + Text { + id: textitem + anchors.left: parent.left + anchors.right: parent.right + anchors.leftMargin: 4 + anchors.rightMargin: 10 + anchors.verticalCenter: parent.verticalCenter + text: control.currentText + renderType: cbStyle.renderType + font: cbStyle.font + color: cbStyle.textColor + elide: Text.ElideRight + } + } + + /*! \internal */ + property Component panel: Item { + property bool popup: false + property font font: cbStyle.font + property color textColor: cbStyle.textColor + property color selectionColor: cbStyle.selectionColor + property color selectedTextColor: cbStyle.selectedTextColor + property int dropDownButtonWidth: cbStyle.dropDownButtonWidth + anchors.centerIn: parent + anchors.fill: parent + implicitWidth: backgroundLoader.implicitWidth + implicitHeight: Math.max(labelLoader.implicitHeight + padding.top + padding.bottom, backgroundLoader.implicitHeight) + baselineOffset: labelLoader.item ? padding.top + labelLoader.item.baselineOffset: 0 + + Loader { + id: backgroundLoader + anchors.fill: parent + sourceComponent: background + + } + + Loader { + id: editorLoader + anchors.fill: parent + anchors.rightMargin: dropDownButtonWidth + padding.right + anchors.bottomMargin: -1 + sourceComponent: control.editable ? __editor : null + } + + Loader { + id: labelLoader + sourceComponent: label + visible: !control.editable + anchors.fill: parent + anchors.leftMargin: padding.left + anchors.topMargin: padding.top + anchors.rightMargin: padding.right + anchors.bottomMargin: padding.bottom + } + } + + /*! \internal */ + property Component __dropDownStyle: MenuStyle { + font: cbStyle.font + __labelColor: cbStyle.textColor + __selectedLabelColor: cbStyle.selectedTextColor + __selectedBackgroundColor: cbStyle.selectionColor + __maxPopupHeight: 600 + __menuItemType: "comboboxitem" + __scrollerStyle: ScrollViewStyle { } + } + + /*! \internal */ + property Component __popupStyle: Style { + property int __maxPopupHeight: 400 + property int submenuOverlap: 0 + property int submenuPopupDelay: 100 + + property Component frame: Rectangle { + id: popupFrame + border.color: "white" + Text { + text: "NOT IMPLEMENTED" + color: "red" + font { + pixelSize: 10 + bold: true + } + anchors.centerIn: parent + rotation: -Math.atan2(popupFrame.height, popupFrame.width) * 180 / Math.PI + } + } + + property Component menuItemPanel: Text { + text: styleData.text + } + + property Component __scrollerStyle: null + } + + /*! \internal + The cursor handle. + \since QtQuick.Controls.Styles 1.3 + + The parent of the handle is positioned to the top left corner of + the cursor position. The interactive area is determined by the + geometry of the handle delegate. + + The following signals and read-only properties are available within the scope + of the handle delegate: + \table + \row \li \b {styleData.activated()} [signal] \li Emitted when the handle is activated ie. the editor is clicked. + \row \li \b {styleData.pressed} : bool \li Whether the handle is pressed. + \row \li \b {styleData.position} : int \li The character position of the handle. + \row \li \b {styleData.lineHeight} : real \li The height of the line the handle is on. + \row \li \b {styleData.hasSelection} : bool \li Whether the editor has selected text. + \endtable + */ + property Component __cursorHandle + + /*! \internal + The selection handle. + \since QtQuick.Controls.Styles 1.3 + + The parent of the handle is positioned to the top left corner of + the first selected character. The interactive area is determined + by the geometry of the handle delegate. + + The following signals and read-only properties are available within the scope + of the handle delegate: + \table + \row \li \b {styleData.activated()} [signal] \li Emitted when the handle is activated ie. the editor is clicked. + \row \li \b {styleData.pressed} : bool \li Whether the handle is pressed. + \row \li \b {styleData.position} : int \li The character position of the handle. + \row \li \b {styleData.lineHeight} : real \li The height of the line the handle is on. + \row \li \b {styleData.hasSelection} : bool \li Whether the editor has selected text. + \endtable + */ + property Component __selectionHandle + + /*! \internal + The cursor delegate. + \since QtQuick.Controls.Styles 1.3 + */ + property Component __cursorDelegate +} diff --git a/deployment_test/QtQuick/Controls/Styles/Base/ComboBoxStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Base/ComboBoxStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..f0ea9645615a5c2964cd575c14d5b250967b0147 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/ComboBoxStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/CommonStyleHelper.qml b/deployment_test/QtQuick/Controls/Styles/Base/CommonStyleHelper.qml new file mode 100644 index 0000000000000000000000000000000000000000..5deeb3519943635d78dc2b32659034834a577d42 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Base/CommonStyleHelper.qml @@ -0,0 +1,59 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Extras module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 + +QtObject { + property Item control + + property color buttonColorUpTop: "#e3e3e3" + property color buttonColorUpBottom: "#b3b3b3" + property color buttonColorDownTop: "#d3d3d3" + property color buttonColorDownBottom: "#939393" + property color textColorUp: "#4e4e4e" + property color textColorDown: "#303030" + property color textRaisedColorUp: "#ffffff" + property color textRaisedColorDown: "#e3e3e3" + property color offColor: "#ff0000" + property color offColorShine: "#ff6666" + property color onColor: "#00cc00" + property color onColorShine: "#66ff66" + property color inactiveColor: "#1f1f1f" + property color inactiveColorShine: "#666666" +} diff --git a/deployment_test/QtQuick/Controls/Styles/Base/CommonStyleHelper.qmlc b/deployment_test/QtQuick/Controls/Styles/Base/CommonStyleHelper.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..c0ce2efcbce5a1983accb78ed2846dc02950ad1d Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/CommonStyleHelper.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/DelayButtonStyle.qml b/deployment_test/QtQuick/Controls/Styles/Base/DelayButtonStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..00a1716a57fb94689fbe3d4a6624577b93844cac --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Base/DelayButtonStyle.qml @@ -0,0 +1,230 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Extras module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtGraphicalEffects 1.0 +import QtQuick.Controls.Styles 1.4 +import QtQuick.Extras 1.4 +import QtQuick.Extras.Private.CppUtils 1.1 + +/*! + \qmltype DelayButtonStyle + \inqmlmodule QtQuick.Controls.Styles + \since 5.5 + \ingroup controlsstyling + \brief Provides custom styling for DelayButton. + + You can create a custom DelayButton by replacing the following delegates: + \list + \li \l foreground + \li \l {ButtonStyle::}{label} + \endlist +*/ + +CircularButtonStyle { + id: delayButtonStyle + + /*! + The \l DelayButton that this style is attached to. + */ + readonly property DelayButton control: __control + + /*! + The gradient of the progress bar around the button. + */ + property Gradient progressBarGradient: Gradient { + GradientStop { + position: 0 + color: "#ff6666" + } + GradientStop { + position: 1 + color: "#ff0000" + } + } + + /*! + The color of the drop shadow under the progress bar. + */ + property color progressBarDropShadowColor: "#ff6666" + + background: Item { + implicitWidth: __buttonHelper.implicitWidth + implicitHeight: __buttonHelper.implicitHeight + + Canvas { + id: backgroundCanvas + anchors.fill: parent + + Connections { + target: control + function onPressedChanged() { backgroundCanvas.requestPaint() } + function onCheckedChanged() { backgroundCanvas.requestPaint() } + } + + onPaint: { + var ctx = getContext("2d"); + __buttonHelper.paintBackground(ctx); + } + } + } + + /*! + The foreground of the button. + + The progress bar is drawn here. + */ + property Component foreground: Item { + id: foregroundItem + + state: "normal" + states: [ + State { + name: "normal" + + PropertyChanges { + target: foregroundItem + opacity: 1 + } + }, + State { + name: "activated" + } + ] + + transitions: [ + Transition { + from: "normal" + to: "activated" + SequentialAnimation { + loops: Animation.Infinite + + NumberAnimation { + target: foregroundItem + property: "opacity" + from: 0.8 + to: 0 + duration: 500 + easing.type: Easing.InOutSine + } + NumberAnimation { + target: foregroundItem + property: "opacity" + from: 0 + to: 0.8 + duration: 500 + easing.type: Easing.InOutSine + } + } + } + ] + + Connections { + target: control + function onActivated() { state = "activated" } + function onCheckedChanged() { if (!control.checked) state = "normal" } + } + + CircularProgressBar { + id: progressBar + visible: false + width: Math.min(parent.width, parent.height) + progressBarDropShadow.radius * 3 * 2 + height: width + anchors.centerIn: parent + antialiasing: true + barWidth: __buttonHelper.outerArcLineWidth + inset: progressBarDropShadow.radius * 3 + minimumValueAngle: -180 + maximumValueAngle: 180 + + progress: control.progress + + // TODO: Add gradient property if/when we drop support for building with 5.1. + function updateGradient() { + clearStops(); + for (var i = 0; i < progressBarGradient.stops.length; ++i) { + addStop(progressBarGradient.stops[i].position, progressBarGradient.stops[i].color); + } + } + + Component.onCompleted: updateGradient() + + Connections { + target: delayButtonStyle + function onProgressBarGradientChanged() { progressBar.updateGradient() } + } + } + + DropShadow { + id: progressBarDropShadow + anchors.fill: progressBar + // QTBUG-33747 +// cached: !control.pressed + color: progressBarDropShadowColor + source: progressBar + } + } + + panel: Item { + implicitWidth: backgroundLoader.implicitWidth + implicitHeight: backgroundLoader.implicitHeight + + Loader { + id: backgroundLoader + anchors.fill: parent + sourceComponent: background + } + + Loader { + id: foregroundLoader + anchors.fill: parent + sourceComponent: foreground + } + + Loader { + id: labelLoader + sourceComponent: label + anchors.fill: parent + anchors.leftMargin: padding.left + anchors.topMargin: padding.top + anchors.rightMargin: padding.right + anchors.bottomMargin: padding.bottom + } + } +} diff --git a/deployment_test/QtQuick/Controls/Styles/Base/DelayButtonStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Base/DelayButtonStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..164586348259133117043f65e9da1aa5f5911de3 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/DelayButtonStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/DialStyle.qml b/deployment_test/QtQuick/Controls/Styles/Base/DialStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..95172455ec5c9d72891bbddbd2a85fc05718049f --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Base/DialStyle.qml @@ -0,0 +1,359 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Extras module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 +import QtQuick.Controls.Private 1.0 +import QtQuick.Extras 1.4 +import QtQuick.Extras.Private 1.0 +import QtQuick.Extras.Private.CppUtils 1.0 + +/*! + \qmltype DialStyle + \inqmlmodule QtQuick.Controls.Styles + \since 5.5 + \ingroup controlsstyling + \brief Provides custom styling for Dial. + + You can create a custom dial by replacing the following delegates: + \list + \li \l background + \endlist +*/ + +Style { + id: dialStyle + + /*! + The \l Dial that this style is attached to. + */ + readonly property Dial control: __control + + /*! + The distance from the center of the dial to the outer edge of the dial. + + This property is useful for determining the size of the various + components of the style, in order to ensure that they are scaled + proportionately when the dial is resized. + */ + readonly property real outerRadius: Math.min(control.height, control.width) / 2 + + /*! + The distance in pixels from the outside of the dial (outerRadius) + to the center of the handle. + */ + property real handleInset: (__tickmarkRadius * 4) + ((__handleRadius * 2) * 0.55) + + /*! + The interval at which tickmarks are displayed. + + For example, if this property is set to \c 10, + control.minimumValue to \c 0, and control.maximumValue to \c 100, + the tickmarks displayed will be 0, 10, 20, etc., to 100, along + the circumference of the dial. + */ + property real tickmarkStepSize: 1 + + /*! + The distance in pixels from the outside of the dial (outerRadius) at + which the outermost point of the tickmark line is drawn. + */ + property real tickmarkInset: 0 + + + /*! + The amount of tickmarks displayed by the dial, calculated from + \l tickmarkStepSize and the control's + \l {Dial::minimumValue}{minimumValue} and + \l {Dial::maximumValue}{maximumValue}. + + \sa minorTickmarkCount + */ + readonly property int tickmarkCount: control.__panel.circularTickmarkLabel.tickmarkCount + + /*! + The amount of minor tickmarks between each tickmark. + + \sa tickmarkCount + */ + property int minorTickmarkCount: 0 + + /*! + The distance in pixels from the outside of the dial (outerRadius) at + which the outermost point of the minor tickmark line is drawn. + */ + property real minorTickmarkInset: 0 + + /*! + The distance in pixels from the outside of the dial (outerRadius) at + which the center of the value marker text is drawn. + */ + property real labelInset: 0 + + /*! + The interval at which tickmark labels are displayed. + + For example, if this property is set to \c 10 (the default), + control.minimumValue to \c 0, and control.maximumValue to \c 100, the + tickmark labels displayed will be 0, 10, 20, etc., to 100, + along the circumference of the dial. + */ + property real labelStepSize: tickmarkStepSize + + /*! + The amount of tickmark labels displayed by the dial, calculated from + \l labelStepSize and the control's + \l {Dial::minimumValue}{minimumValue} and + \l {Dial::maximumValue}{maximumValue}. + + \sa tickmarkCount, minorTickmarkCount + */ + readonly property int labelCount: control.__panel.circularTickmarkLabel.labelCount + + /*! \qmlmethod real DialStyle::valueToAngle(real value) + Returns \a value as an angle in degrees. + + This function is useful for custom drawing or positioning of items in + the style's components. For example, it can be used to calculate the + angles at which to draw an arc around the dial indicating the safe + range of values. + */ + function valueToAngle(value) { + return control.__panel.circularTickmarkLabel.valueToAngle(value); + } + + /*! \internal */ + readonly property real __tickmarkRadius: outerRadius * 0.06 + + /*! \internal */ + readonly property real __handleRadius: outerRadius * 0.15 + + /*! + \internal + + This property determines whether it is possible to change the value of + the dial simply by pressing/tapping. + + If \c false, the user must drag to rotate the dial and hence change the + value. + + This property is useful for touch devices, where it is easy to + accidentally tap while flicking, for example. + */ + property bool __dragToSet: Settings.hasTouchScreen && Settings.isMobile + + /*! + The background of the dial. + + The implicit size of the dial is taken from this component. + */ + property Component background: Item { + id: backgroundItem + implicitWidth: backgroundHelper.implicitWidth + implicitHeight: backgroundHelper.implicitHeight + + CircularButtonStyleHelper { + id: backgroundHelper + control: dialStyle.control + property color zeroMarkerColor: "#a8a8a8" + property color zeroMarkerColorTransparent: "transparent" + property real zeroMarkerLength: outerArcLineWidth * 1.25 + property real zeroMarkerWidth: outerArcLineWidth * 0.3 + + smallestAxis: Math.min(backgroundItem.width, backgroundItem.height) - __tickmarkRadius * 4 + } + + Canvas { + id: backgroundCanvas + anchors.fill: parent + + readonly property real xCenter: width / 2 + readonly property real yCenter: height / 2 + + onPaint: { + var ctx = getContext("2d"); + backgroundHelper.paintBackground(ctx); + } + } + } + + /*! + The handle of the dial. + + The handle is automatically positioned within the dial, based on the + \l handleInset and the implicit width and height of the handle itself. + */ + property Component handle: Canvas { + implicitWidth: __handleRadius * 2 + implicitHeight: __handleRadius * 2 + + HandleStyleHelper { + id: handleHelper + } + + onPaint: { + var ctx = getContext("2d"); + handleHelper.paintHandle(ctx, 1, 1, width - 2, height - 2); + } + } + + /*! + This component defines each individual tickmark. The position of each + tickmark is already set; only the + \l {Item::implicitWidth}{implicitWidth} and + \l {Item::implicitHeight}{implicitHeight} need to be specified. + + Each instance of this component has access to the following properties: + + \table + \row \li \c {readonly property int} \b styleData.index + \li The index of this tickmark. + \row \li \c {readonly property real} \b styleData.value + \li The value that this tickmark represents. + \endtable + */ + property Component tickmark: Rectangle { + implicitWidth: outerRadius * 0.015 + (styleData.index === 0 || styleData.index === tickmarkCount ? 1 : (styleData.index) / tickmarkCount) * __tickmarkRadius * 0.75 + implicitHeight: implicitWidth + radius: height / 2 + color: styleData.index === 0 ? "transparent" : Qt.rgba(0, 0, 0, 0.266) + antialiasing: true + border.width: styleData.index === 0 ? Math.max(1, outerRadius * 0.0075) : 0 + border.color: Qt.rgba(0, 0, 0, 0.266) + } + + /*! + This component defines each individual minor tickmark. The position of each + minor tickmark is already set; only the + \l {Item::implicitWidth}{implicitWidth} and + \l {Item::implicitHeight}{implicitHeight} need to be specified. + + Each instance of this component has access to the following properties: + + \table + \row \li \c {readonly property int} \b styleData.index + \li The index of this tickmark. + \row \li \c {readonly property real} \b styleData.value + \li The value that this tickmark represents. + \endtable + + By default, no minor tickmark is defined. + */ + property Component minorTickmark + + /*! + This defines the text of each tickmark label on the dial. + + Each instance of this component has access to the following properties: + + \table + \row \li \c {readonly property int} \b styleData.index + \li The index of this label. + \row \li \c {readonly property real} \b styleData.value + \li The value that this label represents. + \endtable + + By default, no label is defined. + */ + property Component tickmarkLabel + + /*! \internal */ + property Component panel: Item { + implicitWidth: backgroundLoader.implicitWidth + implicitHeight: backgroundLoader.implicitHeight + + property alias background: backgroundLoader.item + property alias circularTickmarkLabel: circularTickmarkLabel_ + + Loader { + id: backgroundLoader + sourceComponent: dialStyle.background + width: outerRadius * 2 + height: width + anchors.centerIn: parent + } + + Loader { + id: handleLoader + sourceComponent: dialStyle.handle + x: backgroundLoader.x + __pos.x - width / 2 + y: backgroundLoader.y + __pos.y - height / 2 + + readonly property point __pos: { + var radians = 0; + if (control.__wrap) { + radians = (control.value - control.minimumValue) / + (control.maximumValue - control.minimumValue) * + (MathUtils.pi2) + backgroundHelper.zeroAngle; + } else { + radians = -(Math.PI * 8 - (control.value - control.minimumValue) * 10 * + Math.PI / (control.maximumValue - control.minimumValue)) / 6; + } + + return MathUtils.centerAlongCircle(backgroundLoader.width / 2, backgroundLoader.height / 2, + 0, 0, radians, outerRadius - handleInset) + } + } + + CircularTickmarkLabel { + id: circularTickmarkLabel_ + anchors.fill: backgroundLoader + + minimumValue: control.minimumValue + maximumValue: control.maximumValue + stepSize: control.stepSize + tickmarksVisible: control.tickmarksVisible + minimumValueAngle: -150 + maximumValueAngle: 150 + tickmarkStepSize: dialStyle.tickmarkStepSize + tickmarkInset: dialStyle.tickmarkInset + minorTickmarkCount: dialStyle.minorTickmarkCount + minorTickmarkInset: dialStyle.minorTickmarkInset + labelInset: dialStyle.labelInset + labelStepSize: dialStyle.labelStepSize + + style: CircularTickmarkLabelStyle { + tickmark: dialStyle.tickmark + minorTickmark: dialStyle.minorTickmark + tickmarkLabel: dialStyle.tickmarkLabel + } + } + } +} diff --git a/deployment_test/QtQuick/Controls/Styles/Base/DialStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Base/DialStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..4999b68919aa47ac12abc203ca964a54aac962c8 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/DialStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/FocusFrameStyle.qml b/deployment_test/QtQuick/Controls/Styles/Base/FocusFrameStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..3db24796c837daf40ef3583adc030684ac777126 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Base/FocusFrameStyle.qml @@ -0,0 +1,51 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype FocusFrameStyle + \internal + \inqmlmodule QtQuick.Controls.Styles +*/ +Item { + property int margin: -3 +} diff --git a/deployment_test/QtQuick/Controls/Styles/Base/FocusFrameStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Base/FocusFrameStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..a8804c55acbcce4a9d44004aa11fe3c138d0b71c Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/FocusFrameStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/GaugeStyle.qml b/deployment_test/QtQuick/Controls/Styles/Base/GaugeStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..4ad1f7efc2a541f8229a36ec79673ff40143c010 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Base/GaugeStyle.qml @@ -0,0 +1,544 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Extras module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 +import QtQuick.Controls.Private 1.0 +import QtQuick.Extras 1.4 +import QtQuick.Extras.Private 1.0 + +/*! + \qmltype GaugeStyle + \inqmlmodule QtQuick.Controls.Styles + \since 5.5 + \ingroup controlsstyling + \brief Provides custom styling for Gauge. + + You can create a custom gauge by replacing the following delegates: + \list + \li \l background + \li valueBar + \li tickmarkLabel + \endlist + + Below, you'll find an example of how to create a temperature gauge that + changes color as its value increases: + + \code + import QtQuick 2.2 + import QtQuick.Controls 1.4 + import QtQuick.Controls.Styles 1.4 + import QtQuick.Extras 1.4 + + Rectangle { + width: 80 + height: 200 + + Timer { + running: true + repeat: true + interval: 2000 + onTriggered: gauge.value = gauge.value == gauge.maximumValue ? 5 : gauge.maximumValue + } + + Gauge { + id: gauge + anchors.fill: parent + anchors.margins: 10 + + value: 5 + Behavior on value { + NumberAnimation { + duration: 1000 + } + } + + style: GaugeStyle { + valueBar: Rectangle { + implicitWidth: 16 + color: Qt.rgba(gauge.value / gauge.maximumValue, 0, 1 - gauge.value / gauge.maximumValue, 1) + } + } + } + } + \endcode + + \image gauge-temperature.png + The gauge displaying values at various points during the animation. + + \sa {Styling Gauge} +*/ + +Style { + id: gaugeStyle + + /*! + The \l Gauge that this style is attached to. + */ + readonly property Gauge control: __control + + /*! + This property holds the value displayed by the gauge as a position in + pixels. + + It is useful for custom styling. + */ + readonly property real valuePosition: control.__panel.valuePosition + + /*! + The background of the gauge, displayed behind the \l valueBar. + + By default, no background is defined. + */ + property Component background + + /*! + Each tickmark displayed by the gauge. + + To set the size of the tickmarks, specify an + \l {Item::implicitWidth}{implicitWidth} and + \l {Item::implicitHeight}{implicitHeight}. + + The widest tickmark will determine the space set aside for all + tickmarks. For this reason, the \c implicitWidth of each tickmark + should be greater than or equal to that of each minor tickmark. If you + need minor tickmarks to have greater widths than the major tickmarks, + set the larger width in a child item of the \l minorTickmark component. + + For layouting reasons, each tickmark should have the same + \c implicitHeight. If different heights are needed for individual + tickmarks, specify those heights in a child item of the component. + + In the example below, we decrease the height of the tickmarks: + + \code + tickmark: Item { + implicitWidth: 18 + implicitHeight: 1 + + Rectangle { + color: "#c8c8c8" + anchors.fill: parent + anchors.leftMargin: 3 + anchors.rightMargin: 3 + } + } + \endcode + + \image gauge-tickmark-example.png Gauge tickmark example + + Each instance of this component has access to the following properties: + + \table + \row \li \c {readonly property int} \b styleData.index + \li The index of this tickmark. + \row \li \c {readonly property real} \b styleData.value + \li The value that this tickmark represents. + \row \li \c {readonly property real} \b styleData.valuePosition + \li The value that this tickmark represents as a position in + pixels, with 0 being at the bottom of the gauge. + \endtable + + \sa minorTickmark + */ + property Component tickmark: Item { + implicitWidth: Math.round(TextSingleton.height * 1.1) + implicitHeight: Math.max(2, Math.round(TextSingleton.height * 0.1)) + + Rectangle { + color: "#c8c8c8" + anchors.fill: parent + anchors.leftMargin: Math.round(TextSingleton.implicitHeight * 0.2) + anchors.rightMargin: Math.round(TextSingleton.implicitHeight * 0.2) + } + } + + /*! + Each minor tickmark displayed by the gauge. + + To set the size of the minor tickmarks, specify an + \l {Item::implicitWidth}{implicitWidth} and + \l {Item::implicitHeight}{implicitHeight}. + + For layouting reasons, each minor tickmark should have the same + \c implicitHeight. If different heights are needed for individual + tickmarks, specify those heights in a child item of the component. + + In the example below, we decrease the width of the minor tickmarks: + + \code + minorTickmark: Item { + implicitWidth: 8 + implicitHeight: 1 + + Rectangle { + color: "#cccccc" + anchors.fill: parent + anchors.leftMargin: 2 + anchors.rightMargin: 4 + } + } + \endcode + + \image gauge-minorTickmark-example.png Gauge minorTickmark example + + Each instance of this component has access to the following property: + + \table + \row \li \c {readonly property int} \b styleData.index + \li The index of this minor tickmark. + \row \li \c {readonly property real} \b styleData.value + \li The value that this minor tickmark represents. + \row \li \c {readonly property real} \b styleData.valuePosition + \li The value that this minor tickmark represents as a + position in pixels, with 0 being at the bottom of the + gauge. + \endtable + + \sa tickmark + */ + property Component minorTickmark: Item { + implicitWidth: Math.round(TextSingleton.implicitHeight * 0.65) + implicitHeight: Math.max(1, Math.round(TextSingleton.implicitHeight * 0.05)) + + Rectangle { + color: "#c8c8c8" + anchors.fill: parent + anchors.leftMargin: control.__tickmarkAlignment === Qt.AlignBottom || control.__tickmarkAlignment === Qt.AlignRight + ? Math.max(3, Math.round(TextSingleton.implicitHeight * 0.2)) + : 0 + anchors.rightMargin: control.__tickmarkAlignment === Qt.AlignBottom || control.__tickmarkAlignment === Qt.AlignRight + ? 0 + : Math.max(3, Math.round(TextSingleton.implicitHeight * 0.2)) + } + } + + /*! + This defines the text of each tickmark label on the gauge. + + Each instance of this component has access to the following properties: + + \table + \row \li \c {readonly property int} \b styleData.index + \li The index of this label. + \row \li \c {readonly property real} \b styleData.value + \li The value that this label represents. + \endtable + */ + property Component tickmarkLabel: Text { + text: control.formatValue(styleData.value) + font: control.font + color: "#c8c8c8" + antialiasing: true + } + + /*! + The bar that represents the value of the gauge. + + To height of the value bar is automatically resized according to + \l {Gauge::value}{value}, and does not need to be specified. + + When a custom valueBar is defined, its + \l {Item::implicitWidth}{implicitWidth} property must be set. + */ + property Component valueBar: Rectangle { + color: "#00bbff" + implicitWidth: TextSingleton.implicitHeight + } + + /*! + The bar that represents the foreground of the gauge. + + This component is drawn above every other component. + */ + property Component foreground: Canvas { + readonly property real xCenter: width / 2 + readonly property real yCenter: height / 2 + property real shineLength: height * 0.95 + + onPaint: { + var ctx = getContext("2d"); + ctx.reset(); + + ctx.beginPath(); + ctx.rect(0, 0, width, height); + + var gradient = ctx.createLinearGradient(0, yCenter, width, yCenter); + + gradient.addColorStop(0, Qt.rgba(1, 1, 1, 0.08)); + gradient.addColorStop(1, Qt.rgba(1, 1, 1, 0.20)); + ctx.fillStyle = gradient; + ctx.fill(); + } + } + + /*! \internal */ + property Component panel: Item { + id: panelComponent + implicitWidth: control.orientation === Qt.Vertical ? tickmarkLabelBoundsWidth + rawBarWidth : TextSingleton.height * 14 + implicitHeight: control.orientation === Qt.Vertical ? TextSingleton.height * 14 : tickmarkLabelBoundsWidth + rawBarWidth + + readonly property int tickmarkCount: (control.maximumValue - control.minimumValue) / control.tickmarkStepSize + 1 + readonly property real tickmarkSpacing: (tickmarkLabelBounds.height - tickmarkWidth * tickmarkCount) / (tickmarkCount - 1) + + property real tickmarkLength: tickmarkColumn.width + // Can't deduce this from the column, so we set it from within the first tickmark delegate loader. + property real tickmarkWidth: 2 + + readonly property real tickmarkOffset: control.orientation === Qt.Vertical ? control.__hiddenText.height / 2 : control.__hiddenText.width / 2 + + readonly property real minorTickmarkStep: control.tickmarkStepSize / (control.minorTickmarkCount + 1); + + /*! + Returns the marker text that should be displayed based on + \a markerPos (\c 0 to \c 1.0). + */ + function markerTextFromPos(markerPos) { + return markerPos * (control.maximumValue - control.minimumValue) + control.minimumValue; + } + + readonly property real rawBarWidth: valueBarLoader.item.implicitWidth + readonly property real barLength: (control.orientation === Qt.Vertical ? control.height : control.width) - (tickmarkOffset * 2 - 2) + + readonly property real tickmarkLabelBoundsWidth: tickmarkLength + (control.orientation === Qt.Vertical ? control.__hiddenText.width : control.__hiddenText.height) + readonly property int valuePosition: valueBarLoader.height + + Item { + id: container + + width: control.orientation === Qt.Vertical ? parent.width : parent.height + height: control.orientation === Qt.Vertical ? parent.height : parent.width + rotation: control.orientation === Qt.Horizontal ? 90 : 0 + transformOrigin: Item.Center + anchors.centerIn: parent + + Item { + id: valueBarItem + + x: control.__tickmarkAlignment === Qt.AlignLeft || control.__tickmarkAlignment === Qt.AlignTop ? tickmarkLabelBounds.x + tickmarkLabelBounds.width : 0 + width: rawBarWidth + height: barLength + anchors.verticalCenter: parent.verticalCenter + + Loader { + id: backgroundLoader + sourceComponent: background + anchors.fill: parent + } + + Loader { + id: valueBarLoader + sourceComponent: valueBar + + readonly property real valueAsPercentage: (control.value - control.minimumValue) / (control.maximumValue - control.minimumValue) + + y: Math.round(parent.height - height) + height: Math.round(valueAsPercentage * parent.height) + } + } + Item { + id: tickmarkLabelBounds + + x: control.__tickmarkAlignment === Qt.AlignLeft || control.__tickmarkAlignment === Qt.AlignTop ? 0 : valueBarItem.width + width: tickmarkLabelBoundsWidth + height: barLength + anchors.verticalCenter: parent.verticalCenter + // We want our items to be laid out from bottom to top, but Column can't do that, so we flip + // the whole item containing the tickmarks and labels vertically. Then, we flip each tickmark + // and label back again. + transform: Rotation { + axis.x: 1 + axis.y: 0 + axis.z: 0 + origin.x: tickmarkLabelBounds.width / 2 + origin.y: tickmarkLabelBounds.height / 2 + angle: 180 + } + + Column { + id: tickmarkColumn + x: control.__tickmarkAlignment === Qt.AlignRight || control.__tickmarkAlignment === Qt.AlignBottom ? 0 : tickmarkLabelBounds.width - width + spacing: tickmarkSpacing + anchors.verticalCenter: parent.verticalCenter + + Repeater { + id: tickmarkRepeater + model: tickmarkCount + delegate: Loader { + id: tickmarkDelegateLoader + + sourceComponent: gaugeStyle.tickmark + transform: Rotation { + axis.x: 1 + axis.y: 0 + axis.z: 0 + origin.x: tickmarkDelegateLoader.width / 2 + origin.y: tickmarkDelegateLoader.height / 2 + angle: 180 + } + + onHeightChanged: { + if (index == 0) + tickmarkWidth = height; + } + + readonly property int __index: index + property QtObject styleData: QtObject { + readonly property alias index: tickmarkDelegateLoader.__index + readonly property real value: (index / (tickmarkCount - 1)) * (control.maximumValue - control.minimumValue) + control.minimumValue + readonly property int valuePosition: Math.round(tickmarkDelegateLoader.y) + } + } + } + } + + // Doesn't need to be in a column, since we assume that the major tickmarks will always be longer than us. + Repeater { + id: minorTickmarkRepeater + model: (tickmarkCount - 1) * control.minorTickmarkCount + delegate: Loader { + id: minorTickmarkDelegateLoader + + x: control.__tickmarkAlignment === Qt.AlignRight || control.__tickmarkAlignment === Qt.AlignBottom ? 0 : tickmarkLabelBounds.width - width + y: { + var tickmarkWidthOffset = Math.floor(index / control.minorTickmarkCount) * tickmarkWidth + tickmarkWidth; + var relativePosition = (index % control.minorTickmarkCount + 1) * (tickmarkSpacing / (control.minorTickmarkCount + 1)); + var clusterOffset = Math.floor(index / control.minorTickmarkCount) * tickmarkSpacing; + // We assume that each minorTickmark's height is the same. + return clusterOffset + tickmarkWidthOffset + relativePosition - height / 2; + } + + transform: Rotation { + axis.x: 1 + axis.y: 0 + axis.z: 0 + origin.x: minorTickmarkDelegateLoader.width / 2 + origin.y: minorTickmarkDelegateLoader.height / 2 + angle: 180 + } + + sourceComponent: gaugeStyle.minorTickmark + + readonly property int __index: index + property QtObject styleData: QtObject { + readonly property alias index: minorTickmarkDelegateLoader.__index + readonly property real value: { + var tickmarkIndex = Math.floor(index / control.minorTickmarkCount); + return index * minorTickmarkStep + minorTickmarkStep * tickmarkIndex + minorTickmarkStep + control.minimumValue; + } + readonly property int valuePosition: Math.round(minorTickmarkDelegateLoader.y) + } + } + } + + Item { + id: tickmarkLabelItem + x: control.__tickmarkAlignment === Qt.AlignRight || control.__tickmarkAlignment === Qt.AlignBottom + ? tickmarkLength + : tickmarkLabelBounds.width - tickmarkLength - width + width: control.__hiddenText.width + // Use the bar height instead of the container's, as the labels seem to be translated by 1 when we + // flip the control vertically, and this fixes that. + height: parent.height + anchors.verticalCenter: parent.verticalCenter + + Repeater { + id: tickmarkTextRepeater + model: tickmarkCount + delegate: Item { + x: { + if (control.orientation === Qt.Vertical) + return 0; + + // Align the text to the edge of the tickmarks. + return ((width - height) / 2) * (control.__tickmarkAlignment === Qt.AlignBottom ? -1 : 1); + } + y: index * labelDistance - height / 2 + + width: control.__hiddenText.width + height: control.__hiddenText.height + + transformOrigin: Item.Center + rotation: control.orientation === Qt.Vertical ? 0 : 90 + + readonly property real labelDistance: tickmarkLabelBounds.height / (tickmarkCount - 1) + + Loader { + id: tickmarkTextRepeaterDelegate + + x: { + if (control.orientation === Qt.Horizontal) { + return parent.width / 2 - width / 2; + } + + return control.__tickmarkAlignment === Qt.AlignRight || control.__tickmarkAlignment === Qt.AlignBottom + ? 0 + : parent.width - width; + } + + transform: Rotation { + axis.x: 1 + axis.y: 0 + axis.z: 0 + origin.x: tickmarkTextRepeaterDelegate.width / 2 + origin.y: tickmarkTextRepeaterDelegate.height / 2 + angle: 180 + } + + sourceComponent: tickmarkLabel + + readonly property int __index: index + property QtObject styleData: QtObject { + readonly property alias index: tickmarkTextRepeaterDelegate.__index + readonly property real value: markerTextFromPos(index / (tickmarkTextRepeater.count - 1)) + } + } + } + } + } + } + Loader { + id: foregroundLoader + sourceComponent: foreground + anchors.fill: valueBarItem + } + } + } +} diff --git a/deployment_test/QtQuick/Controls/Styles/Base/GaugeStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Base/GaugeStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..d2fc21d966ca5ce8ddbd9ca1ccb86d38b4655538 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/GaugeStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/GroupBoxStyle.qml b/deployment_test/QtQuick/Controls/Styles/Base/GroupBoxStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..061a8069b5f11d2064ea9c79303c9f8fc7e750cd --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Base/GroupBoxStyle.qml @@ -0,0 +1,143 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype GroupBoxStyle + \internal + \inqmlmodule QtQuick.Controls.Styles + \ingroup controlsstyling + \since 5.1 +*/ +Style { + + /*! The \l GroupBox this style is attached to. */ + readonly property GroupBox control: __control + + /*! The margin from the content item to the groupbox. */ + padding { + top: (control.title.length > 0 || control.checkable ? TextSingleton.implicitHeight : 0) + 10 + left: 8 + right: 8 + bottom: 6 + } + + /*! The title text color. */ + property color textColor: SystemPaletteSingleton.text(control.enabled) + + /*! The check box. */ + property Component checkbox: Item { + implicitWidth: 18 + implicitHeight: 18 + BorderImage { + anchors.fill: parent + source: "images/editbox.png" + border.top: 6 + border.bottom: 6 + border.left: 6 + border.right: 6 + } + Rectangle { + height: 16 + width: 16 + antialiasing: true + visible: control.checked + color: "#666" + radius: 1 + anchors.margins: 4 + anchors.fill: parent + anchors.topMargin: 3 + anchors.bottomMargin: 5 + border.color: "#222" + opacity: control.enabled ? 1 : 0.5 + Rectangle { + anchors.fill: parent + anchors.margins: 1 + color: "transparent" + border.color: "#33ffffff" + } + } + BorderImage { + anchors.fill: parent + anchors.margins: -1 + source: "images/focusframe.png" + visible: control.activeFocus + border.left: 4 + border.right: 4 + border.top: 4 + border.bottom: 4 + } + } + + /*! The groupbox frame. */ + property Component panel: Item { + anchors.fill: parent + Loader { + id: checkboxloader + anchors.left: parent.left + sourceComponent: control.checkable ? checkbox : null + anchors.verticalCenter: label.verticalCenter + width: item ? item.implicitWidth : 0 + } + + Text { + id: label + anchors.top: parent.top + anchors.left: checkboxloader.right + anchors.margins: 4 + text: control.title + color: textColor + renderType: Settings.isMobile ? Text.QtRendering : Text.NativeRendering + } + + BorderImage { + anchors.fill: parent + anchors.topMargin: padding.top - 7 + source: "images/groupbox.png" + border.left: 4 + border.right: 4 + border.top: 4 + border.bottom: 4 + visible: !control.flat + } + } +} diff --git a/deployment_test/QtQuick/Controls/Styles/Base/GroupBoxStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Base/GroupBoxStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..a92fe66de7ef72e7484b407051129e8f17b0cc2a Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/GroupBoxStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/HandleStyle.qml b/deployment_test/QtQuick/Controls/Styles/Base/HandleStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..0713c9ff66d44cd32ec37760a6553c7817bfa5d9 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Base/HandleStyle.qml @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Extras module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls.Private 1.0 +import QtQuick.Extras 1.4 + +Style { + id: handleStyle + property alias handleColorTop: __helper.handleColorTop + property alias handleColorBottom: __helper.handleColorBottom + property alias handleColorBottomStop: __helper.handleColorBottomStop + + HandleStyleHelper { + id: __helper + } + + property Component handle: Item { + implicitWidth: 50 + implicitHeight: 50 + + Canvas { + id: handleCanvas + anchors.fill: parent + + onPaint: { + var ctx = getContext("2d"); + __helper.paintHandle(ctx); + } + } + } + + property Component panel: Item { + Loader { + id: handleLoader + sourceComponent: handle + anchors.fill: parent + } + } +} diff --git a/deployment_test/QtQuick/Controls/Styles/Base/HandleStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Base/HandleStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..2dff175070a4ddc19354ff772e0b31f77f3db005 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/HandleStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/HandleStyleHelper.qml b/deployment_test/QtQuick/Controls/Styles/Base/HandleStyleHelper.qml new file mode 100644 index 0000000000000000000000000000000000000000..78059bfe8787f14ecc801ab67244aae5e95beecf --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Base/HandleStyleHelper.qml @@ -0,0 +1,94 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Extras module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 + +QtObject { + id: handleStyleHelper + + property color handleColorTop: "#969696" + property color handleColorBottom: Qt.rgba(0.9, 0.9, 0.9, 0.298) + property real handleColorBottomStop: 0.7 + + property color handleRingColorTop: "#b0b0b0" + property color handleRingColorBottom: "transparent" + + /*! + If \a ctx is the only argument, this is equivalent to calling + paintHandle(\c ctx, \c 0, \c 0, \c ctx.canvas.width, \c ctx.canvas.height). + */ + function paintHandle(ctx, handleX, handleY, handleWidth, handleHeight) { + ctx.reset(); + + if (handleWidth < 0) + return; + + if (arguments.length == 1) { + handleX = 0; + handleY = 0; + handleWidth = ctx.canvas.width; + handleHeight = ctx.canvas.height; + } + + ctx.beginPath(); + var gradient = ctx.createRadialGradient(handleX, handleY, 0, + handleX, handleY, handleWidth * 1.5); + gradient.addColorStop(0, handleColorTop); + gradient.addColorStop(handleColorBottomStop, handleColorBottom); + ctx.ellipse(handleX, handleY, handleWidth, handleHeight); + ctx.fillStyle = gradient; + ctx.fill(); + + /* Draw the ring gradient around the handle. */ + // Clip first, so we only draw inside the ring. + ctx.beginPath(); + ctx.ellipse(handleX, handleY, handleWidth, handleHeight); + ctx.ellipse(handleX + 2, handleY + 2, handleWidth - 4, handleHeight - 4); + ctx.clip(); + + ctx.beginPath(); + gradient = ctx.createLinearGradient(handleX + handleWidth / 2, handleY, + handleX + handleWidth / 2, handleY + handleHeight); + gradient.addColorStop(0, handleRingColorTop); + gradient.addColorStop(1, handleRingColorBottom); + ctx.ellipse(handleX, handleY, handleWidth, handleHeight); + ctx.fillStyle = gradient; + ctx.fill(); + } +} diff --git a/deployment_test/QtQuick/Controls/Styles/Base/HandleStyleHelper.qmlc b/deployment_test/QtQuick/Controls/Styles/Base/HandleStyleHelper.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..3a116ee3819d3dd996913ba3a99381e8a8b1fe41 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/HandleStyleHelper.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/MenuBarStyle.qml b/deployment_test/QtQuick/Controls/Styles/Base/MenuBarStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..ade34b0a0366f3719f6e43046e3a73f06f0ad9b9 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Base/MenuBarStyle.qml @@ -0,0 +1,131 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype MenuBarStyle + \inqmlmodule QtQuick.Controls.Styles + \since 5.3 + \ingroup controlsstyling + \brief Provides custom styling for MenuBar. + + \note Styling menu bars may not be supported on platforms using native menu bars + through their QPA plugin. +*/ + +Style { + id: root + + /*! + \qmlmethod string MenuBarStyle::formatMnemonic(string text, bool underline = false) + Returns a formatted string to render mnemonics for a given menu item \a text. + + The mnemonic character is prefixed by an ampersand in the original string. + + Passing \c true for \e underline will underline the mnemonic character (e.g., + \c formatMnemonic("&File", true) will return \c "<u>F</u>ile"). Passing \c false + for \a underline will return the plain text form (e.g., \c formatMnemonic("&File", false) + will return \c "File"). + + \sa Label + */ + function formatMnemonic(text, underline) { + return underline ? StyleHelpers.stylizeMnemonics(text) : StyleHelpers.removeMnemonics(text) + } + + /*! The background for the full menu bar. + + The background will be extended to the full containing window width. + Its height will always fit all of the menu bar items. The final size + will include the paddings. + */ + property Component background: Rectangle { + color: "#dcdcdc" + implicitHeight: 20 + } + + /*! The menu bar item. + + \target styleData properties + This item has to be configured using the \b styleData object which is in scope, + and contains the following read-only properties: + \table + \row \li \b {styleData.index} : int \li The index of the menu item in its menu. + \row \li \b {styleData.selected} : bool \li \c true if the menu item is selected. + \row \li \b {styleData.open} : bool \li \c true when the pull down menu is open. + \row \li \b {styleData.text} : string \li The menu bar item's text. + \row \li \b {styleData.underlineMnemonic} : bool \li When \c true, the style should underline the menu item's label mnemonic. + \endtable + + */ + property Component itemDelegate: Rectangle { + implicitWidth: text.width + 12 + implicitHeight: text.height + 4 + color: styleData.enabled && styleData.open ? "#49d" : "transparent" + + Text { + id: text + font: root.font + text: formatMnemonic(styleData.text, styleData.underlineMnemonic) + anchors.centerIn: parent + renderType: Settings.isMobile ? Text.QtRendering : Text.NativeRendering + color: styleData.open ? "white" : SystemPaletteSingleton.windowText(control.enabled && styleData.enabled) + } + } + + /*! The style component for the menubar's own menus and their submenus. + + \sa {MenuStyle} + */ + property Component menuStyle: MenuStyle { + font: root.font + } + + /*! + \since QtQuick.Controls.Styles 1.3 + The font of the control. + */ + property font font + + /*! \internal */ + property bool __isNative: true +} diff --git a/deployment_test/QtQuick/Controls/Styles/Base/MenuBarStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Base/MenuBarStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..d193fe0c3c4d6eaf884d6071f3589d4d620a89be Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/MenuBarStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/MenuStyle.qml b/deployment_test/QtQuick/Controls/Styles/Base/MenuStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..f40e0af7c583ad9443a2e52809a0a405bd3b098a --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Base/MenuStyle.qml @@ -0,0 +1,477 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Window 2.1 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype MenuStyle + \inqmlmodule QtQuick.Controls.Styles + \since 5.3 + \ingroup controlsstyling + \brief Provides custom styling for Menu. + + \target styleData properties + The \b styleData object contains the following read-only properties: + \table + \row \li \b {styleData.index} : int \li The index of the menu item in its menu. + \row \li \b {styleData.type} : enumeration \li The type of menu item. See below for possible values. + \row \li \b {styleData.selected} : bool \li \c true if the menu item is selected. + \row \li \b {styleData.pressed} : bool \li \c true if the menu item is pressed. Available since 5.4. + \row \li \b {styleData.text} : string \li The menu item's text, or title if it's a submenu. + \row \li \b {styleData.underlineMnemonic} : bool \li Whether the style should underline the menu item's label mnemonic. + \row \li \b {styleData.shortcut} : string \li The text for the menu item's shortcut. + \row \li \b {styleData.iconSource} : url \li The source URL to the menu item's icon. Undefined if it has no icon. + \row \li \b {styleData.enabled} : bool \li \c true if the menu item is enabled. + \row \li \b {styleData.checkable} : bool \li \c true if the menu item is checkable. + \row \li \b {styleData.exclusive} : bool \li \c true if the menu item is checkable, and it's part of an \l ExclusiveGroup. + \row \li \b {styleData.checked} : bool \li \c true if the menu item is checkable and currently checked. + \row \li \b {styleData.scrollerDirection} : enumeration \li If the menu item is a scroller, its pointing direction. + Valid values are \c Qt.UpArrow, \c Qt.DownArrow, and \c Qt.NoArrow. + \endtable + + The valid values for \b {styleData.type} are: + \list + \li MenuItemType.Item + \li MenuItemType.Menu + \li MenuItemType.Separator + \li MenuItemType.ScrollIndicator + \endlist + + \note Styling menus may not be supported on platforms using native menus + through their QPA plugin. +*/ + +Style { + id: styleRoot + + padding { + top: 1 + bottom: 1 + left: 1 + right: 1 + } + + /*! The amount of pixels by which a submenu popup overlaps horizontally its parent menu. */ + property int submenuOverlap: 1 + + /*! The number of milliseconds to wait before opening a submenu. */ + property int submenuPopupDelay: 200 + + /*! + \qmlmethod string MenuStyle::formatMnemonic(string text, bool underline = false) + Returns a rich-text string to render mnemonics for a given menu item \a text. + + The mnemonic character is prefixed by an ampersand in the original string. + + Passing \c true for \a underline will underline the mnemonic character (e.g., + \c formatMnemonic("&Open...", true) will return \c "<u>O</u>pen..."). Passing \c false + for \a underline will return the plain text form (e.g., \c formatMnemonic("&Open...", false) + will return \c "Open..."). + + \sa Label + */ + function formatMnemonic(text, underline) { + return underline ? StyleHelpers.stylizeMnemonics(text) : StyleHelpers.removeMnemonics(text) + } + + /*! The background frame for the menu popup. + + The \l Menu will resize the frame to its contents plus the padding. + */ + property Component frame: Rectangle { + color: styleRoot.__backgroundColor + border { width: 1; color: styleRoot.__borderColor } + } + + /*! \qmlproperty Object MenuStyle::itemDelegate + + The object containing the menu item subcontrol components. These subcontrols are used + for normal menu items only, i.e. not for separators or scroll indicators. + + The subcontrols are: + + \list + \li \b {itemDelegate.background} : Component + + The menu item background component. + + Its appearance generally changes with \l {styleData properties} {styleData.selected} + and \l {styleData properties} {styleData.enabled}. + + The default implementation shows only when the item is enabled and selected. It remains + invisible otherwise. + + \li \b {itemDelegate.label} : Component + + Component for the actual text label. + + The text itself is fetched from \l {styleData properties} {styleData.text}, and its appearance should depend + on \l {styleData properties} {styleData.enabled} and \l {styleData properties} {styleData.selected}. + + If \l {styleData properties} {styleData.underlineMnemonic} is true, the label should underline its mnemonic + character. \l formatMnemonic provides the default formatting. + + \li \b {itemDelegate.submenuIndicator} : Component + + It indicates that the current menu item is a submenu. + + Only used when \l {styleData properties} {styleData.type} equals \c MenuItemType.Menu. + + \li \b {itemDelegate.shortcut} : Component + + Displays the shortcut attached to the menu item. + + Only used when \l {styleData properties} {styleData.shortcut} is not empty. + + \li \b {itemDelegate.checkmarkIndicator} : Component + + Will be used when \l {styleData properties} {styleData.checkable} is \c true and its appearance + may depend on \l {styleData properties} {styleData.exclusive}, i.e., whether it will behave like a + checkbox or a radio button. Use \l {styleData properties} {styleData.checked} for the checked state. + \endlist + + \note This property cannot be overwritten although all of the subcontrol properties can. + */ + property alias itemDelegate: internalMenuItem + + MenuItemSubControls { + id: internalMenuItem + + background: Rectangle { + visible: styleData.selected && styleData.enabled + gradient: Gradient { + id: selectedGradient + GradientStop { color: Qt.lighter(__selectedBackgroundColor, 1.3); position: -0.2 } + GradientStop { color: __selectedBackgroundColor; position: 1.4 } + } + + border.width: 1 + border.color: Qt.darker(__selectedBackgroundColor, 1) + antialiasing: true + } + + label: Text { + text: formatMnemonic(styleData.text, styleData.underlineMnemonic) + color: __currentTextColor + font: styleRoot.font + renderType: Settings.isMobile ? Text.QtRendering : Text.NativeRendering + } + + submenuIndicator: Text { + text: __mirrored ? "\u25c2" : "\u25b8" // BLACK LEFT/RIGHT-POINTING SMALL TRIANGLE + font: styleRoot.font + color: __currentTextColor + style: styleData.selected ? Text.Normal : Text.Raised + styleColor: Qt.lighter(color, 4) + renderType: Settings.isMobile ? Text.QtRendering : Text.NativeRendering + } + + shortcut: Text { + text: styleData.shortcut + font { + bold: styleRoot.font.bold + capitalization: styleRoot.font.capitalization + family: styleRoot.font.family + italic: styleRoot.font.italic + letterSpacing: styleRoot.font.letterSpacing + pixelSize: styleRoot.font.pixelSize * 0.9 + strikeout: styleRoot.font.strikeout + underline: styleRoot.font.underline + weight: styleRoot.font.weight + wordSpacing: styleRoot.font.wordSpacing + } + color: __currentTextColor + renderType: Settings.isMobile ? Text.QtRendering : Text.NativeRendering + } + + checkmarkIndicator: Loader { + sourceComponent: styleData.exclusive ? exclusiveCheckMark : nonExclusiveCheckMark + Component { + id: exclusiveCheckMark + Rectangle { + x: 1 + width: 10 + height: 10 + color: "white" + border.color: "gray" + antialiasing: true + radius: height/2 + + Rectangle { + anchors.centerIn: parent + visible: styleData.checked + width: 4 + height: 4 + color: "#666" + border.color: "#222" + antialiasing: true + radius: height/2 + } + } + } + + Component { + id: nonExclusiveCheckMark + BorderImage { + width: 12 + height: 12 + source: "images/editbox.png" + border.top: 6 + border.bottom: 6 + border.left: 6 + border.right: 6 + + Rectangle { + antialiasing: true + visible: styleData.checked + color: "#666" + radius: 1 + anchors.margins: 4 + anchors.fill: parent + border.color: "#222" + Rectangle { + anchors.fill: parent + anchors.margins: 1 + color: "transparent" + border.color: "#33ffffff" + } + } + } + } + } + } + + /*! Component for the separator menu item. + + Will be used when \l {styleData properties} {styleData.type} equals \c MenuItemType.Separator. + */ + property Component separator: Item { + implicitHeight: styleRoot.font.pixelSize / 2 + Rectangle { + width: parent.width - 2 + height: 1 + x: 1 + anchors.verticalCenter: parent.verticalCenter + color: "darkgray" + } + } + + /*! Component for the scroll indicator menu item. + + Will be used when \l {styleData properties} {styleData.type} equals \c MenuItemType.ScrollIndicator. + Its appearance should follow \l {styleData properties} {styleData.scrollerDirection}. + + This is the item added at the top and bottom of the menu popup when its contents won't fit the screen + to indicate more content is available in the direction of the arrow. + */ + property Component scrollIndicator: Image { + anchors.centerIn: parent + source: styleData.scrollerDirection === Qt.UpArrow ? "images/arrow-up.png" : "images/arrow-down.png" + } + + /*! + \since QtQuick.Controls.Styles 1.3 + The font of the control. + */ + property font font + + /*! \internal */ + property string __menuItemType: "menuitem" + + /*! \internal + The menu popup frame background color. + + This is set to be a uniform background. If you want a gradient or a pixmap, + you should override \l frame. + + \sa frame, borderColor + */ + property color __backgroundColor: "#dcdcdc" + + /*! \internal + The menu popup frame border color. + + The border width is set to 1 pixel. Override \l frame if you want a larger border. + + \sa frame, backgroundColor + */ + property color __borderColor: "darkgray" + + /*! \internal + The maximum height for a popup before it will show scrollers. + */ + property int __maxPopupHeight: 600 + + /*! \internal + The menu item background color when selected. + + This property is provided for convenience and only sets the color. + It does not change the style in any other way. + */ + property color __selectedBackgroundColor: "#49d" + + /*! \internal + The menu item label color. + + When set, keyboard shorcuts get the same color as the item's text. + + \sa selectedLabelColor, disabledLabelColor + */ + property color __labelColor: "#444" + + /*! \internal + The menu item label color when selected. + + \sa labelColor, selectedLabelColor + */ + property color __selectedLabelColor: "white" + + /*! \internal + The menu item label color when disabled. + + \sa labelColor, disabledLabelColor + */ + property color __disabledLabelColor: "gray" + + + /*! \internal */ + readonly property bool __mirrored: Qt.application.layoutDirection === Qt.RightToLeft + + /*! \internal + The margin between the frame and the menu item label's left side. + + Generally, this should be large enough to fit optional checkmarks on + the label's left side. + */ + property int __leftLabelMargin: 18 + + /*! \internal + The margin between the menu item label's right side and the frame. */ + property int __rightLabelMargin: 12 + + /*! \internal + The minimum spacing between the menu item label's text right side and any + element located on its right (submenu indicator or shortcut). + */ + property int __minRightLabelSpacing: 28 + + /*! \internal */ + property Component __scrollerStyle: null + + /*! \internal + The menu item contents itself. + + The default implementation uses \l MenuItemStyle. + */ + property Component menuItemPanel: Item { + id: panel + + property QtObject __styleData: styleData + /*! \internal + The current color of the text label. + + Use this if you're overriding e.g. \l shortcutIndicator to keep the color matched + with \l label, or to derive new colors from it. + */ + property color currentTextColor: !styleData.enabled ? __disabledLabelColor : + styleData.selected ? __selectedLabelColor : __labelColor + + implicitWidth: Math.max((parent ? parent.width : 0), + Math.round(__leftLabelMargin + labelLoader.width + __rightLabelMargin + + (rightIndicatorLoader.active ? __minRightLabelSpacing + rightIndicatorLoader.width : 0))) + implicitHeight: Math.round(styleData.type === MenuItemType.Separator ? separatorLoader.implicitHeight : + !!styleData.scrollerDirection ? styleRoot.font.pixelSize * 0.75 : labelLoader.height + 4) + + Loader { + property alias styleData: panel.__styleData + property alias __currentTextColor: panel.currentTextColor + anchors.fill: parent + sourceComponent: itemDelegate.background + } + + Loader { + id: separatorLoader + property alias styleData: panel.__styleData + property alias __currentTextColor: panel.currentTextColor + anchors.fill: parent + sourceComponent: separator + active: styleData.type === MenuItemType.Separator + } + + Loader { + property alias styleData: panel.__styleData + property alias __currentTextColor: panel.currentTextColor + x: __mirrored ? parent.width - width - 4 : 4 + anchors.verticalCenterOffset: -1 + anchors.verticalCenter: parent.verticalCenter + active: __menuItemType === "menuitem" && styleData.checkable + sourceComponent: itemDelegate.checkmarkIndicator + } + + Loader { + id: labelLoader + readonly property real offset: __menuItemType === "menuitem" ? __leftLabelMargin : 6 + property alias styleData: panel.__styleData + property alias __currentTextColor: panel.currentTextColor + x: __mirrored ? parent.width - width - offset : offset + y: 1 + active: styleData.type !== MenuItemType.Separator + sourceComponent: itemDelegate.label + baselineOffset: item ? item.baselineOffset : 0.0 + } + + Loader { + id: rightIndicatorLoader + property alias styleData: panel.__styleData + property alias __currentTextColor: panel.currentTextColor + active: styleData.type === MenuItemType.Menu || styleData.shortcut !== "" + sourceComponent: styleData.type === MenuItemType.Menu ? itemDelegate.submenuIndicator : itemDelegate.shortcut + LayoutMirroring.enabled: __mirrored + baselineOffset: item ? item.baselineOffset : 0.0 + anchors { + right: parent.right + rightMargin: 6 + baseline: !styleData.isSubmenu ? labelLoader.baseline : undefined + } + } + } +} diff --git a/deployment_test/QtQuick/Controls/Styles/Base/MenuStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Base/MenuStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..b06fba7a19104f58c7ce740036b7a453e762218c Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/MenuStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/PieMenuStyle.qml b/deployment_test/QtQuick/Controls/Styles/Base/PieMenuStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..ddeb4eddeed265248ba532761f801a53b0173680 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Base/PieMenuStyle.qml @@ -0,0 +1,404 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Extras module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtGraphicalEffects 1.0 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 +import QtQuick.Controls.Private 1.0 +import QtQuick.Extras 1.4 +import QtQuick.Extras.Private 1.0 +import QtQuick.Extras.Private.CppUtils 1.0 + +/*! + \qmltype PieMenuStyle + \inqmlmodule QtQuick.Controls.Styles + \since 5.5 + \ingroup controlsstyling + \brief Provides custom styling for PieMenu. + + PieMenuStyle is a style for PieMenu that draws each section of the menu as a + filled "slice". + + You can create a custom pie menu by replacing the following delegates: + \list + \li \l background + \li \l cancel + \li \l menuItem + \li \l title + \endlist + + To customize the appearance of each menuItem without having to define your + own, you can use the \l backgroundColor and \l selectionColor properties. + To customize the drop shadow, use the \l shadowColor, \l shadowRadius and + \l shadowSpread properties. + + Icons that are too large for the section that they are in will be scaled + down appropriately. + + To style individual sections of the menu, use the menuItem component: + \code + PieMenuStyle { + shadowRadius: 0 + + menuItem: Item { + id: item + rotation: -90 + sectionCenterAngle(styleData.index) + + Rectangle { + width: parent.height * 0.2 + height: width + color: "darkorange" + radius: width / 2 + anchors.right: parent.right + anchors.verticalCenter: parent.verticalCenter + + Text { + id: textItem + text: control.menuItems[styleData.index].text + anchors.centerIn: parent + color: control.currentIndex === styleData.index ? "red" : "white" + rotation: -item.rotation + } + } + } + } + \endcode + + \image piemenu-menuitem-example.png A custom PieMenu +*/ + +Style { + id: pieMenuStyle + + /*! + The \l PieMenu that this style is attached to. + */ + readonly property PieMenu control: __control + + /*! The background color. */ + property color backgroundColor: Qt.rgba(0.6, 0.6, 0.6, 0.66) + + /*! The selection color. */ + property color selectionColor: "#eee" + + /*! + The shadow color. + + \sa DropShadow + */ + property color shadowColor: Qt.rgba(0, 0, 0, 0.26) + + /*! + The shadow radius. + + \sa DropShadow + */ + property real shadowRadius: 10 + + /*! + The shadow spread. + + \sa DropShadow + */ + property real shadowSpread: 0.3 + + /*! + The distance from the center of the menu to the outer edge of the menu. + + \sa cancelRadius + */ + readonly property real radius: Math.min(control.width, control.height) * 0.5 + + /*! + The radius of the area that is used to cancel the menu. + + \sa radius + */ + property real cancelRadius: radius * 0.4 + + /*! + The angle (in degrees) at which the first menu item will be drawn. + + The absolute range formed by \a startAngle and \l endAngle must be + less than or equal to \c 360 degrees. + + Menu items are displayed clockwise when \a startAngle is less than + \l endAngle, otherwise they are displayed anti-clockwise. + + \sa endAngle + */ + property real startAngle: -90 + + /*! + The angle (in degrees) at which the last menu item will be drawn. + + The absolute range formed by \l startAngle and \a endAngle must be + less than or equal to \c 360 degrees. + + Menu items are displayed clockwise when \l startAngle is less than + \a endAngle, otherwise they are displayed anti-clockwise. + + \sa startAngle + */ + property real endAngle: 90 + + /*! + \qmlmethod real PieMenuStyle::sectionStartAngle(int itemIndex) + Returns the start of the section at \a itemIndex as an angle in degrees. + */ + function sectionStartAngle(itemIndex) { + return MathUtils.radToDegOffset(control.__protectedScope.sectionStartAngle(itemIndex)); + } + + /*! + \qmlmethod real PieMenuStyle::sectionCenterAngle(int itemIndex) + Returns the center of the section at \a itemIndex as an angle in + degrees. + */ + function sectionCenterAngle(itemIndex) { + return MathUtils.radToDegOffset(control.__protectedScope.sectionCenterAngle(itemIndex)); + } + + /*! + \qmlmethod real PieMenuStyle::sectionEndAngle(int itemIndex) + Returns the end of the section at \a itemIndex as an angle in degrees. + */ + function sectionEndAngle(itemIndex) { + return MathUtils.radToDegOffset(control.__protectedScope.sectionEndAngle(itemIndex)); + } + + /*! + \internal + + The distance in pixels from the center of each menu item's icon to the + center of the menu. A higher value means that the icons will be further + from the center of the menu. + */ + readonly property real __iconOffset: cancelRadius + ((radius - cancelRadius) / 2) + + /*! \internal */ + readonly property real __selectableRadius: radius - cancelRadius + + /*! \internal */ + property int __implicitWidth: Math.round(TextSingleton.implicitHeight * 12.5) + + /*! \internal */ + property int __implicitHeight: __implicitWidth + + /*! + The background of the menu. + + By default, there is no background defined. + */ + property Component background + + /*! + The cancel component of the menu. + + This is an area in the center of the menu that closes the menu when + clicked. + + By default, it is not visible. + */ + property Component cancel: null + + /*! + The component that displays the text of the currently selected menu + item, or the title if there is no current item. + + The current item's text is available via the \c styleData.text + property. + */ + property Component title: Text { + font.pointSize: 20 + text: styleData.text + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + color: "#ccc" + antialiasing: true + } + + /*! + This component defines each section of the pie menu. + + This component covers the width and height of the control. + + No mouse events are propagated to this component, which means that + controls like Button will not function when used within it. You can + check if the mouse is over this section by comparing + \c control.currentIndex to \c styleData.index. + + Each instance of this component has access to the following properties: + + \table + \row \li \c {readonly property int} \b styleData.index + \li The index of this menu item. + \row \li \c {readonly property bool} \b styleData.hovered + \li \c true if this menu item is under the mouse. + \row \li \c {readonly property bool} \b styleData.pressed + \li \c true if the mouse is pressed down on this menu item. + \endtable + */ + property Component menuItem: Item { + id: actionRootDelegateItem + + function drawRingSection(ctx, x, y, section, r, ringWidth, ringColor) { + ctx.fillStyle = ringColor; + + // Draw one section. + ctx.beginPath(); + ctx.moveTo(x,y); + + // Canvas draws 0 degrees at 3 o'clock, whereas we want it to draw it at 12. + var start = control.__protectedScope.sectionStartAngle(section); + var end = control.__protectedScope.sectionEndAngle(section); + ctx.arc(x, y, r, start, end, start > end); + ctx.fill(); + + // Either change this to the background color, or use the global composition. + ctx.fillStyle = "black"; + ctx.globalCompositeOperation = "destination-out"; + ctx.beginPath(); + ctx.moveTo(x, y); + ctx.arc(x, y, ringWidth, 0, Math.PI * 2); + ctx.closePath(); + ctx.fill(); + + // If using the global composition method, make sure to change it back to default. + ctx.globalCompositeOperation = "source-over"; + } + + Canvas { + id: actionCanvas + anchors.fill: parent + property color currentColor: control.currentIndex === styleData.index ? selectionColor : backgroundColor + + Connections { + target: pieMenuStyle + function onStartAngleChanged() { actionCanvas.requestPaint() } + function onEndAngleChanged() { actionCanvas.requestPaint() } + } + + Connections { + target: control + function onCurrentIndexChanged() { actionCanvas.requestPaint() } + } + + onPaint: { + var ctx = getContext("2d"); + ctx.reset(); + drawRingSection(ctx, width / 2, height / 2, styleData.index, radius, cancelRadius, currentColor); + } + } + + readonly property var __styleData: styleData + + PieMenuIcon { + control: pieMenuStyle.control + styleData: __styleData + } + } + + /*! \internal */ + property Component panel: Item { + implicitWidth: __implicitWidth + implicitHeight: __implicitHeight + + property alias titleItem: titleLoader.item + + Item { + id: itemgroup + anchors.fill: parent + visible: false + + Loader { + id: backgroundLoader + sourceComponent: background + anchors.fill: parent + } + + Loader { + id: cancelLoader + sourceComponent: cancel + anchors.centerIn: parent + } + + Repeater { + id: menuItemRepeater + model: control.__protectedScope.visibleItems + + delegate: Loader { + id: menuItemLoader + anchors.fill: parent + sourceComponent: menuItem + + readonly property int __index: index + property QtObject styleData: QtObject { + readonly property alias index: menuItemLoader.__index + readonly property bool hovered: control.currentIndex === index + readonly property bool pressed: control.__protectedScope.pressedIndex === index + } + } + } + } + DropShadow { + id: dropShadow + anchors.fill: itemgroup + spread: shadowSpread + samples: shadowRadius * 2 + 1 + transparentBorder: true + color: shadowColor + source: itemgroup + } + + Loader { + id: titleLoader + sourceComponent: title + x: parent.x + parent.width / 2 - width / 2 + y: -height - 10 + + property QtObject styleData: QtObject { + property string text: control.currentIndex !== -1 + ? control.__protectedScope.visibleItems[control.currentIndex].text + : control.title + } + } + } +} diff --git a/deployment_test/QtQuick/Controls/Styles/Base/PieMenuStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Base/PieMenuStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..6e1036dc890b0ff5e34bf02b33b53309818c1e44 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/PieMenuStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/ProgressBarStyle.qml b/deployment_test/QtQuick/Controls/Styles/Base/ProgressBarStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..d51e056dc669e80ecb71d233d081b856f10d6f79 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Base/ProgressBarStyle.qml @@ -0,0 +1,261 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype ProgressBarStyle + + \inqmlmodule QtQuick.Controls.Styles + \since 5.1 + \ingroup controlsstyling + \brief Provides custom styling for ProgressBar. + + Example: + \qml + ProgressBar { + value: slider.value + style: ProgressBarStyle { + background: Rectangle { + radius: 2 + color: "lightgray" + border.color: "gray" + border.width: 1 + implicitWidth: 200 + implicitHeight: 24 + } + progress: Rectangle { + color: "lightsteelblue" + border.color: "steelblue" + } + } + } + \endqml + + Note that the example above is somewhat simplified and will not animate + an indeterminate progress bar. The following snippet demonstrates + how you can incorporate a custom animation for the indeterminate + state as well. + + \code + progress: Rectangle { + border.color: "steelblue" + color: "lightsteelblue" + + // Indeterminate animation by animating alternating stripes: + Item { + anchors.fill: parent + anchors.margins: 1 + visible: control.indeterminate + clip: true + Row { + Repeater { + Rectangle { + color: index % 2 ? "steelblue" : "lightsteelblue" + width: 20 ; height: control.height + } + model: control.width / 20 + 2 + } + XAnimator on x { + from: 0 ; to: -40 + loops: Animation.Infinite + running: control.indeterminate + } + } + } + } + \endcode + + +*/ + +Style { + id: progressBarStyle + + /*! The \l ProgressBar this style is attached to. */ + readonly property ProgressBar control: __control + + /*! A value in the range [0-1] indicating the current progress. */ + readonly property real currentProgress: control.indeterminate ? 1.0 : + control.value / control.maximumValue + + /*! This property holds the visible contents of the progress bar + You can access the Slider through the \c control property. + + For convenience, you can also access the readonly property \c styleData.progress + which provides the current progress as a \c real in the range [0-1] + */ + padding { top: 0 ; left: 0 ; right: 0 ; bottom: 0 } + + /*! \qmlproperty Component ProgressBarStyle::progress + The progress component for this style. + */ + property Component progress: Item { + property color progressColor: "#49d" + anchors.fill: parent + clip: true + Rectangle { + id: base + anchors.fill: parent + radius: TextSingleton.implicitHeight * 0.16 + antialiasing: true + gradient: Gradient { + GradientStop {color: Qt.lighter(progressColor, 1.3) ; position: 0} + GradientStop {color: progressColor ; position: 1.4} + } + border.width: 1 + border.color: Qt.darker(progressColor, 1.2) + Rectangle { + color: "transparent" + radius: 1.5 + clip: true + antialiasing: true + anchors.fill: parent + anchors.margins: 1 + border.color: Qt.rgba(1,1,1,0.1) + Image { + visible: control.indeterminate + height: parent.height + NumberAnimation on x { + from: -39 + to: 0 + running: control.indeterminate + duration: 800 + loops: Animation.Infinite + } + fillMode: Image.Tile + width: parent.width + 25 + source: "images/progress-indeterminate.png" + } + } + } + Rectangle { + height: parent.height - 2 + width: 1 + y: 1 + anchors.right: parent.right + anchors.rightMargin: 1 + color: Qt.rgba(1,1,1,0.1) + visible: splitter.visible + } + Rectangle { + id: splitter + height: parent.height - 2 + width: 1 + y: 1 + anchors.right: parent.right + color: Qt.darker(progressColor, 1.2) + property int offset: currentProgress * control.width + visible: offset > base.radius && offset < control.width - base.radius + 1 + } + } + + /*! \qmlproperty Component ProgressBarStyle::background + The background component for this style. + + \note The implicitWidth and implicitHeight of the background component + must be set. + */ + property Component background: Item { + implicitWidth: 200 + implicitHeight: Math.max(17, Math.round(TextSingleton.implicitHeight * 0.7)) + Rectangle { + anchors.fill: parent + anchors.bottomMargin: control.pressed ? 0 : -1 + color: "#44ffffff" + radius: baserect.radius + } + Rectangle { + id: baserect + gradient: Gradient { + GradientStop {color: "#eee" ; position: 0} + GradientStop {color: "#fff" ; position: 0.1} + GradientStop {color: "#fff" ; position: 1} + } + radius: TextSingleton.implicitHeight * 0.16 + anchors.fill: parent + border.color: control.activeFocus ? "#47b" : "#999" + Rectangle { + anchors.fill: parent + radius: parent.radius + color: control.activeFocus ? "#47b" : "white" + opacity: control.hovered || control.activeFocus ? 0.1 : 0 + Behavior on opacity {NumberAnimation{ duration: 100 }} + } + } + } + + /*! \qmlproperty Component ProgressBarStyle::panel + The panel component for this style. + */ + property Component panel: Item{ + property bool horizontal: control.orientation == Qt.Horizontal + implicitWidth: horizontal ? backgroundLoader.implicitWidth : backgroundLoader.implicitHeight + implicitHeight: horizontal ? backgroundLoader.implicitHeight : backgroundLoader.implicitWidth + + Item { + width: horizontal ? parent.width : parent.height + height: !horizontal ? parent.width : parent.height + y: horizontal ? 0 : width + rotation: horizontal ? 0 : -90 + transformOrigin: Item.TopLeft + + Loader { + id: backgroundLoader + anchors.fill: parent + sourceComponent: background + } + + Loader { + sourceComponent: progressBarStyle.progress + anchors.topMargin: padding.top + anchors.leftMargin: padding.left + anchors.rightMargin: padding.right + anchors.bottomMargin: padding.bottom + + anchors.top: parent.top + anchors.left: parent.left + anchors.bottom: parent.bottom + width: currentProgress * (parent.width - padding.left - padding.right) + } + } + } +} diff --git a/deployment_test/QtQuick/Controls/Styles/Base/ProgressBarStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Base/ProgressBarStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..cff41523e1ff6a4d9865e760903d3d21ace43e62 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/ProgressBarStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/RadioButtonStyle.qml b/deployment_test/QtQuick/Controls/Styles/Base/RadioButtonStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..6e3a2dc47f8a37b2d47029371dddfca7f36393b3 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Base/RadioButtonStyle.qml @@ -0,0 +1,172 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype RadioButtonStyle + \inqmlmodule QtQuick.Controls.Styles + \since 5.1 + \ingroup controlsstyling + \brief Provides custom styling for RadioButton. + + Example: + \qml + RadioButton { + text: "Radio Button" + style: RadioButtonStyle { + indicator: Rectangle { + implicitWidth: 16 + implicitHeight: 16 + radius: 9 + border.color: control.activeFocus ? "darkblue" : "gray" + border.width: 1 + Rectangle { + anchors.fill: parent + visible: control.checked + color: "#555" + radius: 9 + anchors.margins: 4 + } + } + } + } + \endqml +*/ + +Style { + id: radiobuttonStyle + + /*! The \l RadioButton this style is attached to. */ + readonly property RadioButton control: __control + + /*! This defines the text label. */ + property Component label: Item { + implicitWidth: text.implicitWidth + 2 + implicitHeight: text.implicitHeight + baselineOffset: text.y + text.baselineOffset + Rectangle { + anchors.fill: text + anchors.margins: -1 + anchors.leftMargin: -3 + anchors.rightMargin: -3 + visible: control.activeFocus + height: 6 + radius: 3 + color: "#224f9fef" + border.color: "#47b" + opacity: 0.6 + } + Text { + id: text + text: StyleHelpers.stylizeMnemonics(control.text) + anchors.centerIn: parent + color: SystemPaletteSingleton.text(control.enabled) + renderType: Settings.isMobile ? Text.QtRendering : Text.NativeRendering + } + } + + /*! The background under indicator and label. */ + property Component background + + /*! The spacing between indicator and label. */ + property int spacing: Math.round(TextSingleton.implicitHeight/4) + + /*! This defines the indicator button. */ + property Component indicator: Rectangle { + width: Math.round(TextSingleton.implicitHeight) + height: width + gradient: Gradient { + GradientStop {color: "#eee" ; position: 0} + GradientStop {color: control.pressed ? "#eee" : "#fff" ; position: 0.4} + GradientStop {color: "#fff" ; position: 1} + } + border.color: control.activeFocus ? "#16c" : "gray" + antialiasing: true + radius: height/2 + Rectangle { + anchors.centerIn: parent + width: Math.round(parent.width * 0.5) + height: width + gradient: Gradient { + GradientStop {color: "#999" ; position: 0} + GradientStop {color: "#555" ; position: 1} + } + border.color: "#222" + antialiasing: true + radius: height/2 + Behavior on opacity {NumberAnimation {duration: 80}} + opacity: control.checked ? control.enabled ? 1 : 0.5 : 0 + } + } + + /*! \internal */ + property Component panel: Item { + implicitWidth: Math.max(backgroundLoader.implicitWidth, row.implicitWidth + padding.left + padding.right) + implicitHeight: Math.max(backgroundLoader.implicitHeight, labelLoader.implicitHeight + padding.top + padding.bottom,indicatorLoader.implicitHeight + padding.top + padding.bottom) + baselineOffset: labelLoader.item ? padding.top + labelLoader.item.baselineOffset : 0 + + Loader { + id:backgroundLoader + sourceComponent: background + anchors.fill: parent + } + Row { + id: row + anchors.fill: parent + + anchors.leftMargin: padding.left + anchors.rightMargin: padding.right + anchors.topMargin: padding.top + anchors.bottomMargin: padding.bottom + + spacing: radiobuttonStyle.spacing + Loader { + id: indicatorLoader + sourceComponent: indicator + } + Loader { + id: labelLoader + sourceComponent: label + } + } + } +} diff --git a/deployment_test/QtQuick/Controls/Styles/Base/RadioButtonStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Base/RadioButtonStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..9d8c6f9ab823769d81e7c98724b29356c6741303 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/RadioButtonStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/ScrollViewStyle.qml b/deployment_test/QtQuick/Controls/Styles/Base/ScrollViewStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..36b518d39332fca2a88a913124558d38dcd48ef7 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Base/ScrollViewStyle.qml @@ -0,0 +1,406 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype ScrollViewStyle + \inqmlmodule QtQuick.Controls.Styles + \since 5.1 + \ingroup viewsstyling + \ingroup controlsstyling + \brief Provides custom styling for ScrollView. +*/ +Style { + id: root + + /*! The \l ScrollView this style is attached to. */ + readonly property ScrollView control: __control + + /*! This property controls the frame border padding of the scrollView. */ + padding {left: 1; top: 1; right: 1; bottom: 1} + + /*! This Component paints the corner area between scroll bars */ + property Component corner: Rectangle { color: "#ccc" } + + /*! This component determines if the flickable should reposition itself at the + mouse location when clicked. */ + property bool scrollToClickedPosition: true + + /*! This property holds whether the scroll bars are transient. Transient scroll bars + appear when the content is scrolled and disappear when they are no longer needed. + + The default value is platform dependent. */ + property bool transientScrollBars: Settings.isMobile && Settings.hasTouchScreen + + /*! This Component paints the frame around scroll bars. */ + property Component frame: Rectangle { + color: control["backgroundVisible"] ? "white": "transparent" + border.color: "#999" + border.width: 1 + radius: 1 + visible: control.frameVisible + } + + /*! This is the minimum extent of the scroll bar handle. + + The default value is \c 30. + */ + + property int minimumHandleLength: 30 + + /*! This property controls the edge overlap + between the handle and the increment/decrement buttons. + + The default value is \c 30. + */ + + property int handleOverlap: 1 + + /*! This component controls the appearance of the + scroll bar background. + + You can access the following state properties: + + \table + \row \li property bool \b styleData.hovered + \row \li property bool \b styleData.horizontal + \endtable + */ + + property Component scrollBarBackground: Item { + property bool sticky: false + property bool hovered: styleData.hovered + implicitWidth: Math.round(TextSingleton.implicitHeight) + implicitHeight: Math.round(TextSingleton.implicitHeight) + clip: true + opacity: transientScrollBars ? 0.5 : 1.0 + visible: !Settings.hasTouchScreen && (!transientScrollBars || sticky) + Rectangle { + anchors.fill: parent + color: "#ddd" + border.color: "#aaa" + anchors.rightMargin: styleData.horizontal ? -2 : -1 + anchors.leftMargin: styleData.horizontal ? -2 : 0 + anchors.topMargin: styleData.horizontal ? 0 : -2 + anchors.bottomMargin: styleData.horizontal ? -1 : -2 + } + onHoveredChanged: if (hovered) sticky = true + onVisibleChanged: if (!visible) sticky = false + } + + /*! This component controls the appearance of the + scroll bar handle. + + You can access the following state properties: + + \table + \row \li property bool \b styleData.hovered + \row \li property bool \b styleData.pressed + \row \li property bool \b styleData.horizontal + \endtable + */ + + property Component handle: Item { + property bool sticky: false + property bool hovered: __activeControl !== "none" + implicitWidth: Math.round(TextSingleton.implicitHeight) + 1 + implicitHeight: Math.round(TextSingleton.implicitHeight) + 1 + BorderImage { + id: img + opacity: styleData.pressed && !transientScrollBars ? 0.5 : styleData.hovered ? 1 : 0.8 + source: "images/scrollbar-handle-" + (transientScrollBars ? "transient" : styleData.horizontal ? "horizontal" : "vertical") + ".png" + border.left: transientScrollBars ? 5 : 2 + border.top: transientScrollBars ? 5 : 2 + border.right: transientScrollBars ? 5 : 2 + border.bottom: transientScrollBars ? 5 : 2 + anchors.top: !styleData.horizontal ? parent.top : undefined + anchors.margins: transientScrollBars ? 2 : 0 + anchors.bottom: parent.bottom + anchors.right: parent.right + anchors.left: styleData.horizontal ? parent.left : undefined + width: !styleData.horizontal && transientScrollBars ? sticky ? 13 : 10 : parent.width + height: styleData.horizontal && transientScrollBars ? sticky ? 13 : 10 : parent.height + Behavior on width { enabled: !styleData.horizontal && transientScrollBars; NumberAnimation { duration: 100 } } + Behavior on height { enabled: styleData.horizontal && transientScrollBars; NumberAnimation { duration: 100 } } + } + onHoveredChanged: if (hovered) sticky = true + onVisibleChanged: if (!visible) sticky = false + } + + /*! This component controls the appearance of the + scroll bar increment button. + + You can access the following state properties: + + \table + \row \li property bool \b styleData.hovered + \row \li property bool \b styleData.pressed + \row \li property bool \b styleData.horizontal + \endtable + */ + property Component incrementControl: Rectangle { + visible: !transientScrollBars + implicitWidth: transientScrollBars ? 0 : Math.round(TextSingleton.implicitHeight) + implicitHeight: transientScrollBars ? 0 : Math.round(TextSingleton.implicitHeight) + Rectangle { + anchors.fill: parent + anchors.bottomMargin: -1 + anchors.rightMargin: -1 + border.color: "#aaa" + Rectangle { + anchors.fill: parent + anchors.margins: 1 + color: "transparent" + border.color: "#44ffffff" + } + Image { + source: styleData.horizontal ? "images/arrow-right.png" : "images/arrow-down.png" + anchors.centerIn: parent + opacity: control.enabled ? 0.6 : 0.5 + } + gradient: Gradient { + GradientStop {color: styleData.pressed ? "lightgray" : "white" ; position: 0} + GradientStop {color: styleData.pressed ? "lightgray" : "lightgray" ; position: 1} + } + } + } + + /*! This component controls the appearance of the + scroll bar decrement button. + + You can access the following state properties: + + \table + \row \li property bool \b styleData.hovered + \row \li property bool \b styleData.pressed + \row \li property bool \b styleData.horizontal + \endtable + */ + property Component decrementControl: Rectangle { + visible: !transientScrollBars + implicitWidth: transientScrollBars ? 0 : Math.round(TextSingleton.implicitHeight) + implicitHeight: transientScrollBars ? 0 : Math.round(TextSingleton.implicitHeight) + Rectangle { + anchors.fill: parent + anchors.topMargin: styleData.horizontal ? 0 : -1 + anchors.leftMargin: styleData.horizontal ? -1 : 0 + anchors.bottomMargin: styleData.horizontal ? -1 : 0 + anchors.rightMargin: styleData.horizontal ? 0 : -1 + color: "lightgray" + Rectangle { + anchors.fill: parent + anchors.margins: 1 + color: "transparent" + border.color: "#44ffffff" + } + Image { + source: styleData.horizontal ? "images/arrow-left.png" : "images/arrow-up.png" + anchors.centerIn: parent + anchors.verticalCenterOffset: styleData.horizontal ? 0 : -1 + anchors.horizontalCenterOffset: styleData.horizontal ? -1 : 0 + opacity: control.enabled ? 0.6 : 0.5 + } + gradient: Gradient { + GradientStop {color: styleData.pressed ? "lightgray" : "white" ; position: 0} + GradientStop {color: styleData.pressed ? "lightgray" : "lightgray" ; position: 1} + } + border.color: "#aaa" + } + } + + /*! \internal */ + property Component __scrollbar: Item { + id: panel + property string activeControl: "none" + property bool scrollToClickPosition: true + property bool isTransient: transientScrollBars + + property bool on: false + property bool raised: false + property bool sunken: __styleData.upPressed | __styleData.downPressed | __styleData.handlePressed + + states: State { + name: "out" + when: isTransient + && (!__stickyScrollbars || !flickableItem.moving) + && panel.activeControl === "none" + && !panel.on + && !panel.raised + PropertyChanges { target: panel; opacity: 0 } + } + + transitions: Transition { + to: "out" + SequentialAnimation { + PauseAnimation { duration: root.__scrollBarFadeDelay } + NumberAnimation { properties: "opacity"; duration: root.__scrollBarFadeDuration } + PropertyAction { target: panel; property: "visible"; value: false } + } + } + + implicitWidth: __styleData.horizontal ? 200 : bg.implicitWidth + implicitHeight: __styleData.horizontal ? bg.implicitHeight : 200 + + function pixelMetric(arg) { + if (arg === "scrollbarExtent") + return (__styleData.horizontal ? bg.height : bg.width); + return 0; + } + + function styleHint(arg) { + return false; + } + + function hitTest(argX, argY) { + if (itemIsHit(handleControl, argX, argY)) + return "handle" + else if (itemIsHit(incrementLoader, argX, argY)) + return "up"; + else if (itemIsHit(decrementLoader, argX, argY)) + return "down"; + else if (itemIsHit(bg, argX, argY)) { + if (__styleData.horizontal && argX < handleControl.x || !__styleData.horizontal && argY < handleControl.y) + return "upPage" + else + return "downPage" + } + + return "none"; + } + + function subControlRect(arg) { + if (arg === "handle") { + return Qt.rect(handleControl.x, handleControl.y, handleControl.width, handleControl.height); + } else if (arg === "groove") { + if (__styleData.horizontal) { + return Qt.rect(incrementLoader.width - handleOverlap, + 0, + __control.width - (incrementLoader.width + decrementLoader.width - handleOverlap * 2), + __control.height); + } else { + return Qt.rect(0, + incrementLoader.height - handleOverlap, + __control.width, + __control.height - (incrementLoader.height + decrementLoader.height - handleOverlap * 2)); + } + } + return Qt.rect(0,0,0,0); + } + + function itemIsHit(argItem, argX, argY) { + var pos = argItem.mapFromItem(__control, argX, argY); + return (pos.x >= 0 && pos.x <= argItem.width && pos.y >= 0 && pos.y <= argItem.height); + } + + Loader { + id: incrementLoader + anchors.top: parent.top + anchors.left: parent.left + sourceComponent: decrementControl + property QtObject styleData: QtObject { + readonly property bool hovered: activeControl === "up" + readonly property bool pressed: __styleData.upPressed + readonly property bool horizontal: __styleData.horizontal + } + } + + Loader { + id: bg + anchors.top: __styleData.horizontal ? undefined : incrementLoader.bottom + anchors.bottom: __styleData.horizontal ? undefined : decrementLoader.top + anchors.left: __styleData.horizontal ? incrementLoader.right : undefined + anchors.right: __styleData.horizontal ? decrementLoader.left : undefined + sourceComponent: scrollBarBackground + property QtObject styleData: QtObject { + readonly property bool horizontal: __styleData.horizontal + readonly property bool hovered: activeControl !== "none" + } + } + + Loader { + id: decrementLoader + anchors.bottom: __styleData.horizontal ? undefined : parent.bottom + anchors.right: __styleData.horizontal ? parent.right : undefined + sourceComponent: incrementControl + property QtObject styleData: QtObject { + readonly property bool hovered: activeControl === "down" + readonly property bool pressed: __styleData.downPressed + readonly property bool horizontal: __styleData.horizontal + } + } + + property var flickableItem: control.flickableItem + property int extent: Math.max(minimumHandleLength, __styleData.horizontal ? + Math.min(1, ((flickableItem && flickableItem.contentWidth > 0.0) ? flickableItem.width/flickableItem.contentWidth : 1)) * bg.width : + Math.min(1, ((flickableItem && flickableItem.contentHeight > 0.0) ? flickableItem.height/flickableItem.contentHeight : 1)) * bg.height) + readonly property real range: __control.maximumValue - __control.minimumValue + readonly property real begin: __control.value - __control.minimumValue + + Loader { + id: handleControl + height: __styleData.horizontal ? implicitHeight : extent + width: __styleData.horizontal ? extent : implicitWidth + anchors.top: bg.top + anchors.left: bg.left + anchors.topMargin: __styleData.horizontal || range === 0 ? 0 : -handleOverlap + (2 * begin * (bg.height + (2 * handleOverlap) - extent) + range) / (2 * range) + anchors.leftMargin: __styleData.horizontal && range !== 0 ? -handleOverlap + (2 * begin * (bg.width + (2 * handleOverlap) - extent) + range) / (2 * range) : 0 + sourceComponent: handle + property QtObject styleData: QtObject { + readonly property bool hovered: activeControl === "handle" + readonly property bool pressed: __styleData.handlePressed + readonly property bool horizontal: __styleData.horizontal + } + readonly property alias __activeControl: panel.activeControl + } + } + + /*! \internal */ + property bool __externalScrollBars: false + /*! \internal */ + property int __scrollBarSpacing: 4 + /*! \internal */ + property int __scrollBarFadeDelay: 450 + /*! \internal */ + property int __scrollBarFadeDuration: 200 + /*! \internal */ + property bool __stickyScrollbars: false +} diff --git a/deployment_test/QtQuick/Controls/Styles/Base/ScrollViewStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Base/ScrollViewStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..8cb9221c76164986570a3b97cf96ac521697a33a Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/ScrollViewStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/SliderStyle.qml b/deployment_test/QtQuick/Controls/Styles/Base/SliderStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..ca50306422f94a2c44d2b227c0b186a0491a0b4e --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Base/SliderStyle.qml @@ -0,0 +1,232 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype SliderStyle + \inqmlmodule QtQuick.Controls.Styles + \since 5.1 + \ingroup controlsstyling + \brief Provides custom styling for Slider. + + The slider style allows you to create a custom appearance for + a \l Slider control. + + The implicit size of the slider is calculated based on the + maximum implicit size of the \c background and \c handle + delegates combined. + + Example: + \qml + Slider { + anchors.centerIn: parent + style: SliderStyle { + groove: Rectangle { + implicitWidth: 200 + implicitHeight: 8 + color: "gray" + radius: 8 + } + handle: Rectangle { + anchors.centerIn: parent + color: control.pressed ? "white" : "lightgray" + border.color: "gray" + border.width: 2 + implicitWidth: 34 + implicitHeight: 34 + radius: 12 + } + } + } + \endqml +*/ +Style { + id: styleitem + + /*! The \l Slider this style is attached to. */ + readonly property Slider control: __control + + padding { top: 0 ; left: 0 ; right: 0 ; bottom: 0 } + + /*! This property holds the item for the slider handle. + You can access the slider through the \c control property + */ + property Component handle: Item{ + implicitWidth: implicitHeight + implicitHeight: TextSingleton.implicitHeight * 1.2 + + FastGlow { + source: handle + anchors.fill: parent + anchors.bottomMargin: -1 + anchors.topMargin: 1 + smooth: true + color: "#11000000" + spread: 0.8 + transparentBorder: true + blur: 0.1 + + } + Rectangle { + id: handle + anchors.fill: parent + + radius: width/2 + gradient: Gradient { + GradientStop { color: control.pressed ? "#e0e0e0" : "#fff" ; position: 1 } + GradientStop { color: "#eee" ; position: 0 } + } + Rectangle { + anchors.fill: parent + anchors.margins: 1 + radius: width/2 + border.color: "#99ffffff" + color: control.activeFocus ? "#224f7fbf" : "transparent" + } + border.color: control.activeFocus ? "#47b" : "#777" + } + + } + /*! This property holds the background groove of the slider. + + You can access the handle position through the \c styleData.handlePosition property. + */ + property Component groove: Item { + property color fillColor: "#49d" + anchors.verticalCenter: parent.verticalCenter + implicitWidth: Math.round(TextSingleton.implicitHeight * 4.5) + implicitHeight: Math.max(6, Math.round(TextSingleton.implicitHeight * 0.3)) + Rectangle { + radius: height/2 + anchors.fill: parent + border.width: 1 + border.color: "#888" + gradient: Gradient { + GradientStop { color: "#bbb" ; position: 0 } + GradientStop { color: "#ccc" ; position: 0.6 } + GradientStop { color: "#ccc" ; position: 1 } + } + } + Item { + clip: true + width: styleData.handlePosition + height: parent.height + Rectangle { + anchors.fill: parent + border.color: Qt.darker(fillColor, 1.2) + radius: height/2 + gradient: Gradient { + GradientStop {color: Qt.lighter(fillColor, 1.3) ; position: 0} + GradientStop {color: fillColor ; position: 1.4} + } + } + } + } + + /*! This property holds the tick mark labels. + \since QtQuick.Controls.Styles 1.1 + + Every tickmark that should be drawn must be defined within this + component, so it is common to use a \l Repeater, for example. + + You can access the handle width through the \c styleData.handleWidth property. + */ + property Component tickmarks: Repeater { + id: repeater + model: control.stepSize > 0 ? 1 + (control.maximumValue - control.minimumValue) / control.stepSize : 0 + Rectangle { + color: "#777" + width: 1 ; height: 3 + y: repeater.height + x: styleData.handleWidth / 2 + index * ((repeater.width - styleData.handleWidth) / (repeater.count-1)) + } + } + + /*! This property holds the slider style panel. + + Note that it is generally not recommended to override this. + */ + property Component panel: Item { + id: root + property int handleWidth: handleLoader.width + property int handleHeight: handleLoader.height + + property bool horizontal : control.orientation === Qt.Horizontal + property int horizontalSize: grooveLoader.implicitWidth + padding.left + padding.right + property int verticalSize: Math.max(handleLoader.implicitHeight, grooveLoader.implicitHeight) + padding.top + padding.bottom + + implicitWidth: horizontal ? horizontalSize : verticalSize + implicitHeight: horizontal ? verticalSize : horizontalSize + + y: horizontal ? 0 : height + rotation: horizontal ? 0 : -90 + transformOrigin: Item.TopLeft + + Item { + + anchors.fill: parent + + Loader { + id: grooveLoader + property QtObject styleData: QtObject { + readonly property int handlePosition: handleLoader.x + handleLoader.width/2 + } + x: padding.left + sourceComponent: groove + width: (horizontal ? parent.width : parent.height) - padding.left - padding.right + y: Math.round(padding.top + (Math.round(horizontal ? parent.height : parent.width - padding.top - padding.bottom) - grooveLoader.item.height)/2) + } + Loader { + id: tickMarkLoader + anchors.fill: parent + sourceComponent: control.tickmarksEnabled ? tickmarks : null + property QtObject styleData: QtObject { readonly property int handleWidth: control.__panel.handleWidth } + } + Loader { + id: handleLoader + sourceComponent: handle + anchors.verticalCenter: grooveLoader.verticalCenter + x: Math.round((control.__handlePos - control.minimumValue) / (control.maximumValue - control.minimumValue) * ((horizontal ? root.width : root.height) - item.width)) + } + } + } +} diff --git a/deployment_test/QtQuick/Controls/Styles/Base/SliderStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Base/SliderStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..b70a77bde1bcb4de5a036c2f6eeedbb77b6abe3c Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/SliderStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/SpinBoxStyle.qml b/deployment_test/QtQuick/Controls/Styles/Base/SpinBoxStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..bc57ef6e25182820f816d92683a988fe51c53c16 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Base/SpinBoxStyle.qml @@ -0,0 +1,258 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype SpinBoxStyle + \inqmlmodule QtQuick.Controls.Styles + \since 5.2 + \ingroup controlsstyling + \brief Provides custom styling for SpinBox. + + Example: + \qml + SpinBox { + style: SpinBoxStyle{ + background: Rectangle { + implicitWidth: 100 + implicitHeight: 20 + border.color: "gray" + radius: 2 + } + } + } + \endqml +*/ + +Style { + id: spinboxStyle + + /*! The \l SpinBox this style is attached to. */ + readonly property SpinBox control: __control + + /*! The content margins of the text field. */ + padding { top: 1 ; left: Math.round(styleData.contentHeight/2) ; right: Math.max(22, Math.round(styleData.contentHeight)) ; bottom: 0 } + /*! \qmlproperty enumeration horizontalAlignment + + This property defines the default text aligment. + + The supported values are: + \list + \li Qt.AlignLeft + \li Qt.AlignHCenter + \li Qt.AlignRight + \endlist + + The default value is Qt.AlignRight + */ + property int horizontalAlignment: Qt.AlignRight + + /*! The text color. */ + property color textColor: SystemPaletteSingleton.text(control.enabled) + + /*! The text highlight color, used behind selections. */ + property color selectionColor: SystemPaletteSingleton.highlight(control.enabled) + + /*! The highlighted text color, used in selections. */ + property color selectedTextColor: SystemPaletteSingleton.highlightedText(control.enabled) + + /*! + \qmlproperty enumeration renderType + + Override the default rendering type for the control. + + Supported render types are: + \list + \li Text.QtRendering + \li Text.NativeRendering + \endlist + + The default value is platform dependent. + + \sa Text::renderType + */ + property int renderType: Settings.isMobile ? Text.QtRendering : Text.NativeRendering + + /*! + \since QtQuick.Controls.Styles 1.3 + The font of the control. + */ + property font font + + /*! The button used to increment the value. */ + property Component incrementControl: Item { + implicitWidth: padding.right + Image { + source: "images/arrow-up.png" + anchors.centerIn: parent + anchors.verticalCenterOffset: 1 + opacity: control.enabled ? (styleData.upPressed ? 1 : 0.6) : 0.5 + } + } + + /*! The button used to decrement the value. */ + property Component decrementControl: Item { + implicitWidth: padding.right + Image { + source: "images/arrow-down.png" + anchors.centerIn: parent + anchors.verticalCenterOffset: -2 + opacity: control.enabled ? (styleData.downPressed ? 1 : 0.6) : 0.5 + } + } + + /*! The background of the SpinBox. */ + property Component background: Item { + implicitHeight: Math.max(25, Math.round(styleData.contentHeight * 1.2)) + implicitWidth: styleData.contentWidth + padding.left + padding.right + baselineOffset: control.__baselineOffset + Rectangle { + anchors.fill: parent + anchors.bottomMargin: -1 + color: "#44ffffff" + radius: baserect.radius + } + Rectangle { + id: baserect + gradient: Gradient { + GradientStop {color: "#eee" ; position: 0} + GradientStop {color: "#fff" ; position: 0.1} + GradientStop {color: "#fff" ; position: 1} + } + radius: control.font.pixelSize * 0.16 + anchors.fill: parent + border.color: control.activeFocus ? "#47b" : "#999" + } + } + + /*! \internal */ + property Component panel: Item { + id: styleitem + implicitWidth: backgroundLoader.implicitWidth + implicitHeight: backgroundLoader.implicitHeight + baselineOffset: backgroundLoader.item ? backgroundLoader.item.baselineOffset : 0 + + property font font: spinboxStyle.font + + property color foregroundColor: spinboxStyle.textColor + property color selectionColor: spinboxStyle.selectionColor + property color selectedTextColor: spinboxStyle.selectedTextColor + + property var margins: spinboxStyle.padding + + property rect upRect: Qt.rect(width - incrementControlLoader.implicitWidth, 0, incrementControlLoader.implicitWidth, height / 2 + 1) + property rect downRect: Qt.rect(width - decrementControlLoader.implicitWidth, height / 2, decrementControlLoader.implicitWidth, height / 2) + + property int horizontalAlignment: spinboxStyle.horizontalAlignment + property int verticalAlignment: Qt.AlignVCenter + + Loader { + id: backgroundLoader + anchors.fill: parent + sourceComponent: background + } + + Loader { + id: incrementControlLoader + x: upRect.x + y: upRect.y + width: upRect.width + height: upRect.height + sourceComponent: incrementControl + } + + Loader { + id: decrementControlLoader + x: downRect.x + y: downRect.y + width: downRect.width + height: downRect.height + sourceComponent: decrementControl + } + } + + /*! \internal + The cursor handle. + \since QtQuick.Controls.Styles 1.3 + + The parent of the handle is positioned to the top left corner of + the cursor position. The interactive area is determined by the + geometry of the handle delegate. + + The following signals and read-only properties are available within the scope + of the handle delegate: + \table + \row \li \b {styleData.activated()} [signal] \li Emitted when the handle is activated ie. the editor is clicked. + \row \li \b {styleData.pressed} : bool \li Whether the handle is pressed. + \row \li \b {styleData.position} : int \li The character position of the handle. + \row \li \b {styleData.lineHeight} : real \li The height of the line the handle is on. + \row \li \b {styleData.hasSelection} : bool \li Whether the editor has selected text. + \endtable + */ + property Component __cursorHandle + + /*! \internal + The selection handle. + \since QtQuick.Controls.Styles 1.3 + + The parent of the handle is positioned to the top left corner of + the first selected character. The interactive area is determined + by the geometry of the handle delegate. + + The following signals and read-only properties are available within the scope + of the handle delegate: + \table + \row \li \b {styleData.activated()} [signal] \li Emitted when the handle is activated ie. the editor is clicked. + \row \li \b {styleData.pressed} : bool \li Whether the handle is pressed. + \row \li \b {styleData.position} : int \li The character position of the handle. + \row \li \b {styleData.lineHeight} : real \li The height of the line the handle is on. + \row \li \b {styleData.hasSelection} : bool \li Whether the editor has selected text. + \endtable + */ + property Component __selectionHandle + + /*! \internal + The cursor delegate. + \since QtQuick.Controls.Styles 1.3 + */ + property Component __cursorDelegate +} diff --git a/deployment_test/QtQuick/Controls/Styles/Base/SpinBoxStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Base/SpinBoxStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..c4a6cf34d7731c4d960fcf4d3f3d77bcd1ac93f3 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/SpinBoxStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/StatusBarStyle.qml b/deployment_test/QtQuick/Controls/Styles/Base/StatusBarStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..8b620424f624df2eec606dff4ce6a58242339b7f --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Base/StatusBarStyle.qml @@ -0,0 +1,115 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype StatusBarStyle + \inqmlmodule QtQuick.Controls.Styles + \ingroup controlsstyling + \since 5.2 + \brief Provides custom styling for StatusBar. + + The status bar can be defined by overriding the background component and + setting the content padding. + + Example: + \qml + StatusBar { + style: StatusBarStyle { + padding { + left: 8 + right: 8 + top: 3 + bottom: 3 + } + background: Rectangle { + implicitHeight: 16 + implicitWidth: 200 + gradient: Gradient{ + GradientStop{color: "#eee" ; position: 0} + GradientStop{color: "#ccc" ; position: 1} + } + Rectangle { + anchors.top: parent.top + width: parent.width + height: 1 + color: "#999" + } + } + } + } + \endqml +*/ + +Style { + + /*! The content padding inside the status bar. */ + padding { + left: 3 + right: 3 + top: 3 + bottom: 2 + } + + /*! This defines the background of the status bar. */ + property Component background: Rectangle { + implicitHeight: 16 + implicitWidth: 200 + + gradient: Gradient{ + GradientStop{color: "#eee" ; position: 0} + GradientStop{color: "#ccc" ; position: 1} + } + + Rectangle { + anchors.top: parent.top + width: parent.width + height: 1 + color: "#999" + } + } + + /*! This defines the panel of the status bar. */ + property Component panel: Loader { + sourceComponent: background + } +} diff --git a/deployment_test/QtQuick/Controls/Styles/Base/StatusBarStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Base/StatusBarStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..731d9c956aeb751a39ed47e4bb32d9bb4f1e0a0c Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/StatusBarStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/StatusIndicatorStyle.qml b/deployment_test/QtQuick/Controls/Styles/Base/StatusIndicatorStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..ae9f2110d94d4c81a0a321dd20fd8c5ec65610bc --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Base/StatusIndicatorStyle.qml @@ -0,0 +1,232 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Extras module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtGraphicalEffects 1.0 +import QtQuick.Controls.Private 1.0 +import QtQuick.Extras 1.4 + +/*! + \qmltype StatusIndicatorStyle + \inqmlmodule QtQuick.Controls.Styles + \since 5.5 + \ingroup controlsstyling + \brief Provides custom styling for StatusIndicatorStyle. + + You can create a custom status indicator by defining the \l indicator + component. +*/ + +Style { + id: pieMenuStyle + + /*! + The \l StatusIndicator that this style is attached to. + */ + readonly property StatusIndicator control: __control + + /*! + The color that instances of + \l [QtQuickExtras]{StatusIndicator} will have. + The \l [QtQuickExtras]{StatusIndicator::}{color} + property in \l [QtQuickExtras]{StatusIndicator} + will override this property when set. + */ + property color color: "red" + + /*! + This defines the indicator in both its on and off status. + */ + property Component indicator: Item { + readonly property real shineStep: 0.05 + readonly property real smallestAxis: Math.min(control.width, control.height) + readonly property real outerRecessPercentage: 0.11 + readonly property color offColor: Qt.rgba(0.13, 0.13, 0.13) + readonly property color baseColor: control.active ? control.color : offColor + + implicitWidth: TextSingleton.implicitHeight * 2 + implicitHeight: implicitWidth + + Canvas { + id: backgroundCanvas + width: Math.min(parent.width, parent.height) + // height: width --- QTBUG-42878 + height: Math.min(parent.width, parent.height) + anchors.centerIn: parent + + Connections { + target: control + function onActiveChanged() { backgroundCanvas.requestPaint() } + function onColorChanged() { backgroundCanvas.requestPaint() } + } + + onPaint: { + var ctx = getContext("2d"); + ctx.reset(); + + // Draw the semi-transparent background. + ctx.beginPath(); + var gradient = ctx.createLinearGradient(width / 2, 0, width / 2, height * 0.75); + gradient.addColorStop(0.0, Qt.rgba(0, 0, 0, control.active ? 0.1 : 0.25)); + gradient.addColorStop(1.0, control.active ? Qt.rgba(0, 0, 0, 0.1) : Qt.rgba(0.74, 0.74, 0.74, 0.25)); + + ctx.fillStyle = gradient; + ctx.ellipse(0, 0, width, height); + ctx.fill(); + } + } + + Item { + id: shadowGuard + anchors.fill: backgroundCanvas + anchors.margins: -shadow.radius + + Canvas { + id: colorCanvas + anchors.fill: parent + anchors.margins: shadow.radius + + Connections { + target: control + function onActiveChanged() { colorCanvas.requestPaint() } + function onColorChanged() { colorCanvas.requestPaint() } + } + + onPaint: { + var ctx = getContext("2d"); + ctx.reset(); + + // Draw the actual color within the circle. + ctx.beginPath(); + ctx.fillStyle = baseColor; + var recess = smallestAxis * outerRecessPercentage; + ctx.ellipse(recess, recess, width - recess * 2, height - recess * 2); + ctx.fill(); + } + } + } + + DropShadow { + id: shadow + source: shadowGuard + color: control.color + cached: true + anchors.fill: shadowGuard + visible: control.active + } + + Canvas { + id: foregroundCanvas + anchors.fill: backgroundCanvas + + Connections { + target: control + function onActiveChanged() { foregroundCanvas.requestPaint() } + function onColorChanged() { foregroundCanvas.requestPaint() } + } + + onPaint: { + var ctx = getContext("2d"); + ctx.reset(); + + // Draw the first shine. + ctx.beginPath(); + ctx.fillStyle = Qt.rgba(1, 1, 1, 0.03); + var recessPercentage = outerRecessPercentage + shineStep * 0.65; + var recess = smallestAxis * recessPercentage; + ctx.ellipse(recess, recess, width - recess * 2, height - recess * 2); + ctx.fill(); + + // Draw the second, inner shine. + ctx.beginPath(); + ctx.fillStyle = Qt.rgba(1, 1, 1, 0.06); + recessPercentage += shineStep; + recess = smallestAxis * recessPercentage; + ctx.ellipse(recess, recess, width - recess * 2, height - recess * 2); + ctx.fill(); + + // Now draw the final arced shine that goes over the first and second shines. + // First, clip the entire shine area. + ctx.beginPath(); + recessPercentage -= shineStep; + recess = smallestAxis * recessPercentage; + ctx.ellipse(recess, recess, width - recess * 2, height - recess * 2); + ctx.clip(); + + if (!control.active) { + // Then, clip the bottom area out of the shine. + ctx.ellipse(recess, height * 0.425, width - recess * 2, height - recess * 2); + ctx.clip(); + } + + ctx.beginPath(); + var gradient; + if (!control.active) { + // Draw the shine arc. + gradient = ctx.createLinearGradient(width / 2, height * 0.2, width / 2, height * 0.65); + gradient.addColorStop(0.0, Qt.rgba(1, 1, 1, 0.05)); + gradient.addColorStop(1.0, "transparent"); + } else { + // Draw the radial shine. + gradient = ctx.createRadialGradient(width / 2, height / 2, 0, width / 2, height / 2, width * 0.5 /* (same as height) */); + gradient.addColorStop(0.0, Qt.lighter(baseColor, 1.4)); + gradient.addColorStop(1.0, "transparent"); + } + + ctx.fillStyle = gradient; + ctx.ellipse(recess, recess, width - recess * 2, height - recess * 2); + ctx.fill(); + } + } + } + + /*! \internal */ + property Component panel: Item { + implicitWidth: indicatorLoader.implicitWidth + implicitHeight: indicatorLoader.implicitHeight + + Loader { + id: indicatorLoader + width: Math.max(1, parent.width) + height: Math.max(1, parent.height) + anchors.centerIn: parent + sourceComponent: indicator + } + } +} diff --git a/deployment_test/QtQuick/Controls/Styles/Base/StatusIndicatorStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Base/StatusIndicatorStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..f416a34a3f1c86fc42859a440ae298312b4abeb9 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/StatusIndicatorStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/SwitchStyle.qml b/deployment_test/QtQuick/Controls/Styles/Base/SwitchStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..39db036b61d49488ef6b3f9cff0f0dc2210b159a --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Base/SwitchStyle.qml @@ -0,0 +1,169 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype SwitchStyle + \inqmlmodule QtQuick.Controls.Styles + \since 5.2 + \ingroup controlsstyling + \brief Provides custom styling for Switch. + + Example: + \qml + Switch { + style: SwitchStyle { + groove: Rectangle { + implicitWidth: 100 + implicitHeight: 20 + radius: 9 + border.color: control.activeFocus ? "darkblue" : "gray" + border.width: 1 + } + } + } + \endqml +*/ +Style { + id: switchstyle + + /*! The content padding. */ + padding { + top: 0 + left: 0 + right: 0 + bottom: 0 + } + + /*! This defines the switch handle. */ + property Component handle: Rectangle { + opacity: control.enabled ? 1.0 : 0.5 + implicitWidth: Math.round((parent.parent.width - padding.left - padding.right)/2) + implicitHeight: control.height - padding.top - padding.bottom + + border.color: control.activeFocus ? Qt.darker(highlight, 2) : Qt.darker(button, 2) + property color bg: control.activeFocus ? Qt.darker(highlight, 1.2) : button + property color highlight: SystemPaletteSingleton.highlight(control.enabled) + property color button: SystemPaletteSingleton.button(control.enabled) + gradient: Gradient { + GradientStop {color: Qt.lighter(bg, 1.4) ; position: 0} + GradientStop {color: bg ; position: 1} + } + + radius: 2 + } + + /*! This property holds the background groove of the switch. */ + property Component groove: Rectangle { + property color shadow: control.checked ? Qt.darker(highlight, 1.2): "#999" + property color bg: control.checked ? highlight:"#bbb" + property color highlight: SystemPaletteSingleton.highlight(control.enabled) + + implicitWidth: Math.round(implicitHeight * 3) + implicitHeight: Math.max(16, Math.round(TextSingleton.implicitHeight)) + + border.color: "gray" + color: "red" + + radius: 2 + Behavior on shadow {ColorAnimation{ duration: 80 }} + Behavior on bg {ColorAnimation{ duration: 80 }} + gradient: Gradient { + GradientStop {color: shadow; position: 0} + GradientStop {color: bg ; position: 0.2} + GradientStop {color: bg ; position: 1} + } + Rectangle { + color: "#44ffffff" + height: 1 + anchors.bottom: parent.bottom + anchors.bottomMargin: -1 + width: parent.width - 2 + x: 1 + } + } + + /*! \internal */ + property Component panel: Item { + + implicitWidth: Math.round(grooveLoader.width + padding.left + padding.right) + implicitHeight: grooveLoader.implicitHeight + padding.top + padding.bottom + + property var __handle: handleLoader + property int min: padding.left + property int max: grooveLoader.width - handleLoader.width - padding.right + + Loader { + id: grooveLoader + y: padding.top + x: padding.left + + sourceComponent: groove + anchors.verticalCenter: parent.verticalCenter + + + Loader { + id: handleLoader + + z:1 + + x: control.checked ? max : min + + anchors.top: grooveLoader.top + anchors.bottom: grooveLoader.bottom + anchors.topMargin: padding.top + anchors.bottomMargin: padding.bottom + + Behavior on x { + id: behavior + enabled: handleLoader.status === Loader.Ready + NumberAnimation { + duration: 150 + easing.type: Easing.OutCubic + } + } + + sourceComponent: handle + } + } + } +} diff --git a/deployment_test/QtQuick/Controls/Styles/Base/SwitchStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Base/SwitchStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..a3c105a4409c7bc7130eb2186379991823aea84d Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/SwitchStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/TabViewStyle.qml b/deployment_test/QtQuick/Controls/Styles/Base/TabViewStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..2d7d2d913726cf2445ce6a623401f04544ccc60c --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Base/TabViewStyle.qml @@ -0,0 +1,194 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype TabViewStyle + \inqmlmodule QtQuick.Controls.Styles + \since 5.1 + \ingroup viewsstyling + \ingroup controlsstyling + \brief Provides custom styling for TabView. + +\qml + TabView { + id: frame + anchors.fill: parent + anchors.margins: 4 + Tab { title: "Tab 1" } + Tab { title: "Tab 2" } + Tab { title: "Tab 3" } + + style: TabViewStyle { + frameOverlap: 1 + tab: Rectangle { + color: styleData.selected ? "steelblue" :"lightsteelblue" + border.color: "steelblue" + implicitWidth: Math.max(text.width + 4, 80) + implicitHeight: 20 + radius: 2 + Text { + id: text + anchors.centerIn: parent + text: styleData.title + color: styleData.selected ? "white" : "black" + } + } + frame: Rectangle { color: "steelblue" } + } + } +\endqml + +*/ + +Style { + + /*! The \l ScrollView this style is attached to. */ + readonly property TabView control: __control + + /*! This property holds whether the user can move the tabs. + Tabs are not movable by default. */ + property bool tabsMovable: false + + /*! This property holds the horizontal alignment of + the tab buttons. Supported values are: + \list + \li Qt.AlignLeft (default) + \li Qt.AlignHCenter + \li Qt.AlignRight + \endlist + */ + property int tabsAlignment: Qt.AlignLeft + + /*! This property holds the amount of overlap there are between + individual tab buttons. */ + property int tabOverlap: 1 + + /*! This property holds the amount of overlap there are between + individual tab buttons and the frame. */ + property int frameOverlap: 2 + + /*! This defines the tab frame. */ + property Component frame: Rectangle { + color: "#dcdcdc" + border.color: "#aaa" + + Rectangle { + anchors.fill: parent + color: "transparent" + border.color: "#66ffffff" + anchors.margins: 1 + } + } + + /*! This defines the tab. You can access the tab state through the + \c styleData property, with the following properties: + + \table + \row \li readonly property int \b styleData.index \li This is the current tab index. + \row \li readonly property bool \b styleData.selected \li This is the active tab. + \row \li readonly property string \b styleData.title \li Tab title text. + \row \li readonly property bool \b styleData.nextSelected \li The next tab is selected. + \row \li readonly property bool \b styleData.previousSelected \li The previous tab is selected. + \row \li readonly property bool \b styleData.pressed \li The tab is being pressed. (since QtQuick.Controls.Styles 1.3) + \row \li readonly property bool \b styleData.hovered \li The tab is being hovered. + \row \li readonly property bool \b styleData.enabled \li The tab is enabled. (since QtQuick.Controls.Styles 1.2) + \row \li readonly property bool \b styleData.activeFocus \li The tab button has keyboard focus. + \row \li readonly property bool \b styleData.availableWidth \li The available width for the tabs. + \row \li readonly property bool \b styleData.totalWidth \li The total width of the tabs. (since QtQuick.Controls.Styles 1.2) + \endtable + */ + property Component tab: Item { + scale: control.tabPosition === Qt.TopEdge ? 1 : -1 + + property int totalOverlap: tabOverlap * (control.count - 1) + property real maxTabWidth: control.count > 0 ? (styleData.availableWidth + totalOverlap) / control.count : 0 + + implicitWidth: Math.round(Math.min(maxTabWidth, textitem.implicitWidth + 20)) + implicitHeight: Math.round(textitem.implicitHeight + 10) + + Item { + anchors.fill: parent + anchors.bottomMargin: styleData.selected ? 0 : 2 + BorderImage { + anchors.fill: parent + source: styleData.selected ? "images/tab_selected.png" : "images/tab.png" + border.top: 6 + border.bottom: 6 + border.left: 6 + border.right: 6 + anchors.topMargin: styleData.selected ? 0 : 1 + } + } + Text { + id: textitem + anchors.fill: parent + anchors.leftMargin: 4 + anchors.rightMargin: 4 + verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignHCenter + text: styleData.title + elide: Text.ElideMiddle + renderType: Settings.isMobile ? Text.QtRendering : Text.NativeRendering + scale: control.tabPosition === Qt.TopEdge ? 1 : -1 + color: SystemPaletteSingleton.text(styleData.enabled) + Rectangle { + anchors.centerIn: parent + width: textitem.paintedWidth + 6 + height: textitem.paintedHeight + 4 + visible: (styleData.activeFocus && styleData.selected) + radius: 3 + color: "#224f9fef" + border.color: "#47b" + } + } + } + + /*! This defines the left corner. */ + property Component leftCorner: null + + /*! This defines the right corner. */ + property Component rightCorner: null + + /*! This defines the tab bar background. */ + property Component tabBar: null +} diff --git a/deployment_test/QtQuick/Controls/Styles/Base/TabViewStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Base/TabViewStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..cea0d59dc781d4aca174eb429529d80f24d3331c Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/TabViewStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/TableViewStyle.qml b/deployment_test/QtQuick/Controls/Styles/Base/TableViewStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..f7a6bfa1aa56a79fe69216a4a550ad987efa88e5 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Base/TableViewStyle.qml @@ -0,0 +1,47 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.5 +import QtQuick.Controls 1.4 + +BasicTableViewStyle { + id: root + + readonly property TableView control: __control +} diff --git a/deployment_test/QtQuick/Controls/Styles/Base/TableViewStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Base/TableViewStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..2ad2120ae30124601ec21ff483d580db513e9679 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/TableViewStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/TextAreaStyle.qml b/deployment_test/QtQuick/Controls/Styles/Base/TextAreaStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..8c08e211d14d6b9b262897d5ec40d54a609f9b7e --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Base/TextAreaStyle.qml @@ -0,0 +1,158 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype TextAreaStyle + \inqmlmodule QtQuick.Controls.Styles + \since 5.2 + \ingroup controlsstyling + \brief Provides custom styling for TextArea. + + Example: + \qml + TextArea { + style: TextAreaStyle { + textColor: "#333" + selectionColor: "steelblue" + selectedTextColor: "#eee" + backgroundColor: "#eee" + } + } + \endqml +*/ + +ScrollViewStyle { + id: style + + /*! The \l TextArea this style is attached to. */ + readonly property TextArea control: __control + + /*! The current font. */ + property font font + + /*! The text color. */ + property color textColor: SystemPaletteSingleton.text(control.enabled) + + /*! The text highlight color, used behind selections. */ + property color selectionColor: SystemPaletteSingleton.highlight(control.enabled) + + /*! The highlighted text color, used in selections. */ + property color selectedTextColor: SystemPaletteSingleton.highlightedText(control.enabled) + + /*! The background color. */ + property color backgroundColor: control.backgroundVisible ? SystemPaletteSingleton.base(control.enabled) : "transparent" + + /*! + \qmlproperty enumeration renderType + + Override the default rendering type for the control. + + Supported render types are: + \list + \li Text.QtRendering + \li Text.NativeRendering + \endlist + + The default value is platform dependent. + + \sa Text::renderType + */ + property int renderType: Settings.isMobile ? Text.QtRendering : Text.NativeRendering + + /*! The default margin, in pixels, around the text in the TextArea. + \since QtQuick.Controls.Styles 1.3 + \sa TextArea::textMargin */ + property real textMargin: 4 + + /*! \internal + The cursor handle. + \since QtQuick.Controls.Styles 1.3 + + The parent of the handle is positioned to the top left corner of + the cursor position. The interactive area is determined by the + geometry of the handle delegate. + + The following signals and read-only properties are available within the scope + of the handle delegate: + \table + \row \li \b {styleData.activated()} [signal] \li Emitted when the handle is activated ie. the editor is clicked. + \row \li \b {styleData.pressed} : bool \li Whether the handle is pressed. + \row \li \b {styleData.position} : int \li The character position of the handle. + \row \li \b {styleData.lineHeight} : real \li The height of the line the handle is on. + \row \li \b {styleData.hasSelection} : bool \li Whether the editor has selected text. + \endtable + */ + property Component __cursorHandle + + /*! \internal + The selection handle. + \since QtQuick.Controls.Styles 1.3 + + The parent of the handle is positioned to the top left corner of + the first selected character. The interactive area is determined + by the geometry of the handle delegate. + + The following signals and read-only properties are available within the scope + of the handle delegate: + \table + \row \li \b {styleData.activated()} [signal] \li Emitted when the handle is activated ie. the editor is clicked. + \row \li \b {styleData.pressed} : bool \li Whether the handle is pressed. + \row \li \b {styleData.position} : int \li The character position of the handle. + \row \li \b {styleData.lineHeight} : real \li The height of the line the handle is on. + \row \li \b {styleData.hasSelection} : bool \li Whether the editor has selected text. + \endtable + */ + property Component __selectionHandle + + /*! \internal + The cursor delegate. + \since QtQuick.Controls.Styles 1.3 + */ + property Component __cursorDelegate + + /*! \internal + The delegate for the cut/copy/paste menu. + \since QtQuick.Controls.Styles 1.4 + */ + property Component __editMenu +} diff --git a/deployment_test/QtQuick/Controls/Styles/Base/TextAreaStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Base/TextAreaStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..4c8f422bc76ea87f3a112dcb59d292d84654126e Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/TextAreaStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/TextFieldStyle.qml b/deployment_test/QtQuick/Controls/Styles/Base/TextFieldStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..338b7af09447c119fe4a87f552f7d181497ef278 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Base/TextFieldStyle.qml @@ -0,0 +1,221 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype TextFieldStyle + \inqmlmodule QtQuick.Controls.Styles + \since 5.1 + \ingroup controlsstyling + \brief Provides custom styling for TextField. + + Example: + \qml + TextField { + style: TextFieldStyle { + textColor: "black" + background: Rectangle { + radius: 2 + implicitWidth: 100 + implicitHeight: 24 + border.color: "#333" + border.width: 1 + } + } + } + \endqml +*/ + +Style { + id: style + + /*! The \l TextField this style is attached to. */ + readonly property TextField control: __control + + /*! The content margins of the text field. */ + padding { top: 4 ; left: Math.round(control.__contentHeight/3) ; right: control.__contentHeight/3 ; bottom: 4 } + + /*! The current font. */ + property font font + + /*! The text color. */ + property color textColor: SystemPaletteSingleton.text(control.enabled) + + /*! The text highlight color, used behind selections. */ + property color selectionColor: SystemPaletteSingleton.highlight(control.enabled) + + /*! The highlighted text color, used in selections. */ + property color selectedTextColor: SystemPaletteSingleton.highlightedText(control.enabled) + + /*! + \qmlproperty string passwordCharacter + \since QtQuick.Controls.Styles 1.4 + + The password character that is displayed when echoMode + on the TextField is set to TextInput.Password or + TextInput.PasswordEchoOnEdit. + */ + property string passwordCharacter: Qt.styleHints.passwordMaskCharacter + + /*! + \qmlproperty enumeration renderType + \since QtQuick.Controls.Styles 1.1 + + Override the default rendering type for the control. + + Supported render types are: + \list + \li Text.QtRendering + \li Text.NativeRendering + \endlist + + The default value is platform dependent. + + \sa Text::renderType + */ + property int renderType: Settings.isMobile ? Text.QtRendering : Text.NativeRendering + + /*! The placeholder text color, used when the text field is empty. + \since QtQuick.Controls.Styles 1.1 + */ + property color placeholderTextColor: Qt.rgba(0, 0, 0, 0.5) + + /*! The background of the text field. */ + property Component background: Item { + Rectangle { + anchors.fill: parent + anchors.bottomMargin: -1 + color: "#44ffffff" + radius: baserect.radius + } + Rectangle { + id: baserect + gradient: Gradient { + GradientStop {color: "#e0e0e0" ; position: 0} + GradientStop {color: "#fff" ; position: 0.1} + GradientStop {color: "#fff" ; position: 1} + } + radius: control.__contentHeight * 0.16 + anchors.fill: parent + border.color: control.activeFocus ? "#47b" : "#999" + } + } + + /*! \internal */ + property Component panel: Item { + anchors.fill: parent + + property int topMargin: padding.top + property int leftMargin: padding.left + property int rightMargin: padding.right + property int bottomMargin: padding.bottom + + property color textColor: style.textColor + property color selectionColor: style.selectionColor + property color selectedTextColor: style.selectedTextColor + + implicitWidth: backgroundLoader.implicitWidth || Math.round(control.__contentHeight * 8) + implicitHeight: backgroundLoader.implicitHeight || Math.max(25, Math.round(control.__contentHeight * 1.2)) + baselineOffset: padding.top + control.__baselineOffset + + property color placeholderTextColor: style.placeholderTextColor + property font font: style.font + + Loader { + id: backgroundLoader + sourceComponent: background + anchors.fill: parent + } + } + + /*! \internal + The cursor handle. + \since QtQuick.Controls.Styles 1.3 + + The parent of the handle is positioned to the top left corner of + the cursor position. The interactive area is determined by the + geometry of the handle delegate. + + The following signals and read-only properties are available within the scope + of the handle delegate: + \table + \row \li \b {styleData.activated()} [signal] \li Emitted when the handle is activated ie. the editor is clicked. + \row \li \b {styleData.pressed} : bool \li Whether the handle is pressed. + \row \li \b {styleData.position} : int \li The character position of the handle. + \row \li \b {styleData.lineHeight} : real \li The height of the line the handle is on. + \row \li \b {styleData.hasSelection} : bool \li Whether the editor has selected text. + \endtable + */ + property Component __cursorHandle + + /*! \internal + The selection handle. + \since QtQuick.Controls.Styles 1.3 + + The parent of the handle is positioned to the top left corner of + the first selected character. The interactive area is determined + by the geometry of the handle delegate. + + The following signals and read-only properties are available within the scope + of the handle delegate: + \table + \row \li \b {styleData.activated()} [signal] \li Emitted when the handle is activated ie. the editor is clicked. + \row \li \b {styleData.pressed} : bool \li Whether the handle is pressed. + \row \li \b {styleData.position} : int \li The character position of the handle. + \row \li \b {styleData.lineHeight} : real \li The height of the line the handle is on. + \row \li \b {styleData.hasSelection} : bool \li Whether the editor has selected text. + \endtable + */ + property Component __selectionHandle + + /*! \internal + The cursor delegate. + \since QtQuick.Controls.Styles 1.3 + */ + property Component __cursorDelegate + + /*! \internal + The delegate for the cut/copy/paste menu. + \since QtQuick.Controls.Styles 1.4 + */ + property Component __editMenu +} diff --git a/deployment_test/QtQuick/Controls/Styles/Base/TextFieldStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Base/TextFieldStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..fb5607a63e2129f5a6391fdf13239f2438888142 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/TextFieldStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/ToggleButtonStyle.qml b/deployment_test/QtQuick/Controls/Styles/Base/ToggleButtonStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..2c47b4bf680f3d9b4c9da8c3fe86f8ba5aed4885 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Base/ToggleButtonStyle.qml @@ -0,0 +1,290 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Extras module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtGraphicalEffects 1.0 +import QtQuick.Controls.Styles 1.4 +import QtQuick.Extras 1.4 +import QtQuick.Extras.Private 1.0 +import QtQuick.Extras.Private.CppUtils 1.0 + +/*! + \qmltype ToggleButtonStyle + \inqmlmodule QtQuick.Controls.Styles + \since 5.5 + \ingroup controlsstyling + \brief Provides custom styling for ToggleButton. + + You can create a custom toggle button by replacing the same delegates that + \l {ButtonStyle} provides. +*/ + +CircularButtonStyle { + id: circularButtonStyle + + /*! + The \l ToggleButton that this style is attached to. + */ + readonly property ToggleButton control: __control + + /*! + The gradient that is displayed on the inactive state indicator. The + inactive state indicator will be the checked gradient when the button + is unchecked, and the unchecked gradient when the button is checked. + + \sa checkedGradient, uncheckedGradient + */ + property Gradient inactiveGradient: Gradient { + GradientStop { + position: 0 + color: commonStyleHelper.inactiveColor + } + GradientStop { + position: 1 + color: commonStyleHelper.inactiveColorShine + } + } + + /*! + The gradient that is displayed on the checked state indicator. + + \sa uncheckedGradient, inactiveGradient + */ + property Gradient checkedGradient: Gradient { + GradientStop { + position: 0 + color: commonStyleHelper.onColor + } + GradientStop { + position: 1 + color: commonStyleHelper.onColorShine + } + } + + /*! + The gradient that is displayed on the unchecked state indicator. + + \sa checkedGradient, inactiveGradient + */ + property Gradient uncheckedGradient: Gradient { + GradientStop { + position: 0 + color: commonStyleHelper.offColor + } + GradientStop { + position: 1 + color: commonStyleHelper.offColorShine + } + } + + /*! + The color that is used for the drop shadow below the checked state + indicator. + + \sa uncheckedDropShadowColor + */ + property color checkedDropShadowColor: commonStyleHelper.onColor + + /*! + The color that is used for the drop shadow below the checked state + indicator. + + \sa checkedDropShadowColor + */ + property color uncheckedDropShadowColor: commonStyleHelper.offColor + + CommonStyleHelper { + id: commonStyleHelper + } + + background: Item { + implicitWidth: __buttonHelper.implicitWidth + implicitHeight: __buttonHelper.implicitHeight + + Connections { + target: control + function onPressedChanged() { + backgroundCanvas.requestPaint(); + } + + function onCheckedChanged() { + uncheckedCanvas.requestPaint(); + checkedCanvas.requestPaint(); + } + } + + Connections { + target: circularButtonStyle + + function onCheckedGradientChanged() { checkedCanvas.requestPaint() } + function onCheckedDropShadowColorChanged() { checkedCanvas.requestPaint() } + function onUncheckedGradientChanged() { uncheckedCanvas.requestPaint() } + function onUncheckedDropShadowColorChanged() { uncheckedCanvas.requestPaint() } + function onInactiveGradientChanged() { + checkedCanvas.requestPaint(); + uncheckedCanvas.requestPaint(); + } + } + + Connections { + target: circularButtonStyle.checkedGradient + function onUpdated() { checkedCanvas.requestPaint() } + } + + Connections { + target: circularButtonStyle.uncheckedGradient + function onUpdated() { uncheckedCanvas.requestPaint() } + } + + Connections { + target: circularButtonStyle.inactiveGradient + function onUpdated() { + uncheckedCanvas.requestPaint(); + checkedCanvas.requestPaint(); + } + } + + Canvas { + id: backgroundCanvas + anchors.fill: parent + + onPaint: { + var ctx = getContext("2d"); + __buttonHelper.paintBackground(ctx); + } + } + + Canvas { + id: uncheckedCanvas + anchors.fill: parent + anchors.margins: -(__buttonHelper.radius * 3) + visible: control.checked + + readonly property real xCenter: width / 2 + readonly property real yCenter: height / 2 + + onPaint: { + var ctx = getContext("2d"); + ctx.reset(); + + /* Draw unchecked indicator */ + ctx.beginPath(); + ctx.lineWidth = __buttonHelper.outerArcLineWidth - __buttonHelper.innerArcLineWidth; + ctx.arc(xCenter, yCenter, __buttonHelper.outerArcRadius + __buttonHelper.innerArcLineWidth / 2, + MathUtils.degToRad(180), MathUtils.degToRad(270), false); + var gradient = ctx.createLinearGradient(xCenter, yCenter + __buttonHelper.radius, + xCenter, yCenter - __buttonHelper.radius); + var relevantGradient = control.checked ? inactiveGradient : uncheckedGradient; + for (var i = 0; i < relevantGradient.stops.length; ++i) { + gradient.addColorStop(relevantGradient.stops[i].position, relevantGradient.stops[i].color); + } + ctx.strokeStyle = gradient; + ctx.stroke(); + } + } + + Canvas { + id: checkedCanvas + anchors.fill: parent + anchors.margins: -(__buttonHelper.radius * 3) + visible: !control.checked + + readonly property real xCenter: width / 2 + readonly property real yCenter: height / 2 + + onPaint: { + var ctx = getContext("2d"); + ctx.reset(); + + /* Draw checked indicator */ + ctx.beginPath(); + ctx.lineWidth = __buttonHelper.outerArcLineWidth - __buttonHelper.innerArcLineWidth; + ctx.arc(xCenter, yCenter, __buttonHelper.outerArcRadius + __buttonHelper.innerArcLineWidth / 2, + MathUtils.degToRad(270), MathUtils.degToRad(0), false); + var gradient = ctx.createLinearGradient(xCenter, yCenter + __buttonHelper.radius, + xCenter, yCenter - __buttonHelper.radius); + var relevantGradient = control.checked ? checkedGradient : inactiveGradient; + for (var i = 0; i < relevantGradient.stops.length; ++i) { + gradient.addColorStop(relevantGradient.stops[i].position, relevantGradient.stops[i].color); + } + ctx.strokeStyle = gradient; + ctx.stroke(); + } + } + + DropShadow { + id: uncheckedDropShadow + anchors.fill: uncheckedCanvas + cached: true + color: uncheckedDropShadowColor + source: uncheckedCanvas + visible: !control.checked + } + + DropShadow { + id: checkedDropShadow + anchors.fill: checkedCanvas + cached: true + color: checkedDropShadowColor + source: checkedCanvas + visible: control.checked + } + } + + panel: Item { + implicitWidth: backgroundLoader.implicitWidth + implicitHeight: backgroundLoader.implicitHeight + + Loader { + id: backgroundLoader + anchors.fill: parent + sourceComponent: background + } + + Loader { + id: labelLoader + sourceComponent: label + anchors.fill: parent + anchors.leftMargin: padding.left + anchors.topMargin: padding.top + anchors.rightMargin: padding.right + anchors.bottomMargin: padding.bottom + } + } +} diff --git a/deployment_test/QtQuick/Controls/Styles/Base/ToggleButtonStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Base/ToggleButtonStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..26514fc9f44674683614f89ad7fd9a1a9197fd78 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/ToggleButtonStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/ToolBarStyle.qml b/deployment_test/QtQuick/Controls/Styles/Base/ToolBarStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..8c34efa91391db143ef7a648d10c987aadd76de1 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Base/ToolBarStyle.qml @@ -0,0 +1,126 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype ToolBarStyle + \inqmlmodule QtQuick.Controls.Styles + \ingroup controlsstyling + \since 5.2 + \brief Provides custom styling for ToolBar. + + The tool bar can be defined by overriding the background component and + setting the content padding. + + Example: + \qml + ToolBar { + style: ToolBarStyle { + padding { + left: 8 + right: 8 + top: 3 + bottom: 3 + } + background: Rectangle { + implicitWidth: 100 + implicitHeight: 40 + border.color: "#999" + gradient: Gradient { + GradientStop { position: 0 ; color: "#fff" } + GradientStop { position: 1 ; color: "#eee" } + } + } + } + } + \endqml +*/ + +Style { + + /*! The content padding inside the tool bar. */ + padding { + left: 6 + right: 6 + top: 3 + bottom: 3 + } + + /*! This defines the background of the tool bar. */ + property Component background: Item { + implicitHeight: 40 + implicitWidth: 200 + Rectangle { + anchors.fill: parent + gradient: Gradient{ + GradientStop{color: "#eee" ; position: 0} + GradientStop{color: "#ccc" ; position: 1} + } + Rectangle { + anchors.bottom: parent.bottom + width: parent.width + height: 1 + color: "#999" + } + } + } + + /*! This defines the menu button appearance on platforms + that have a unified tool bar and menu bar. + + \since QtQuick.Controls.Styles 1.3 + + The following read-only properties are available within the scope + of the menu button delegate: + \table + \row \li \b {styleData.pressed} : bool \li Whether the button is pressed. + \row \li \b {styleData.hovered} : bool \li Whether the button is hovered. + \row \li \b {styleData.activeFocus} : bool \li Whether the button has active focus. + \endtable + */ + property Component menuButton: null + + /*! This defines the panel of the tool bar. */ + property Component panel: Loader { + sourceComponent: background + } +} diff --git a/deployment_test/QtQuick/Controls/Styles/Base/ToolBarStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Base/ToolBarStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..5c5bc3f9da042e1b0fd5728ab5706dae714f14c5 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/ToolBarStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/ToolButtonStyle.qml b/deployment_test/QtQuick/Controls/Styles/Base/ToolButtonStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..9387188c967392f8b6b20dda93681414ca803e81 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Base/ToolButtonStyle.qml @@ -0,0 +1,111 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype ToolButtonStyle + \internal + \ingroup controlsstyling + \inqmlmodule QtQuick.Controls.Styles +*/ +Style { + readonly property ToolButton control: __control + property Component panel: Item { + id: styleitem + implicitWidth: (hasIcon ? icon.width : Math.max(label.implicitWidth + frame.border.left + frame.border.right, 36)) + + (arrow.visible ? 10 : 0) + implicitHeight: hasIcon ? icon.height : Math.max(label.implicitHeight, 36) + + readonly property bool hasIcon: icon.status === Image.Ready || icon.status === Image.Loading + + Rectangle { + anchors.fill: parent + visible: control.pressed || (control.checkable && control.checked) + color: "lightgray" + radius:4 + border.color: "#aaa" + } + Item { + anchors.left: parent.left + anchors.right: arrow.left + anchors.top: parent.top + anchors.bottom: parent.bottom + clip: true + Text { + id: label + visible: !hasIcon + anchors.centerIn: parent + text: StyleHelpers.stylizeMnemonics(control.text) + renderType: Settings.isMobile ? Text.QtRendering : Text.NativeRendering + } + Image { + id: icon + anchors.centerIn: parent + source: control.iconSource + } + } + + BorderImage { + id: frame + anchors.fill: parent + anchors.margins: -1 + anchors.topMargin: -2 + anchors.rightMargin: 0 + source: "images/focusframe.png" + visible: control.activeFocus + border.left: 4 + border.right: 4 + border.top: 4 + border.bottom: 4 + } + + Image { + id: arrow + visible: control.menu !== null + source: visible ? "images/arrow-down.png" : "" + anchors.verticalCenter: parent.verticalCenter + anchors.right: parent.right + anchors.rightMargin: visible ? 3 : 0 + opacity: control.enabled ? 0.7 : 0.5 + } + } +} diff --git a/deployment_test/QtQuick/Controls/Styles/Base/ToolButtonStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Base/ToolButtonStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..1daee201b163faff7866cc20faeceea777e08240 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/ToolButtonStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/TreeViewStyle.qml b/deployment_test/QtQuick/Controls/Styles/Base/TreeViewStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..72825ccc1c0a0b0117f73d7cabe71e33f7903596 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Base/TreeViewStyle.qml @@ -0,0 +1,68 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.5 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Private 1.0 + +BasicTableViewStyle { + id: root + + readonly property TreeView control: __control + + property int indentation: 16 + + property Component branchDelegate: Item { + width: indentation + height: 16 + Text { + visible: styleData.column === 0 && styleData.hasChildren + text: styleData.isExpanded ? "\u25bc" : "\u25b6" + color: !control.activeFocus || styleData.selected ? styleData.textColor : "#666" + font.pointSize: 10 + renderType: Text.NativeRendering + style: Text.PlainText + anchors.centerIn: parent + anchors.verticalCenterOffset: 2 + } + } + + __branchDelegate: branchDelegate + __indentation: indentation +} diff --git a/deployment_test/QtQuick/Controls/Styles/Base/TreeViewStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Base/TreeViewStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..cc409ffe328dc1f001c9023d956e4f9f436b3bb2 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/TreeViewStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/TumblerStyle.qml b/deployment_test/QtQuick/Controls/Styles/Base/TumblerStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..c70aea6c8dffc03b8ff4dfba773a71a2053b29fd --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Base/TumblerStyle.qml @@ -0,0 +1,334 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Extras module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtGraphicalEffects 1.0 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 +import QtQuick.Controls.Private 1.0 +import QtQuick.Extras 1.4 +import QtQuick.Extras.Private 1.0 + +/*! + \qmltype TumblerStyle + \inqmlmodule QtQuick.Controls.Styles + \since 5.5 + \ingroup controlsstyling + \brief Provides custom styling for Tumbler. + + You can create a custom tumbler by replacing the following delegates: + \list + \li \l background + \li \l foreground + \li \l separator + \li \l delegate + \li \l highlight + \li \l frame + \endlist +*/ + +Style { + id: tumblerStyle + + padding.left: __padding + padding.right: __padding + padding.top: __padding + padding.bottom: __padding + + /*! + The \l Tumbler that this style is attached to. + */ + readonly property Tumbler control: __control + + /*! + \obsolete + + This property holds the spacing between each delegate. + + This property has no effect. + */ + property real spacing: 0 + + /*! + This property holds the amount of items visible in each column. + + This value should be an odd number. + */ + property int visibleItemCount: 3 + + /*! + \internal + + TODO: how do we handle differing padding values? + */ + readonly property real __padding: Math.max(6, Math.round(TextSingleton.implicitHeight * 0.4)) + /*! \internal */ + property real __delegateHeight: 0 + /*! \internal */ + property real __separatorWidth: 0 + + /*! + The background of the tumbler. + */ + property Component background: Rectangle { + gradient: Gradient { + GradientStop { position: 0.00; color: "#acacac" } + GradientStop { position: 0.12; color: "#d5d5d5" } + GradientStop { position: 0.24; color: "#e8e8e8" } + GradientStop { position: 0.39; color: "#ffffff" } + GradientStop { position: 0.61; color: "#ffffff" } + GradientStop { position: 0.76; color: "#e8e8e8" } + GradientStop { position: 0.88; color: "#d5d5d5" } + GradientStop { position: 1.00; color: "#acacac" } + } + } + + /*! + The foreground of the tumbler. + */ + property Component foreground: Item { + clip: true + + Rectangle { + id: rect + anchors.fill: parent + // Go one pixel larger than our parent so that we can hide our one pixel frame + // that the shadow is created from. + anchors.margins: -1 + color: "transparent" + border.color: "black" + visible: false + } + + DropShadow { + anchors.fill: rect + source: rect + samples: 15 + spread: 0.45 + cached: true + } + } + + /*! + The separator between each column. + + The \l {Item::}{implicitWidth} property must be set, and should be the + same value for each separator. + */ + property Component separator: Canvas { + implicitWidth: Math.max(10, Math.round(TextSingleton.implicitHeight * 0.4)) + + onPaint: { + var ctx = getContext("2d"); + ctx.reset(); + + ctx.fillStyle = "#11000000"; + ctx.fillRect(0, 0, width, height); + ctx.fillStyle = "#11000000"; + ctx.fillRect(width * 0.2, 0, width * 0.6, height); + ctx.fillStyle = "#66000000"; + ctx.fillRect(width * 0.4, 0, width * 0.2, height); + } + } + + /*! + The foreground of each column. + + In terms of stacking order, this component is displayed above the + delegate and highlight components, but below the foreground component. + + \table + \row \li \c {readonly property int} \b styleData.column + \li The index of the column that contains this item. + \row \li \c {readonly property bool} \b styleData.activeFocus + \li \c true if the column that contains this item has active focus. + + \endtable + + Delegates for items in specific columns can be defined using + TumblerColumn's \l {TumblerColumn::columnForeground}{columnForeground} + property, which will be used instead of this component. + */ + property Component columnForeground + + /*! + The frame around the tumbler. + + The \l {Item::}{implicitWidth} property must be set, and should be the + same value for each separator. + */ + property Component frame: Canvas { + onPaint: { + // workaround for QTBUG-40792 + var ctx = getContext("2d"); + ctx.reset(); + + var cornerRadius = Math.max(2, Math.round(TextSingleton.implicitHeight * 0.2)); + var outerLineWidth = Math.max(1, Math.round(TextSingleton.implicitHeight * 0.05)); + var innerLineWidth = __padding - outerLineWidth; + + ctx.save(); + ctx.lineWidth = outerLineWidth; + ctx.beginPath(); + ctx.roundedRect(0, 0, width, height, cornerRadius, cornerRadius); + ctx.roundedRect(outerLineWidth, outerLineWidth, width - outerLineWidth * 2, height - outerLineWidth * 2, + cornerRadius - outerLineWidth, cornerRadius - outerLineWidth); + ctx.clip(); + + ctx.beginPath(); + ctx.rect(0, 0, width, height); + var gradient = ctx.createLinearGradient(width / 2, 0, width / 2, height); + gradient.addColorStop(0, "#33b3b3b3"); + gradient.addColorStop(1, "#4ce6e6e6"); + ctx.fillStyle = gradient; + ctx.fill(); + ctx.restore(); + + // The inner stroke must account for its corner radius. + cornerRadius -= outerLineWidth; + + ctx.save(); + ctx.lineWidth = innerLineWidth; + ctx.beginPath(); + ctx.roundedRect(outerLineWidth, outerLineWidth, width - outerLineWidth * 2, height - outerLineWidth * 2, + cornerRadius, cornerRadius); + ctx.roundedRect(outerLineWidth + innerLineWidth, outerLineWidth + innerLineWidth, + width - outerLineWidth * 2 - innerLineWidth * 2, height - outerLineWidth * 2 - innerLineWidth * 2, + cornerRadius - innerLineWidth, cornerRadius - innerLineWidth); + ctx.clip(); + + ctx.beginPath(); + ctx.rect(0, 0, width, height); + gradient = ctx.createLinearGradient(width / 2, 0, width / 2, height); + gradient.addColorStop(0, "#4c666666"); + gradient.addColorStop(1, "#40cccccc"); + ctx.fillStyle = gradient; + ctx.fill(); + ctx.restore(); + } + } + + /*! + The delegate provides a template defining each item instantiated in the + column. Each instance of this component has access to the following properties: + + \table + \row \li \c {readonly property int} \b styleData.index + \li The index of this delegate in the model. + \row \li \c {readonly property int} \b styleData.column + \li The index of the column that contains this item. + \row \li \c {readonly property real} \b styleData.value + \li The value for this delegate from the model. + \row \li \c {readonly property bool} \b styleData.current + \li \c true if this delegate is the current item. + \row \li \c {readonly property real} \b styleData.displacement + \li \c A value from \c {-visibleItemCount / 2} to + \c {visibleItemCount / 2} which represents how far away + this item is from being the current item, with \c 0 being + completely current. + + For example, the item below will be 40% opaque when + it is not the current item, and transition to 100% + opacity when it becomes the current item: + + \code + delegate: Text { + text: styleData.value + opacity: 0.4 + Math.max(0, 1 - Math.abs(styleData.displacement)) * 0.6 + } + \endcode + \row \li \c {readonly property bool} \b styleData.activeFocus + \li \c true if the column that contains this item has active focus. + + \endtable + + Properties of the model are also available depending upon the type of + \l {qml-data-models}{Data Model}. + + Delegates for items in specific columns can be defined using + TumblerColumn's \l {TumblerColumn::delegate}{delegate} property, which + will be used instead of this delegate. + + The \l {Item::}{implicitHeight} property must be set, and it must be + the same for each delegate. + */ + property Component delegate: Item { + implicitHeight: (control.height - padding.top - padding.bottom) / tumblerStyle.visibleItemCount + + Text { + id: label + text: styleData.value + color: "#666666" + opacity: 0.4 + Math.max(0, 1 - Math.abs(styleData.displacement)) * 0.6 + font.pixelSize: Math.round(TextSingleton.font.pixelSize * 1.25) + anchors.centerIn: parent + } + } + + /*! + The delegate for the highlight of each column. + + Delegates for the highlight of specific columns can be defined using + TumblerColumn's \l {TumblerColumn::highlight}{highlight} property, + which will be used instead of this delegate. + + Each instance of this component has access to the following properties: + + \table + \row \li \c {readonly property int} \b styleData.index + \li The index of this column in the tumbler. + \row \li \c {readonly property int} \b styleData.columnIndex + \li The index of the column that contains this highlight. + \row \li \c {readonly property bool} \b styleData.activeFocus + \li \c true if the column that contains this highlight has active focus. + \endtable + */ + property Component highlight + + /*! \internal */ + property Component panel: Item { + implicitWidth: { + var w = (__separatorWidth * (control.columnCount - 1)) + tumblerStyle.padding.left + tumblerStyle.padding.right; + for (var i = 0; i < control.columnCount; ++i) + w += control.getColumn(i).width; + return w; + } + implicitHeight: TextSingleton.implicitHeight * 10 + tumblerStyle.padding.top + tumblerStyle.padding.bottom + } +} diff --git a/deployment_test/QtQuick/Controls/Styles/Base/TumblerStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Base/TumblerStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..a3a073a5669bf9c948e32c8d5368fa8952af5840 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/TumblerStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/images/arrow-down.png b/deployment_test/QtQuick/Controls/Styles/Base/images/arrow-down.png new file mode 100644 index 0000000000000000000000000000000000000000..dadd4f817d351422ee65859a721a26a1d4bf2607 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/images/arrow-down.png differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/images/arrow-down@2x.png b/deployment_test/QtQuick/Controls/Styles/Base/images/arrow-down@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..2829fd19670ddc8a3920e9026acf5db82af06c69 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/images/arrow-down@2x.png differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/images/arrow-left.png b/deployment_test/QtQuick/Controls/Styles/Base/images/arrow-left.png new file mode 100644 index 0000000000000000000000000000000000000000..7693fc72f6b9e872177520959898ef99103b80cc Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/images/arrow-left.png differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/images/arrow-left@2x.png b/deployment_test/QtQuick/Controls/Styles/Base/images/arrow-left@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..0005b3e70c4c90c585338db9f6cf6b94cfb1a59d Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/images/arrow-left@2x.png differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/images/arrow-right.png b/deployment_test/QtQuick/Controls/Styles/Base/images/arrow-right.png new file mode 100644 index 0000000000000000000000000000000000000000..b5cb2b270e447748235a40d86cdc54c250b4c470 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/images/arrow-right.png differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/images/arrow-right@2x.png b/deployment_test/QtQuick/Controls/Styles/Base/images/arrow-right@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..21b36f7bbc945ea6c3bbd589c65d3dea3e065872 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/images/arrow-right@2x.png differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/images/arrow-up.png b/deployment_test/QtQuick/Controls/Styles/Base/images/arrow-up.png new file mode 100644 index 0000000000000000000000000000000000000000..d8a8247c7d3d456960eaf411c3c2102981fc0cef Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/images/arrow-up.png differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/images/arrow-up@2x.png b/deployment_test/QtQuick/Controls/Styles/Base/images/arrow-up@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..1bd44d52ffd234cfe013564d8e23442c96255b1a Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/images/arrow-up@2x.png differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/images/button.png b/deployment_test/QtQuick/Controls/Styles/Base/images/button.png new file mode 100644 index 0000000000000000000000000000000000000000..3793f3ef4beafa273b41ea18f09c60616558104c Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/images/button.png differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/images/button_down.png b/deployment_test/QtQuick/Controls/Styles/Base/images/button_down.png new file mode 100644 index 0000000000000000000000000000000000000000..7b016fa9f8f70e2f3eccbadfa83e4c0f19f4dbb3 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/images/button_down.png differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/images/check.png b/deployment_test/QtQuick/Controls/Styles/Base/images/check.png new file mode 100644 index 0000000000000000000000000000000000000000..ad1df9572e99cebd676eaa8db86a66593b2f5345 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/images/check.png differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/images/check@2x.png b/deployment_test/QtQuick/Controls/Styles/Base/images/check@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..3eb4ae77dbe1eebf443419828964a2706d8b820b Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/images/check@2x.png differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/images/editbox.png b/deployment_test/QtQuick/Controls/Styles/Base/images/editbox.png new file mode 100644 index 0000000000000000000000000000000000000000..f0e6ee4365a3a2f8de552aa372db16b302636a53 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/images/editbox.png differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/images/focusframe.png b/deployment_test/QtQuick/Controls/Styles/Base/images/focusframe.png new file mode 100644 index 0000000000000000000000000000000000000000..aad56612deff244ba00cdd5347d27948f95c7776 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/images/focusframe.png differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/images/groupbox.png b/deployment_test/QtQuick/Controls/Styles/Base/images/groupbox.png new file mode 100644 index 0000000000000000000000000000000000000000..680e926a18afa3b2120eb1025a4ddf002cac2686 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/images/groupbox.png differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/images/header.png b/deployment_test/QtQuick/Controls/Styles/Base/images/header.png new file mode 100644 index 0000000000000000000000000000000000000000..aaf8f99ed55df7a219bca9654b550316fa5426f3 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/images/header.png differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/images/knob.png b/deployment_test/QtQuick/Controls/Styles/Base/images/knob.png new file mode 100644 index 0000000000000000000000000000000000000000..9a948fd8cbf667e802d7eae231464cfcba3c1a16 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/images/knob.png differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/images/leftanglearrow.png b/deployment_test/QtQuick/Controls/Styles/Base/images/leftanglearrow.png new file mode 100644 index 0000000000000000000000000000000000000000..1e479a3d8cdcb5725c7bd19ebda0407de6b56b55 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/images/leftanglearrow.png differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/images/needle.png b/deployment_test/QtQuick/Controls/Styles/Base/images/needle.png new file mode 100644 index 0000000000000000000000000000000000000000..316dad71bc4e5d5bbf6eec0ba7d9ef1ab5d3a092 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/images/needle.png differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/images/progress-indeterminate.png b/deployment_test/QtQuick/Controls/Styles/Base/images/progress-indeterminate.png new file mode 100644 index 0000000000000000000000000000000000000000..2ff41b451b36182dd668db3ff1041e98371da835 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/images/progress-indeterminate.png differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/images/rightanglearrow.png b/deployment_test/QtQuick/Controls/Styles/Base/images/rightanglearrow.png new file mode 100644 index 0000000000000000000000000000000000000000..52f1a2414ee47cdedc58dba3e868bdcfcbc6c4a5 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/images/rightanglearrow.png differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/images/scrollbar-handle-horizontal.png b/deployment_test/QtQuick/Controls/Styles/Base/images/scrollbar-handle-horizontal.png new file mode 100644 index 0000000000000000000000000000000000000000..67f582d8fa1058d287090dfbde47efbc081cc746 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/images/scrollbar-handle-horizontal.png differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/images/scrollbar-handle-transient.png b/deployment_test/QtQuick/Controls/Styles/Base/images/scrollbar-handle-transient.png new file mode 100644 index 0000000000000000000000000000000000000000..34e7dd6a8cf20d92a2fcc2d47928365140e326c3 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/images/scrollbar-handle-transient.png differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/images/scrollbar-handle-vertical.png b/deployment_test/QtQuick/Controls/Styles/Base/images/scrollbar-handle-vertical.png new file mode 100644 index 0000000000000000000000000000000000000000..280dac50777d6e32e4e436bacfd0ed487cceaea2 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/images/scrollbar-handle-vertical.png differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/images/slider-groove.png b/deployment_test/QtQuick/Controls/Styles/Base/images/slider-groove.png new file mode 100644 index 0000000000000000000000000000000000000000..a9d059b7c8c6fec10477c44f40523259277e7fa6 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/images/slider-groove.png differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/images/slider-handle.png b/deployment_test/QtQuick/Controls/Styles/Base/images/slider-handle.png new file mode 100644 index 0000000000000000000000000000000000000000..0d4ee9c5131e3f07f9905214a228a45dc4997a35 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/images/slider-handle.png differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/images/spinner_large.png b/deployment_test/QtQuick/Controls/Styles/Base/images/spinner_large.png new file mode 100644 index 0000000000000000000000000000000000000000..8e6a773850065a880b9d2530e22b9b266c23212f Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/images/spinner_large.png differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/images/spinner_medium.png b/deployment_test/QtQuick/Controls/Styles/Base/images/spinner_medium.png new file mode 100644 index 0000000000000000000000000000000000000000..48a24d58823b4bdee4eb6418fe5f789dac698da7 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/images/spinner_medium.png differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/images/spinner_small.png b/deployment_test/QtQuick/Controls/Styles/Base/images/spinner_small.png new file mode 100644 index 0000000000000000000000000000000000000000..c3e86dc6bfed1985fb4ba3e1d8b5d5bd1ad51beb Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/images/spinner_small.png differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/images/tab.png b/deployment_test/QtQuick/Controls/Styles/Base/images/tab.png new file mode 100644 index 0000000000000000000000000000000000000000..ce116cc6a10fe00104a217fc293e2bab37ca1605 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/images/tab.png differ diff --git a/deployment_test/QtQuick/Controls/Styles/Base/images/tab_selected.png b/deployment_test/QtQuick/Controls/Styles/Base/images/tab_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..e0cb16a6acbaa6a591a360b4a6a40196b2d87a70 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Base/images/tab_selected.png differ diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/ApplicationWindowStyle.qml b/deployment_test/QtQuick/Controls/Styles/Desktop/ApplicationWindowStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..455cafb9882e66d7a5107a8ffae83661fdaa6e3d --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Desktop/ApplicationWindowStyle.qml @@ -0,0 +1,42 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick.Controls.Styles 1.3 + +ApplicationWindowStyle { } diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/ApplicationWindowStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Desktop/ApplicationWindowStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..2c56326f519713bedc36492bfa1cc658926c4979 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Desktop/ApplicationWindowStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/BusyIndicatorStyle.qml b/deployment_test/QtQuick/Controls/Styles/Desktop/BusyIndicatorStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..b73729d76dadc62a040d412fac217559836549c5 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Desktop/BusyIndicatorStyle.qml @@ -0,0 +1,42 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick.Controls.Styles 1.1 + +BusyIndicatorStyle { } diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/BusyIndicatorStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Desktop/BusyIndicatorStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..373da7a38964c3cc5232d5515fec96179f90602e Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Desktop/BusyIndicatorStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/ButtonStyle.qml b/deployment_test/QtQuick/Controls/Styles/Desktop/ButtonStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..21fc28b35d64be258481ba626a40ce6584bfff6e --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Desktop/ButtonStyle.qml @@ -0,0 +1,62 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +Style { + property Component panel: StyleItem { + id: styleitem + elementType: "button" + sunken: control.pressed || (control.checkable && control.checked) + raised: !(control.pressed || (control.checkable && control.checked)) + hover: control.hovered + text: control.iconSource === "" ? "" : control.text + hasFocus: control.activeFocus + hints: control.styleHints + // If no icon, let the style do the drawing + activeControl: control.isDefault ? "default" : "f" + + properties: { + "icon": control.__iconAction.__icon, + "menu": control.menu + } + } +} diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/ButtonStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Desktop/ButtonStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..84f2cea0d0038ea50aa296af50fc431934399ac4 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Desktop/ButtonStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/CalendarStyle.qml b/deployment_test/QtQuick/Controls/Styles/Desktop/CalendarStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..ec22f7755bf246b6554826376d63180f10d2f042 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Desktop/CalendarStyle.qml @@ -0,0 +1,42 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick.Controls.Styles 1.1 + +CalendarStyle {} diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/CalendarStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Desktop/CalendarStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..fc74dcd92dd27ee3d7ecd2caf853a2e8105bc03a Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Desktop/CalendarStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/CheckBoxStyle.qml b/deployment_test/QtQuick/Controls/Styles/Desktop/CheckBoxStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..7ed6869950e03c46cc53eb3da7c837628bfb0274 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Desktop/CheckBoxStyle.qml @@ -0,0 +1,91 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +Style { + property Component panel: Item { + anchors.fill: parent + + implicitWidth: styleitem.implicitWidth + implicitHeight: styleitem.implicitHeight + baselineOffset: styleitem.baselineOffset + StyleItem { + id: styleitem + elementType: "checkbox" + sunken: control.pressed + on: control.checked || control.pressed + hover: control.hovered + enabled: control.enabled + hasFocus: control.activeFocus && styleitem.style == "mac" + hints: control.styleHints + properties: {"partiallyChecked": (control.checkedState === Qt.PartiallyChecked) } + contentHeight: textitem.implicitHeight + contentWidth: Math.ceil(textitem.implicitWidth) + 4 + property int indicatorWidth: pixelMetric("indicatorwidth") + (macStyle ? 2 : 4) + property bool macStyle: (style === "mac") + + Text { + id: textitem + text: control.text + anchors.left: parent.left + anchors.leftMargin: parent.indicatorWidth + anchors.verticalCenter: parent.verticalCenter + anchors.verticalCenterOffset: parent.macStyle ? 1 : 0 + anchors.right: parent.right + renderType: Text.NativeRendering + elide: Text.ElideRight + enabled: control.enabled + color: SystemPaletteSingleton.windowText(control.enabled) + StyleItem { + elementType: "focusrect" + anchors.margins: -1 + anchors.leftMargin: -2 + anchors.top: parent.top + anchors.left: parent.left + anchors.bottom: parent.bottom + width: textitem.implicitWidth + 3 + visible: control.activeFocus + } + } + } + } +} diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/CheckBoxStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Desktop/CheckBoxStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..51973ebfc698265408cade0de06a4abbdf0e937f Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Desktop/CheckBoxStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/ComboBoxStyle.qml b/deployment_test/QtQuick/Controls/Styles/Desktop/ComboBoxStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..cd5ce47db555510cd3199ea24b4650f18648cd27 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Desktop/ComboBoxStyle.qml @@ -0,0 +1,127 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Window 2.1 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 +import "." as Desktop + +Style { + readonly property ComboBox control: __control + property int renderType: Text.NativeRendering + padding { top: 4 ; left: 6 ; right: 6 ; bottom:4 } + property Component panel: Item { + property bool popup: !!styleItem.styleHint("comboboxpopup") + property color textColor: SystemPaletteSingleton.text(control.enabled) + property color selectionColor: SystemPaletteSingleton.highlight(control.enabled) + property color selectedTextColor: SystemPaletteSingleton.highlightedText(control.enabled) + property int dropDownButtonWidth: 24 + + implicitWidth: 125 + implicitHeight: styleItem.implicitHeight + baselineOffset: styleItem.baselineOffset + anchors.fill: parent + StyleItem { + id: styleItem + + height: parent.height + width: parent.width + elementType: "combobox" + sunken: control.pressed + raised: !sunken + hover: control.hovered + enabled: control.enabled + // The style makes sure the text rendering won't overlap the decoration. + // In that case, 35 pixels margin in this case looks good enough. Worst + // case, the ellipsis will be truncated (2nd worst, not visible at all). + text: elidedText(control.currentText, Text.ElideRight, parent.width - 35) + hasFocus: control.activeFocus + // contentHeight as in QComboBox + contentHeight: Math.max(Math.ceil(textHeight("")), 14) + 2 + + hints: control.styleHints + properties: { + "popup": control.__popup, + "editable" : control.editable + } + } + } + + property Component __popupStyle: MenuStyle { + __menuItemType: "comboboxitem" + } + + property Component __dropDownStyle: Style { + id: dropDownStyleRoot + property int __maxPopupHeight: 600 + property int submenuOverlap: 0 + property int submenuPopupDelay: 0 + + property Component frame: StyleItem { + elementType: "frame" + Component.onCompleted: { + var defaultFrameWidth = pixelMetric("defaultframewidth") + dropDownStyleRoot.padding.left = defaultFrameWidth + dropDownStyleRoot.padding.right = defaultFrameWidth + dropDownStyleRoot.padding.top = defaultFrameWidth + dropDownStyleRoot.padding.bottom = defaultFrameWidth + } + } + + property Component menuItemPanel: StyleItem { + elementType: "itemrow" + selected: styleData.selected + + implicitWidth: textItem.implicitWidth + implicitHeight: textItem.implicitHeight + + StyleItem { + id: textItem + elementType: "item" + contentWidth: textWidth(text) + contentHeight: textHeight(text) + text: styleData.text + selected: parent ? parent.selected : false + } + } + + property Component __scrollerStyle: Desktop.ScrollViewStyle { } + } +} diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/ComboBoxStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Desktop/ComboBoxStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..2d6ed8a29721cae9dad2d376ae9b37959139cdce Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Desktop/ComboBoxStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/FocusFrameStyle.qml b/deployment_test/QtQuick/Controls/Styles/Desktop/FocusFrameStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..59f52e604948ad6599c697826914472e8fe57b50 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Desktop/FocusFrameStyle.qml @@ -0,0 +1,55 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype FocusFrameStyle + \internal + \inqmlmodule QtQuick.Controls.Styles +*/ +StyleItem { + property int margin: -3 + anchors.fill: parent + elementType: "focusframe" +} + + diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/FocusFrameStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Desktop/FocusFrameStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..8fd3f9f96829f5832728e2969932fc503aaba248 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Desktop/FocusFrameStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/GroupBoxStyle.qml b/deployment_test/QtQuick/Controls/Styles/Desktop/GroupBoxStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..b3128933618272a7ed162929a72951ddce7a2e74 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Desktop/GroupBoxStyle.qml @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + + +Style { + readonly property GroupBox control: __control + + property var __style: StyleItem { id: style } + property int titleHeight: 18 + + Component.onCompleted: { + var stylename = __style.style + if (stylename.indexOf("windows") > -1) + titleHeight = 9 + } + + padding { + top: Math.round(Settings.dpiScaleFactor * (control.title.length > 0 || control.checkable ? titleHeight : 0) + (style.style == "mac" ? 9 : 6)) + left: Math.round(Settings.dpiScaleFactor * 8) + right: Math.round(Settings.dpiScaleFactor * 8) + bottom: Math.round(Settings.dpiScaleFactor * 7 + (style.style.indexOf("windows") > -1 ? 2 : 0)) + } + + property Component panel: StyleItem { + anchors.fill: parent + id: styleitem + elementType: "groupbox" + text: control.title + on: control.checked + hasFocus: control.__checkbox.activeFocus + activeControl: control.checkable ? "checkbox" : "" + properties: { "checkable" : control.checkable , "sunken" : !control.flat} + border {top: 32 ; bottom: 8} + Accessible.role: Accessible.Grouping + } +} diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/GroupBoxStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Desktop/GroupBoxStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..04b579908b7525cd894e8ba15bbea4cabe8dfebc Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Desktop/GroupBoxStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/MenuBarStyle.qml b/deployment_test/QtQuick/Controls/Styles/Desktop/MenuBarStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..8e517c8abe9343f2d36a47c230833ad8e4d65a42 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Desktop/MenuBarStyle.qml @@ -0,0 +1,76 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 +import "." as Desktop + +Style { + id: styleRoot + + property Component background: StyleItem { + elementType: "menubar" + + Component.onCompleted: { + styleRoot.padding.left = pixelMetric("menubarhmargin") + pixelMetric("menubarpanelwidth") + styleRoot.padding.right = pixelMetric("menubarhmargin") + pixelMetric("menubarpanelwidth") + styleRoot.padding.top = pixelMetric("menubarvmargin") + pixelMetric("menubarpanelwidth") + styleRoot.padding.bottom = pixelMetric("menubarvmargin") + pixelMetric("menubarpanelwidth") + } + } + + property Component itemDelegate: StyleItem { + elementType: "menubaritem" + + text: styleData.text + property string plainText: StyleHelpers.removeMnemonics(text) + contentWidth: textWidth(plainText) + contentHeight: textHeight(plainText) + width: implicitWidth + + enabled: styleData.enabled + sunken: styleData.open + selected: (parent && styleData.selected) || sunken + + hints: { "showUnderlined": styleData.underlineMnemonic } + } + + property Component menuStyle: Desktop.MenuStyle { } +} diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/MenuBarStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Desktop/MenuBarStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..c2d86be348dfcca349ad7c3b1af874546eff6a6f Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Desktop/MenuBarStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/MenuStyle.qml b/deployment_test/QtQuick/Controls/Styles/Desktop/MenuStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..282860ae91c88a9935f0694915f620738bf98c31 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Desktop/MenuStyle.qml @@ -0,0 +1,117 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQml 2.14 as Qml +import QtQuick 2.2 +import QtQuick.Window 2.1 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +Style { + id: styleRoot + + property string __menuItemType: "menuitem" + + property int submenuOverlap: 0 + property int submenuPopupDelay: 0 + property int __maxPopupHeight: 0 + + property Component frame: StyleItem { + elementType: "menu" + + Rectangle { + visible: anchors.margins > 0 + anchors { + fill: parent + margins: pixelMetric("menupanelwidth") + } + color: SystemPaletteSingleton.window(control.enabled) + } + + Component.onCompleted: { + var menuHMargin = pixelMetric("menuhmargin") + var menuVMargin = pixelMetric("menuvmargin") + var menuPanelWidth = pixelMetric("menupanelwidth") + styleRoot.padding.left = menuHMargin + menuPanelWidth + styleRoot.padding.right = menuHMargin + menuPanelWidth + styleRoot.padding.top = menuVMargin + menuPanelWidth + styleRoot.padding.bottom = menuVMargin + menuPanelWidth + styleRoot.submenuOverlap = 2 * menuPanelWidth + styleRoot.submenuPopupDelay = styleHint("submenupopupdelay") + } + + // ### The Screen attached property can only be set on an Item, + // ### and will get its values only when put on a Window. + readonly property int desktopAvailableHeight: Screen.desktopAvailableHeight + Qml.Binding { + target: styleRoot + property: "__maxPopupHeight" + value: desktopAvailableHeight * 0.99 + restoreMode: Binding.RestoreBinding + } + } + + property Component menuItemPanel: StyleItem { + elementType: __menuItemType + + text: styleData.text + property string textAndShorcut: text + (styleData.shortcut ? "\t" + styleData.shortcut : "") + contentWidth: textWidth(textAndShorcut) + contentHeight: textHeight(textAndShorcut) + + enabled: styleData.enabled + selected: styleData.selected + on: styleData.checkable && styleData.checked + + hints: { "showUnderlined": styleData.underlineMnemonic } + + properties: { + "checkable": styleData.checkable, + "exclusive": styleData.exclusive, + "shortcut": styleData.shortcut, + "type": styleData.type, + "scrollerDirection": styleData.scrollerDirection, + "icon": !!__menuItem && __menuItem.__icon + } + } + + property Component scrollIndicator: menuItemPanel + + property Component __scrollerStyle: null +} diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/MenuStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Desktop/MenuStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..e1c94ea4d22d2d42091a2549ca359107d52abd2b Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Desktop/MenuStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/ProgressBarStyle.qml b/deployment_test/QtQuick/Controls/Styles/Desktop/ProgressBarStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..aa44b1ae0b35b7c7abbfc30d1f97898a89af12f6 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Desktop/ProgressBarStyle.qml @@ -0,0 +1,61 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +Style { + property Component panel: StyleItem { + anchors.fill: parent + elementType: "progressbar" + // XXX: since desktop uses int instead of real, the progressbar + // range [0..1] must be stretched to a good precision + property int factor : 1000 + property int decimals: 3 + value: indeterminate ? 0 : control.value.toFixed(decimals) * factor // does indeterminate value need to be 1 on windows? + minimum: indeterminate ? 0 : control.minimumValue.toFixed(decimals) * factor + maximum: indeterminate ? 0 : control.maximumValue.toFixed(decimals) * factor + enabled: control.enabled + horizontal: control.orientation === Qt.Horizontal + hints: control.styleHints + contentWidth: horizontal ? 200 : 23 + contentHeight: horizontal ? 23 : 200 + } +} diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/ProgressBarStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Desktop/ProgressBarStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..239933b1ecb91b7dc2b768cffbbe6a2a4c3591af Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Desktop/ProgressBarStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/RadioButtonStyle.qml b/deployment_test/QtQuick/Controls/Styles/Desktop/RadioButtonStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..c2173878e74ad7696981deb87f16751b5858ba4c --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Desktop/RadioButtonStyle.qml @@ -0,0 +1,94 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +Style { + readonly property RadioButton control: __control + property Component panel: Item { + anchors.fill: parent + + implicitWidth: styleitem.implicitWidth + implicitHeight: styleitem.implicitHeight + baselineOffset: styleitem.baselineOffset + + StyleItem { + id: styleitem + elementType: "radiobutton" + anchors.verticalCenter: parent.verticalCenter + anchors.verticalCenterOffset: macStyle ? -1 : 0 + sunken: control.pressed + on: control.checked || control.pressed + hover: control.hovered + enabled: control.enabled + hasFocus: control.activeFocus && styleitem.style == "mac" + hints: control.styleHints + contentHeight: textitem.implicitHeight + contentWidth: Math.ceil(textitem.implicitWidth) + 4 + property int indicatorWidth: pixelMetric("indicatorwidth") + (macStyle ? 2 : 4) + property bool macStyle: (style === "mac") + + Text { + id: textitem + text: control.text + anchors.left: parent.left + anchors.leftMargin: parent.indicatorWidth + anchors.verticalCenter: parent.verticalCenter + anchors.verticalCenterOffset: parent.macStyle ? 2 : 0 + anchors.right: parent.right + renderType: Text.NativeRendering + elide: Text.ElideRight + enabled: control.enabled + color: SystemPaletteSingleton.windowText(control.enabled) + StyleItem { + elementType: "focusrect" + anchors.margins: -1 + anchors.leftMargin: -2 + anchors.top: parent.top + anchors.left: parent.left + anchors.bottom: parent.bottom + width: textitem.implicitWidth + 3 + visible: control.activeFocus + } + } + } + } +} diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/RadioButtonStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Desktop/RadioButtonStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..dfcf472284d86921714bd1fc4a04430d808ccafa Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Desktop/RadioButtonStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/RowItemSingleton.qml b/deployment_test/QtQuick/Controls/Styles/Desktop/RowItemSingleton.qml new file mode 100644 index 0000000000000000000000000000000000000000..5fd6e3222c64e389f9e372bc28c598f6fd9fd4d1 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Desktop/RowItemSingleton.qml @@ -0,0 +1,44 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +pragma Singleton +import QtQuick.Controls.Private 1.0 +StyleItem { + elementType: "itemrow" +} diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/RowItemSingleton.qmlc b/deployment_test/QtQuick/Controls/Styles/Desktop/RowItemSingleton.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..abc54eba926b20b6078da5b1f2d92924699cd19a Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Desktop/RowItemSingleton.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/ScrollViewStyle.qml b/deployment_test/QtQuick/Controls/Styles/Desktop/ScrollViewStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..d8677384a45ddf029787d75d2841ad83989056ab --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Desktop/ScrollViewStyle.qml @@ -0,0 +1,99 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +Style { + id: root + + padding { + property int frameWidth: __styleitem.pixelMetric("defaultframewidth") + left: frameWidth + top: frameWidth + bottom: frameWidth + right: frameWidth + } + + property StyleItem __styleitem: StyleItem { elementType: "frame" } + + property Component frame: StyleItem { + id: styleitem + elementType: "frame" + sunken: true + visible: control.frameVisible + textureHeight: 64 + textureWidth: 64 + border { + top: 16 + left: 16 + right: 16 + bottom: 16 + } + } + + property Component corner: StyleItem { elementType: "scrollareacorner" } + + readonly property bool __externalScrollBars: __styleitem.styleHint("externalScrollBars") + readonly property int __scrollBarSpacing: __styleitem.pixelMetric("scrollbarspacing") + readonly property bool scrollToClickedPosition: __styleitem.styleHint("scrollToClickPosition") !== 0 + property bool transientScrollBars: false + + readonly property int __wheelScrollLines: __styleitem.styleHint("wheelScrollLines") + + property Component __scrollbar: StyleItem { + anchors.fill:parent + elementType: "scrollbar" + hover: activeControl != "none" + activeControl: "none" + sunken: __styleData.upPressed | __styleData.downPressed | __styleData.handlePressed + minimum: __control.minimumValue + maximum: __control.maximumValue + value: __control.value + horizontal: __styleData.horizontal + enabled: __control.enabled + + implicitWidth: horizontal ? 200 : pixelMetric("scrollbarExtent") + implicitHeight: horizontal ? pixelMetric("scrollbarExtent") : 200 + + onIsTransientChanged: root.transientScrollBars = isTransient + } + +} diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/ScrollViewStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Desktop/ScrollViewStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..f122c1fe9fc38eef13c83e90fbbf50eff7310be6 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Desktop/ScrollViewStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/SliderStyle.qml b/deployment_test/QtQuick/Controls/Styles/Desktop/SliderStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..bba9d54d939aefe63e91b1671f06845eec895b1a --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Desktop/SliderStyle.qml @@ -0,0 +1,67 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +Style { + readonly property Item control: __control + property Component panel: StyleItem { + elementType: "slider" + sunken: control.pressed + implicitWidth: 200 + contentHeight: horizontal ? 22 : 200 + contentWidth: horizontal ? 200 : 22 + + maximum: control.maximumValue*100 + minimum: control.minimumValue*100 + step: control.stepSize*100 + value: control.__handlePos*100 + horizontal: control.orientation === Qt.Horizontal + enabled: control.enabled + hasFocus: control.activeFocus + hover: control.hovered + hints: control.styleHints + activeControl: control.tickmarksEnabled ? "ticks" : "" + property int handleWidth: 15 + property int handleHeight: 15 + } + padding { top: 0 ; left: 0 ; right: 0 ; bottom: 0 } +} diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/SliderStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Desktop/SliderStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..22ed785756d169bfb3ad70361d843f7bae4b9460 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Desktop/SliderStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/SpinBoxStyle.qml b/deployment_test/QtQuick/Controls/Styles/Desktop/SpinBoxStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..50e13ab44b4c87181ea964571831faedf2eb08b6 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Desktop/SpinBoxStyle.qml @@ -0,0 +1,128 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +Style { + readonly property SpinBox control: __control + + padding { + top: control.__panel ? control.__panel.topPadding + (styleitem.style === "mac" ? 2 : 0) : 0 + left: control.__panel ? control.__panel.leftPadding : 0 + right: control.__panel ? control.__panel.rightPadding : 0 + bottom: control.__panel ? control.__panel.bottomPadding : 0 + } + StyleItem {id: styleitem ; visible: false} + + property int renderType: Text.NativeRendering + + property Component panel: Item { + id: style + + property rect upRect + property rect downRect + + property int horizontalAlignment: Qt.platform.os === "osx" ? Qt.AlignRight : Qt.AlignLeft + property int verticalAlignment: Qt.AlignVCenter + + property alias font: styleitem.font + + property color foregroundColor: SystemPaletteSingleton.text(control.enabled) + property color backgroundColor: SystemPaletteSingleton.base(control.enabled) + property color selectionColor: SystemPaletteSingleton.highlight(control.enabled) + property color selectedTextColor: SystemPaletteSingleton.highlightedText(control.enabled) + + property int topPadding: edit.anchors.topMargin + property int leftPadding: 3 + edit.anchors.leftMargin + property int rightPadding: 3 + edit.anchors.rightMargin + property int bottomPadding: edit.anchors.bottomMargin + + width: 100 + height: styleitem.implicitHeight + + implicitWidth: 2 + styleitem.implicitWidth + implicitHeight: styleitem.implicitHeight + baselineOffset: styleitem.baselineOffset + + Item { + id: edit + anchors.fill: parent + FocusFrame { + anchors.fill: parent + focusMargin:-6 + visible: spinbox.activeFocus && styleitem.styleHint("focuswidget") + } + } + + function updateRect() { + style.upRect = styleitem.subControlRect("up"); + style.downRect = styleitem.subControlRect("down"); + var inputRect = styleitem.subControlRect("edit"); + edit.anchors.topMargin = inputRect.y + edit.anchors.leftMargin = inputRect.x + edit.anchors.rightMargin = style.width - inputRect.width - edit.anchors.leftMargin + edit.anchors.bottomMargin = style.height - inputRect.height - edit.anchors.topMargin + } + + Component.onCompleted: updateRect() + onWidthChanged: updateRect() + onHeightChanged: updateRect() + + StyleItem { + id: styleitem + elementType: "spinbox" + anchors.fill: parent + sunken: (styleData.downEnabled && styleData.downPressed) || (styleData.upEnabled && styleData.upPressed) + hover: control.hovered + hints: control.styleHints + hasFocus: control.activeFocus + enabled: control.enabled + value: (styleData.upPressed ? 1 : 0) | + (styleData.downPressed ? 1<<1 : 0) | + (styleData.upEnabled ? (1<<2) : 0) | + (styleData.downEnabled ? (1<<3) : 0) + contentWidth: styleData.contentWidth + contentHeight: styleData.contentHeight + textureHeight: implicitHeight + border {top: 6 ; bottom: 6} + } + } +} diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/SpinBoxStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Desktop/SpinBoxStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..5168139fcaf14ad64dd01f9d9276daeaa1afcd73 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Desktop/SpinBoxStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/StatusBarStyle.qml b/deployment_test/QtQuick/Controls/Styles/Desktop/StatusBarStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..744cff35416ce134bb379001857a94a818d1cbb0 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Desktop/StatusBarStyle.qml @@ -0,0 +1,64 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype StatusBarStyle + \internal + \inqmlmodule QtQuick.Controls.Styles +*/ +Style { + + padding.left: 4 + padding.right: 4 + padding.top: 3 + padding.bottom: 2 + + property Component panel: StyleItem { + implicitHeight: 16 + implicitWidth: 200 + anchors.fill: parent + elementType: "statusbar" + textureWidth: 64 + border {left: 16 ; right: 16} + } +} diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/StatusBarStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Desktop/StatusBarStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..fc7ebc9466ed13d62b8d51f3553d631bab12b797 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Desktop/StatusBarStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/SwitchStyle.qml b/deployment_test/QtQuick/Controls/Styles/Desktop/SwitchStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..719b633169edfd6bb98d3b6412457632a57632ec --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Desktop/SwitchStyle.qml @@ -0,0 +1,46 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 +import QtQuick.Controls.Styles 1.1 + +SwitchStyle { +} diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/SwitchStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Desktop/SwitchStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..6cb34cfc6ccff4b880bc3e4e542f66ccfe01e748 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Desktop/SwitchStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/TabViewStyle.qml b/deployment_test/QtQuick/Controls/Styles/Desktop/TabViewStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..c571e2207554743070d181e1f8a677628e0e4118 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Desktop/TabViewStyle.qml @@ -0,0 +1,116 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 +import QtQuick.Controls.Styles 1.1 +Style { + id: root + + property bool tabsMovable: false + property int tabsAlignment: __barstyle.styleHint("tabbaralignment") === "center" ? Qt.AlignHCenter : Qt.AlignLeft; + property int tabOverlap: __barstyle.pixelMetric("taboverlap"); + property int frameOverlap: __barstyle.pixelMetric("tabbaseoverlap"); + + property StyleItem __barstyle: StyleItem { + elementType: "tab" + properties: { "tabposition" : (control.tabPosition === Qt.TopEdge ? "Top" : "Bottom") } + visible: false + } + + property Component frame: StyleItem { + id: styleitem + anchors.fill: parent + anchors.topMargin: 1//stack.baseOverlap + z: style == "oxygen" ? 1 : 0 + elementType: "tabframe" + value: tabbarItem && tabsVisible && tabbarItem.tab(currentIndex) ? tabbarItem.tab(currentIndex).x : 0 + minimum: tabbarItem && tabsVisible && tabbarItem.tab(currentIndex) ? tabbarItem.tab(currentIndex).width : 0 + maximum: tabbarItem && tabsVisible ? tabbarItem.width : width + properties: { "selectedTabRect" : tabbarItem.__selectedTabRect, "orientation" : control.tabPosition } + hints: control.styleHints + Component.onCompleted: { + stack.frameWidth = styleitem.pixelMetric("defaultframewidth"); + stack.style = style; + } + border{ + top: 16 + bottom: 16 + } + textureHeight: 64 + } + + property Component tab: Item { + id: item + property string tabpos: control.count === 1 ? "only" : index === 0 ? "beginning" : index === control.count - 1 ? "end" : "middle" + property string selectedpos: styleData.nextSelected ? "next" : styleData.previousSelected ? "previous" : "" + property string orientation: control.tabPosition === Qt.TopEdge ? "Top" : "Bottom" + property int tabHSpace: __barstyle.pixelMetric("tabhspace"); + property int tabVSpace: __barstyle.pixelMetric("tabvspace"); + property int totalOverlap: tabOverlap * (control.count - 1) + property real maxTabWidth: control.count > 0 ? (control.width + totalOverlap) / control.count : 0 + implicitWidth: Math.min(maxTabWidth, Math.max(50, styleitem.textWidth(styleData.title)) + tabHSpace + 2) + implicitHeight: Math.max(styleitem.font.pixelSize + tabVSpace + 6, 0) + + StyleItem { + id: styleitem + + elementType: "tab" + paintMargins: style === "mac" ? 0 : 2 + + anchors.fill: parent + anchors.topMargin: style === "mac" ? 2 : 0 + anchors.rightMargin: -paintMargins + anchors.bottomMargin: -1 + anchors.leftMargin: -paintMargins + (style === "mac" && selected ? -1 : 0) + properties: { "hasFrame" : true, "orientation": orientation, "tabpos": tabpos, "selectedpos": selectedpos } + hints: control.styleHints + + enabled: styleData.enabled + selected: styleData.selected + text: elidedText(styleData.title, tabbarItem.elide, item.width - item.tabHSpace) + hover: styleData.hovered + hasFocus: tabbarItem.activeFocus && selected + } + } + + property Component leftCorner: null + property Component rightCorner: null +} diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/TabViewStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Desktop/TabViewStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..fd82b88903b832c996f7fbe3c3c496d583c406c8 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Desktop/TabViewStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/TableViewStyle.qml b/deployment_test/QtQuick/Controls/Styles/Desktop/TableViewStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..6c008b30bf5f6229c3cdff30760fea5bc391f565 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Desktop/TableViewStyle.qml @@ -0,0 +1,116 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 +import "." + +ScrollViewStyle { + id: root + + readonly property BasicTableView control: __control + property int __indentation: 8 + property bool activateItemOnSingleClick: __styleitem.styleHint("activateItemOnSingleClick") + property color textColor: __styleitem.textColor + property color backgroundColor: SystemPaletteSingleton.base(control.enabled) + property color highlightedTextColor: __styleitem.highlightedTextColor + + property StyleItem __styleitem: StyleItem{ + property color textColor: styleHint("textColor") + property color highlightedTextColor: styleHint("highlightedTextColor") + elementType: "item" + visible: false + active: control.activeFocus + onActiveChanged: { + highlightedTextColor = styleHint("highlightedTextColor") + textColor = styleHint("textColor") + } + } + + property Component headerDelegate: StyleItem { + elementType: "header" + activeControl: itemSort + raised: true + sunken: styleData.pressed + text: styleData.value + hover: styleData.containsMouse + hints: control.styleHints + properties: {"headerpos": headerPosition, "textalignment": styleData.textAlignment} + property string itemSort: (control.sortIndicatorVisible && styleData.column === control.sortIndicatorColumn) ? (control.sortIndicatorOrder == Qt.AscendingOrder ? "up" : "down") : ""; + property string headerPosition: !styleData.resizable && control.columnCount === 1 ? "only" : + !styleData.resizable && styleData.column === control.columnCount-1 ? "end" : + styleData.column === 0 ? "beginning" : "" + } + + property Component rowDelegate: BorderImage { + visible: styleData.selected || styleData.alternate + source: "image://__tablerow/" + (styleData.alternate ? "alternate_" : "") + + (styleData.selected ? "selected_" : "") + + (control.activeFocus ? "active" : "") + height: Math.max(16, RowItemSingleton.implicitHeight) + border.left: 4 ; border.right: 4 + } + + property Component itemDelegate: Item { + height: Math.max(16, label.implicitHeight) + property int implicitWidth: label.implicitWidth + 16 + + Text { + id: label + objectName: "label" + width: parent.width + font: __styleitem.font + anchors.left: parent.left + anchors.right: parent.right + anchors.leftMargin: styleData.hasOwnProperty("depth") && styleData.column === 0 ? 0 : + horizontalAlignment === Text.AlignRight ? 1 : 8 + anchors.rightMargin: (styleData.hasOwnProperty("depth") && styleData.column === 0) + || horizontalAlignment !== Text.AlignRight ? 1 : 8 + horizontalAlignment: styleData.textAlignment + anchors.verticalCenter: parent.verticalCenter + elide: styleData.elideMode + text: styleData.value !== undefined ? styleData.value : "" + color: styleData.textColor + renderType: Text.NativeRendering + } + } + + property Component __branchDelegate: null +} diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/TableViewStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Desktop/TableViewStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..ef696ee9c1e85a13220493a5eac9fdf9c3247878 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Desktop/TableViewStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/TextAreaStyle.qml b/deployment_test/QtQuick/Controls/Styles/Desktop/TextAreaStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..8a39f8ab42caeb507cd457aadd2c278a64acd84d --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Desktop/TextAreaStyle.qml @@ -0,0 +1,59 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +ScrollViewStyle { + property font font: __styleitem.font + property color textColor: SystemPaletteSingleton.text(control.enabled) + property color selectionColor: SystemPaletteSingleton.highlight(control.enabled) + property color selectedTextColor: SystemPaletteSingleton.highlightedText(control.enabled) + property color backgroundColor: control.backgroundVisible ? SystemPaletteSingleton.base(control.enabled) : "transparent" + + property StyleItem __styleitem: StyleItem{ + elementType: "edit" + visible: false + active: control.activeFocus + } + + property int renderType: Text.NativeRendering + property real textMargin: 4 +} diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/TextAreaStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Desktop/TextAreaStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..9d9ae51e58e0f38cb4f99d9fe77d46faa2307a58 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Desktop/TextAreaStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/TextFieldStyle.qml b/deployment_test/QtQuick/Controls/Styles/Desktop/TextFieldStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..fd58d3446d5a6837d899dd1ab7f4446ed5f82919 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Desktop/TextFieldStyle.qml @@ -0,0 +1,81 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +Style { + property int renderType: Text.NativeRendering + + property Component panel: StyleItem { + id: textfieldstyle + elementType: "edit" + anchors.fill: parent + + sunken: true + hasFocus: control.activeFocus + hover: hovered + hints: control.styleHints + + property color textColor: SystemPaletteSingleton.text(control.enabled) + property color placeholderTextColor: "darkGray" + property color selectionColor: SystemPaletteSingleton.highlight(control.enabled) + property color selectedTextColor: SystemPaletteSingleton.highlightedText(control.enabled) + + + property bool rounded: !!hints["rounded"] + property int topMargin: style === "mac" ? 3 : 2 + property int leftMargin: rounded ? 12 : 4 + property int rightMargin: leftMargin + property int bottomMargin: 2 + + contentWidth: 100 + // Form QLineEdit::sizeHint + contentHeight: Math.max(control.__contentHeight, 16) + + FocusFrame { + anchors.fill: parent + visible: textfield.activeFocus && textfieldstyle.styleHint("focuswidget") && !rounded + } + textureHeight: implicitHeight + textureWidth: 32 + border {top: 8 ; bottom: 8 ; left: 8 ; right: 8} + } +} diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/TextFieldStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Desktop/TextFieldStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..798a64c76a6601125426738b0fbd10ee756fa51e Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Desktop/TextFieldStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/ToolBarStyle.qml b/deployment_test/QtQuick/Controls/Styles/Desktop/ToolBarStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..fe1840ab80f1a2f1248bdfb4f13a3ffe29b8c1d3 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Desktop/ToolBarStyle.qml @@ -0,0 +1,65 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype StatusBarStyle + \internal + \inqmlmodule QtQuick.Controls.Styles +*/ +Style { + + padding.left: 6 + padding.right: 6 + padding.top: 1 + padding.bottom: style.style === "mac" ? 1 : style.style === "fusion" ? 3 : 2 + + StyleItem { id: style ; visible: false} + + property Component panel: StyleItem { + id: toolbar + anchors.fill: parent + elementType: "toolbar" + textureWidth: 64 + border {left: 16 ; right: 16} + } +} diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/ToolBarStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Desktop/ToolBarStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..904f9fe6436e1fe19b431aa3471d73c4848b9db8 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Desktop/ToolBarStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/ToolButtonStyle.qml b/deployment_test/QtQuick/Controls/Styles/Desktop/ToolButtonStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..a4e15465a6d5e436b32e8e5e8cabfce7bbe46bee --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Desktop/ToolButtonStyle.qml @@ -0,0 +1,64 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +Style { + property Component panel: StyleItem { + id: styleitem + + anchors.fill: parent + elementType: "toolbutton" + on: control.checkable && control.checked + sunken: control.pressed + raised: !(control.checkable && control.checked) && control.hovered + hover: control.hovered + hasFocus: control.activeFocus + hints: control.styleHints + text: control.text + + properties: { + "icon": control.__iconAction.__icon, + "position": control.__position, + "menu" : control.menu !== null + } + } +} diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/ToolButtonStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Desktop/ToolButtonStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..81644110c8ec303bd8bb70fe70b48b720fd6bd75 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Desktop/ToolButtonStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/TreeViewStyle.qml b/deployment_test/QtQuick/Controls/Styles/Desktop/TreeViewStyle.qml new file mode 100644 index 0000000000000000000000000000000000000000..3ec6073af87903a942ea5760692b1b775c97b4f0 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Desktop/TreeViewStyle.qml @@ -0,0 +1,70 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Private 1.0 +import "." as Desktop + +Desktop.TableViewStyle { + id: root + + __indentation: 12 + + __branchDelegate: StyleItem { + id: si + elementType: "itembranchindicator" + properties: { + "hasChildren": styleData.hasChildren, + "hasSibling": styleData.hasSibling && !styleData.isExpanded + } + on: styleData.isExpanded + selected: styleData.selected + hasFocus: __styleitem.active + + Component.onCompleted: { + root.__indentation = si.pixelMetric("treeviewindentation") + implicitWidth = root.__indentation + implicitHeight = implicitWidth + var rect = si.subControlRect("dummy"); + width = rect.width + height = rect.height + } + } +} diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/TreeViewStyle.qmlc b/deployment_test/QtQuick/Controls/Styles/Desktop/TreeViewStyle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..ca18c85259c62992d17655273226548ab4e77c52 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Desktop/TreeViewStyle.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Styles/Desktop/qmldir b/deployment_test/QtQuick/Controls/Styles/Desktop/qmldir new file mode 100644 index 0000000000000000000000000000000000000000..1b6918713ccc5363436b346fdff84d7389647541 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Desktop/qmldir @@ -0,0 +1,2 @@ +singleton RowItemSingleton 1.0 RowItemSingleton.qml +designersupported diff --git a/deployment_test/QtQuick/Controls/Styles/Flat/plugins.qmltypes b/deployment_test/QtQuick/Controls/Styles/Flat/plugins.qmltypes new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/deployment_test/QtQuick/Controls/Styles/Flat/qmldir b/deployment_test/QtQuick/Controls/Styles/Flat/qmldir new file mode 100644 index 0000000000000000000000000000000000000000..2fe49220e17f67e54e3531a548ca6d535789444a --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/Flat/qmldir @@ -0,0 +1,4 @@ +module QtQuick.Controls.Styles.Flat +plugin qtquickextrasflatplugin +classname QtQuickExtrasStylesPlugin +depends QtQml 2.14 diff --git a/deployment_test/QtQuick/Controls/Styles/Flat/qtquickextrasflatplugin.dll b/deployment_test/QtQuick/Controls/Styles/Flat/qtquickextrasflatplugin.dll new file mode 100644 index 0000000000000000000000000000000000000000..c617d962fc263fd54ec4b5b653f2602a0415adea Binary files /dev/null and b/deployment_test/QtQuick/Controls/Styles/Flat/qtquickextrasflatplugin.dll differ diff --git a/deployment_test/QtQuick/Controls/Styles/qmldir b/deployment_test/QtQuick/Controls/Styles/qmldir new file mode 100644 index 0000000000000000000000000000000000000000..4b2f9844d131854cd30277b9c69475c8ecd61723 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Styles/qmldir @@ -0,0 +1,38 @@ +module QtQuick.Controls.Styles +ApplicationWindowStyle 1.3 Base/ApplicationWindowStyle.qml +ButtonStyle 1.0 Base/ButtonStyle.qml +BusyIndicatorStyle 1.1 Base/BusyIndicatorStyle.qml +CalendarStyle 1.1 Base/CalendarStyle.qml +CheckBoxStyle 1.0 Base/CheckBoxStyle.qml +ComboBoxStyle 1.0 Base/ComboBoxStyle.qml +MenuStyle 1.2 Base/MenuStyle.qml +MenuBarStyle 1.2 Base/MenuBarStyle.qml +ProgressBarStyle 1.0 Base/ProgressBarStyle.qml +RadioButtonStyle 1.0 Base/RadioButtonStyle.qml +ScrollViewStyle 1.0 Base/ScrollViewStyle.qml +SliderStyle 1.0 Base/SliderStyle.qml +SpinBoxStyle 1.1 Base/SpinBoxStyle.qml +SwitchStyle 1.1 Base/SwitchStyle.qml +TabViewStyle 1.0 Base/TabViewStyle.qml +TableViewStyle 1.0 Base/TableViewStyle.qml +TreeViewStyle 1.4 Base/TreeViewStyle.qml +TextAreaStyle 1.1 Base/TextAreaStyle.qml +TextFieldStyle 1.0 Base/TextFieldStyle.qml +ToolBarStyle 1.0 Base/ToolBarStyle.qml +StatusBarStyle 1.0 Base/StatusBarStyle.qml + +CircularGaugeStyle 1.0 Base/CircularGaugeStyle.qml +CircularButtonStyle 1.0 Base/CircularButtonStyle.qml +CircularTickmarkLabelStyle 1.0 Base/CircularTickmarkLabelStyle.qml +CommonStyleHelper 1.0 Base/CommonStyleHelper.qml +DelayButtonStyle 1.0 Base/DelayButtonStyle.qml +DialStyle 1.1 Base/DialStyle.qml +GaugeStyle 1.0 Base/GaugeStyle.qml +HandleStyle 1.0 Base/HandleStyle.qml +HandleStyleHelper 1.0 Base/HandleStyleHelper.qml +PieMenuStyle 1.3 Base/PieMenuStyle.qml +StatusIndicatorStyle 1.1 Base/StatusIndicatorStyle.qml +ToggleButtonStyle 1.0 Base/ToggleButtonStyle.qml +TumblerStyle 1.2 Base/TumblerStyle.qml + +designersupported diff --git a/deployment_test/QtQuick/Controls/Switch.qml b/deployment_test/QtQuick/Controls/Switch.qml new file mode 100644 index 0000000000000000000000000000000000000000..b33f7d00b30ff033eeb9e0b6371d8378ec550803 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Switch.qml @@ -0,0 +1,166 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype Switch + \inqmlmodule QtQuick.Controls + \since 5.2 + \ingroup controls + \brief A switch. + + \image switch.png + \caption On and Off states of a Switch. + + A Switch is a toggle button that can be switched on (checked) or off + (unchecked). Switches are typically used to represent features in an + application that can be enabled or disabled without affecting others. + + On mobile platforms, switches are commonly used to enable or disable + features. + + \qml + Column { + Switch { checked: true } + Switch { checked: false } + } + \endqml + + You can create a custom appearance for a Switch by + assigning a \l {SwitchStyle}. +*/ + +Control { + id: root + + /*! + This property is \c true if the control is checked. + The default value is \c false. + */ + property bool checked: false + + /*! + \qmlproperty bool Switch::pressed + \since QtQuick.Controls 1.3 + + This property is \c true when the control is pressed. + */ + readonly property alias pressed: internal.pressed + + /*! + This property is \c true if the control takes the focus when it is + pressed; \l{QQuickItem::forceActiveFocus()}{forceActiveFocus()} will be + called on the control. + */ + property bool activeFocusOnPress: false + + /*! + This property stores the ExclusiveGroup that the control belongs to. + */ + property ExclusiveGroup exclusiveGroup: null + + /*! + \since QtQuick.Controls 1.3 + + This signal is emitted when the control is clicked. + */ + signal clicked + + Keys.onPressed: { + if (event.key === Qt.Key_Space && !event.isAutoRepeat) + checked = !checked; + } + + /*! \internal */ + onExclusiveGroupChanged: { + if (exclusiveGroup) + exclusiveGroup.bindCheckable(root) + } + + MouseArea { + id: internal + + property Item handle: __panel.__handle + property int min: __panel.min + property int max: __panel.max + focus: true + anchors.fill: parent + drag.threshold: 0 + drag.target: handle + drag.axis: Drag.XAxis + drag.minimumX: min + drag.maximumX: max + + onPressed: { + if (activeFocusOnPress) + root.forceActiveFocus() + } + + onReleased: { + if (drag.active) { + checked = (handle.x < max/2) ? false : true; + internal.handle.x = checked ? internal.max : internal.min + } else { + checked = (handle.x === max) ? false : true + } + } + + onClicked: root.clicked() + } + + onCheckedChanged: { + if (internal.handle) + internal.handle.x = checked ? internal.max : internal.min + } + + activeFocusOnTab: true + Accessible.role: Accessible.CheckBox + Accessible.name: "switch" + + /*! + The style that should be applied to the switch. Custom style + components can be created with: + + \codeline Qt.createComponent("path/to/style.qml", switchId); + */ + style: Settings.styleComponent(Settings.style, "SwitchStyle.qml", root) +} diff --git a/deployment_test/QtQuick/Controls/Switch.qmlc b/deployment_test/QtQuick/Controls/Switch.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..feb134de3eee4a05dc2f9204131bc892a2fe9485 Binary files /dev/null and b/deployment_test/QtQuick/Controls/Switch.qmlc differ diff --git a/deployment_test/QtQuick/Controls/Tab.qml b/deployment_test/QtQuick/Controls/Tab.qml new file mode 100644 index 0000000000000000000000000000000000000000..657d389c1c6380e7635bd479bdc084c987eafeb5 --- /dev/null +++ b/deployment_test/QtQuick/Controls/Tab.qml @@ -0,0 +1,86 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 + +/*! + \qmltype Tab + \inqmlmodule QtQuick.Controls + \since 5.1 + \ingroup viewaddons + \ingroup controls + \brief Tab represents the content of a tab in a TabView. + + A Tab item inherits from Loader and provides a similar + API. + + Tabs are lazily loaded; only tabs that have been made current (for example, + by clicking on them) will have valid content. You can force loading of tabs + by setting the active property to \c true: + + \code + Tab { + active: true + } + \endcode + + \sa TabView +*/ + +Loader { + id: tab + anchors.fill: parent + + /*! This property holds the title of the tab. */ + property string title + + /*! \internal */ + property bool __inserted: false + + Accessible.role: Accessible.LayeredPane + active: false + visible: false + + activeFocusOnTab: false + + onVisibleChanged: if (visible) active = true + + /*! \internal */ + default property alias component: tab.sourceComponent +} diff --git a/deployment_test/QtQuick/Controls/Tab.qmlc b/deployment_test/QtQuick/Controls/Tab.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..f820b75ee42bd77bd5bdf6728b04b303a29ea72c Binary files /dev/null and b/deployment_test/QtQuick/Controls/Tab.qmlc differ diff --git a/deployment_test/QtQuick/Controls/TabView.qml b/deployment_test/QtQuick/Controls/TabView.qml new file mode 100644 index 0000000000000000000000000000000000000000..2579636fb1d560deaefd7d72a125eb082d0b6a46 --- /dev/null +++ b/deployment_test/QtQuick/Controls/TabView.qml @@ -0,0 +1,329 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype TabView + \inqmlmodule QtQuick.Controls + \since 5.1 + \ingroup views + \ingroup controls + \brief A control that allows the user to select one of multiple stacked items. + + \image tabview.png + + TabView provides tab-based navigation model for your application. + For example, the following snippet uses tabs to present rectangles of + different color on each tab page: + + \qml + TabView { + Tab { + title: "Red" + Rectangle { color: "red" } + } + Tab { + title: "Blue" + Rectangle { color: "blue" } + } + Tab { + title: "Green" + Rectangle { color: "green" } + } + } + \endqml + + \note You can create a custom appearance for a TabView by + assigning a \l {TabViewStyle}. + + \l Tab represents the content of a tab in a TabView. +*/ + +FocusScope { + id: root + + implicitWidth: 240 + implicitHeight: 150 + + /*! The current tab index */ + property int currentIndex: 0 + + /*! The current tab count */ + readonly property int count: __tabs.count + + /*! The visibility of the tab frame around contents */ + property bool frameVisible: true + + /*! The visibility of the tab bar */ + property bool tabsVisible: true + + /*! + \qmlproperty enumeration TabView::tabPosition + + \list + \li Qt.TopEdge (default) + \li Qt.BottomEdge + \endlist + */ + property int tabPosition: Qt.TopEdge + + /*! + \qmlproperty Item TabView::contentItem + \since QtQuick.Controls 1.3 + + This property holds the content item of the tab view. + + Tabs declared as children of a TabView are automatically parented to the TabView's contentItem. + */ + readonly property alias contentItem: stack + + /*! \internal */ + default property alias data: stack.data + + /*! + \qmlmethod Tab TabView::addTab(string title, Component component) + + Adds a new tab with the given \a title and an optional \a component. + + Returns the newly added tab. + */ + function addTab(title, component) { + return insertTab(__tabs.count, title, component) + } + + /*! + \qmlmethod Tab TabView::insertTab(int index, string title, Component component) + + Inserts a new tab at \a index, with the given \a title and + an optional \a component. + + Returns the newly added tab. + */ + function insertTab(index, title, component) { + var tab = tabcomp.createObject() + tab.sourceComponent = component + tab.title = title + // insert at appropriate index first, then set the parent to + // avoid onChildrenChanged appending it to the end of the list + __tabs.insert(index, {tab: tab}) + tab.__inserted = true + tab.parent = stack + __didInsertIndex(index) + __setOpacities() + return tab + } + + /*! \qmlmethod void TabView::removeTab(int index) + Removes and destroys a tab at the given \a index. */ + function removeTab(index) { + var tab = __tabs.get(index).tab + __willRemoveIndex(index) + __tabs.remove(index, 1) + tab.destroy() + __setOpacities() + } + + /*! \qmlmethod void TabView::moveTab(int from, int to) + Moves a tab \a from index \a to another. */ + function moveTab(from, to) { + __tabs.move(from, to, 1) + + if (currentIndex == from) { + currentIndex = to + } else { + var start = Math.min(from, to) + var end = Math.max(from, to) + if (currentIndex >= start && currentIndex <= end) { + if (from < to) + --currentIndex + else + ++currentIndex + } + } + } + + /*! \qmlmethod Tab TabView::getTab(int index) + Returns the \l Tab item at \a index. */ + function getTab(index) { + var data = __tabs.get(index) + return data && data.tab + } + + /*! \internal */ + property ListModel __tabs: ListModel { } + + /*! \internal */ + property Component style: Settings.styleComponent(Settings.style, "TabViewStyle.qml", root) + + /*! \internal */ + property var __styleItem: loader.item + + onCurrentIndexChanged: __setOpacities() + + /*! \internal */ + function __willRemoveIndex(index) { + // Make sure currentIndex will points to the same tab after the removal. + // Also activate the next index if the current index is being removed, + // except when it's both the current and last index. + if (count > 1 && (currentIndex > index || currentIndex == count -1)) + --currentIndex + } + function __didInsertIndex(index) { + // Make sure currentIndex points to the same tab as before the insertion. + if (count > 1 && currentIndex >= index) + currentIndex++ + } + + function __setOpacities() { + for (var i = 0; i < __tabs.count; ++i) { + var child = __tabs.get(i).tab + child.visible = (i == currentIndex ? true : false) + } + } + + activeFocusOnTab: false + + Component { + id: tabcomp + Tab {} + } + + TabBar { + id: tabbarItem + objectName: "tabbar" + tabView: root + style: loader.item + anchors.top: parent.top + anchors.left: root.left + anchors.right: root.right + } + + Loader { + id: loader + z: tabbarItem.z - 1 + sourceComponent: style + property var __control: root + } + + Loader { + id: frameLoader + z: tabbarItem.z - 1 + + anchors.fill: parent + anchors.topMargin: tabPosition === Qt.TopEdge && tabbarItem && tabsVisible ? Math.max(0, tabbarItem.height - baseOverlap) : 0 + anchors.bottomMargin: tabPosition === Qt.BottomEdge && tabbarItem && tabsVisible ? Math.max(0, tabbarItem.height -baseOverlap) : 0 + sourceComponent: frameVisible && loader.item ? loader.item.frame : null + + property int baseOverlap: __styleItem ? __styleItem.frameOverlap : 0 + + Item { + id: stack + + anchors.fill: parent + anchors.margins: (frameVisible ? frameWidth : 0) + anchors.topMargin: anchors.margins + (style =="mac" ? 6 : 0) + anchors.bottomMargin: anchors.margins + + property int frameWidth + property string style + property bool completed: false + + Component.onCompleted: { + addTabs(stack.children) + completed = true + } + + onChildrenChanged: { + if (completed) + stack.addTabs(stack.children) + } + + function addTabs(tabs) { + var tabAdded = false + for (var i = 0 ; i < tabs.length ; ++i) { + var tab = tabs[i] + if (!tab.__inserted && tab.Accessible.role === Accessible.LayeredPane) { + tab.__inserted = true + // reparent tabs created dynamically by createObject(tabView) + tab.parent = stack + // a dynamically added tab should also get automatically removed when destructed + if (completed) + tab.Component.onDestruction.connect(stack.onDynamicTabDestroyed.bind(tab)) + __tabs.append({tab: tab}) + tabAdded = true + } + } + if (tabAdded) + __setOpacities() + } + + function onDynamicTabDestroyed() { + for (var i = 0; i < __tabs.count; ++i) { + if (__tabs.get(i).tab === this) { + __willRemoveIndex(i) + __tabs.remove(i, 1) + __setOpacities() + break + } + } + } + } + onLoaded: { item.z = -1 } + } + + onChildrenChanged: stack.addTabs(root.children) + + states: [ + State { + name: "Bottom" + when: tabPosition === Qt.BottomEdge && tabbarItem != undefined + PropertyChanges { + target: tabbarItem + anchors.topMargin: -frameLoader.baseOverlap + } + AnchorChanges { + target: tabbarItem + anchors.top: frameLoader.bottom + } + } + ] +} diff --git a/deployment_test/QtQuick/Controls/TabView.qmlc b/deployment_test/QtQuick/Controls/TabView.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..d74d7b65c4ddd7c526998b435fe71d0c13f05b88 Binary files /dev/null and b/deployment_test/QtQuick/Controls/TabView.qmlc differ diff --git a/deployment_test/QtQuick/Controls/TableView.qml b/deployment_test/QtQuick/Controls/TableView.qml new file mode 100644 index 0000000000000000000000000000000000000000..1dbdafd7947243eb8c91b721bf229c612b0c9fc6 --- /dev/null +++ b/deployment_test/QtQuick/Controls/TableView.qml @@ -0,0 +1,319 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.3 +import QtQuick.Controls.Private 1.0 +import QtQuick.Controls.Styles 1.1 +import QtQuick.Window 2.1 + +BasicTableView { + id: root + + property var model + + readonly property int rowCount: __listView.count + property alias currentRow: root.__currentRow + + signal activated(int row) + signal clicked(int row) + signal doubleClicked(int row) + signal pressAndHold(int row) + + function positionViewAtRow(row, mode) { + __listView.positionViewAtIndex(row, mode) + } + + function rowAt(x, y) { + var obj = root.mapToItem(__listView.contentItem, x, y) + return __listView.indexAt(obj.x, obj.y) + } + + readonly property alias selection: selectionObject + + style: Settings.styleComponent(Settings.style, "TableViewStyle.qml", root) + + Accessible.role: Accessible.Table + + // Internal stuff. Do not look + + onModelChanged: selection.clear() + + __viewTypeName: "TableView" + __model: model + + __itemDelegateLoader: TableViewItemDelegateLoader { + __style: root.__style + __itemDelegate: root.itemDelegate + __mouseArea: mousearea + } + + __mouseArea: MouseArea { + id: mousearea + + parent: __listView + width: __listView.width + height: __listView.height + z: -1 + propagateComposedEvents: true + focus: true + + property bool autoincrement: false + property bool autodecrement: false + property int previousRow: 0 + property int clickedRow: -1 + property int dragRow: -1 + property int firstKeyRow: -1 + property int pressedRow: -1 + property int pressedColumn: -1 + + TableViewSelection { + id: selectionObject + } + + function selected(rowIndex) { + if (dragRow > -1 && (rowIndex >= clickedRow && rowIndex <= dragRow + || rowIndex <= clickedRow && rowIndex >= dragRow)) + return selection.contains(clickedRow) + + return selection.count && selection.contains(rowIndex) + } + + onReleased: { + pressedRow = -1 + pressedColumn = -1 + autoincrement = false + autodecrement = false + var clickIndex = __listView.indexAt(0, mouseY + __listView.contentY) + if (clickIndex > -1) { + if (Settings.hasTouchScreen) { + __listView.currentIndex = clickIndex + mouseSelect(clickIndex, mouse.modifiers) + } + previousRow = clickIndex + } + + if (mousearea.dragRow >= 0) { + selection.__select(selection.contains(mousearea.clickedRow), mousearea.clickedRow, mousearea.dragRow) + mousearea.dragRow = -1 + } + } + + function decrementCurrentIndex() { + __listView.decrementCurrentIndexBlocking(); + + var newIndex = __listView.indexAt(0, __listView.contentY) + if (newIndex !== -1) { + if (selectionMode > SelectionMode.SingleSelection) + mousearea.dragRow = newIndex + else if (selectionMode === SelectionMode.SingleSelection) + selection.__selectOne(newIndex) + } + } + + function incrementCurrentIndex() { + __listView.incrementCurrentIndexBlocking(); + + var newIndex = Math.max(0, __listView.indexAt(0, __listView.height + __listView.contentY)) + if (newIndex !== -1) { + if (selectionMode > SelectionMode.SingleSelection) + mousearea.dragRow = newIndex + else if (selectionMode === SelectionMode.SingleSelection) + selection.__selectOne(newIndex) + } + } + + // Handle vertical scrolling whem dragging mouse outside boundraries + Timer { + running: mousearea.autoincrement && __verticalScrollBar.visible + repeat: true + interval: 20 + onTriggered: mousearea.incrementCurrentIndex() + } + + Timer { + running: mousearea.autodecrement && __verticalScrollBar.visible + repeat: true + interval: 20 + onTriggered: mousearea.decrementCurrentIndex() + } + + onPositionChanged: { + if (mouseY > __listView.height && pressed) { + if (autoincrement) return; + autodecrement = false; + autoincrement = true; + } else if (mouseY < 0 && pressed) { + if (autodecrement) return; + autoincrement = false; + autodecrement = true; + } else { + autoincrement = false; + autodecrement = false; + } + + if (pressed && containsMouse) { + pressedRow = Math.max(0, __listView.indexAt(0, mouseY + __listView.contentY)) + pressedColumn = __listView.columnAt(mouseX) + if (!Settings.hasTouchScreen) { + if (pressedRow >= 0 && pressedRow !== currentRow) { + __listView.currentIndex = pressedRow; + if (selectionMode === SelectionMode.SingleSelection) { + selection.__selectOne(pressedRow) + } else if (selectionMode > 1) { + dragRow = pressedRow + } + } + } + } + } + + onClicked: { + var clickIndex = __listView.indexAt(0, mouseY + __listView.contentY) + if (clickIndex > -1) { + if (root.__activateItemOnSingleClick) + root.activated(clickIndex) + root.clicked(clickIndex) + } + } + + onPressed: { + pressedRow = __listView.indexAt(0, mouseY + __listView.contentY) + pressedColumn = __listView.columnAt(mouseX) + __listView.forceActiveFocus() + if (pressedRow > -1 && !Settings.hasTouchScreen) { + __listView.currentIndex = pressedRow + mouseSelect(pressedRow, mouse.modifiers) + mousearea.clickedRow = pressedRow + } + } + + onExited: { + mousearea.pressedRow = -1 + mousearea.pressedColumn = -1 + } + + onCanceled: { + mousearea.pressedRow = -1 + mousearea.pressedColumn = -1 + } + + function mouseSelect(index, modifiers) { + if (selectionMode) { + if (modifiers & Qt.ShiftModifier && (selectionMode === SelectionMode.ExtendedSelection)) { + selection.select(previousRow, index) + } else if (selectionMode === SelectionMode.MultiSelection || + (selectionMode === SelectionMode.ExtendedSelection && modifiers & Qt.ControlModifier)) { + selection.__select(!selection.contains(index) , index) + } else { + selection.__selectOne(index) + } + } + } + + onDoubleClicked: { + var clickIndex = __listView.indexAt(0, mouseY + __listView.contentY) + if (clickIndex > -1) { + if (!root.__activateItemOnSingleClick) + root.activated(clickIndex) + root.doubleClicked(clickIndex) + } + } + + onPressAndHold: { + var pressIndex = __listView.indexAt(0, mouseY + __listView.contentY) + if (pressIndex > -1) + root.pressAndHold(pressIndex) + } + + // Note: with boolean preventStealing we are keeping the flickable from + // eating our mouse press events + preventStealing: !Settings.hasTouchScreen + + function keySelect(shiftPressed, row) { + if (row < 0 || row > rowCount - 1) + return + if (shiftPressed && (selectionMode >= SelectionMode.ExtendedSelection)) { + selection.__ranges = new Array() + selection.select(mousearea.firstKeyRow, row) + } else { + selection.__selectOne(row) + } + } + + Keys.forwardTo: [root] + + Keys.onUpPressed: { + event.accepted = __listView.decrementCurrentIndexBlocking() + if (selectionMode) + keySelect(event.modifiers & Qt.ShiftModifier, currentRow) + } + + Keys.onDownPressed: { + event.accepted = __listView.incrementCurrentIndexBlocking() + if (selectionMode) + keySelect(event.modifiers & Qt.ShiftModifier, currentRow) + } + + Keys.onPressed: { + __listView.scrollIfNeeded(event.key) + + if (event.key === Qt.Key_Shift) { + firstKeyRow = currentRow + } + + if (event.key === Qt.Key_A && event.modifiers & Qt.ControlModifier) { + if (selectionMode > 1) + selection.selectAll() + } + } + + Keys.onReleased: { + if (event.key === Qt.Key_Shift) + firstKeyRow = -1 + } + + Keys.onReturnPressed: { + if (currentRow > -1) + root.activated(currentRow); + else + event.accepted = false + } + } +} diff --git a/deployment_test/QtQuick/Controls/TableView.qmlc b/deployment_test/QtQuick/Controls/TableView.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..2d88a64ecda8430bd30ac0a551ba9448c3c955b5 Binary files /dev/null and b/deployment_test/QtQuick/Controls/TableView.qmlc differ diff --git a/deployment_test/QtQuick/Controls/TableViewColumn.qml b/deployment_test/QtQuick/Controls/TableViewColumn.qml new file mode 100644 index 0000000000000000000000000000000000000000..9fa05b3d938250b1884d02f6112f3180521122d3 --- /dev/null +++ b/deployment_test/QtQuick/Controls/TableViewColumn.qml @@ -0,0 +1,173 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 + +/*! + \qmltype TableViewColumn + \inqmlmodule QtQuick.Controls + \since 5.1 + \ingroup viewitems + \ingroup controls + \brief Used to define columns in a \l TableView or in a \l TreeView. + + \image tableview.png + + TableViewColumn represents a column within a TableView or a TreeView. It provides + properties to decide how the data in that column is presented. + + \qml + TableView { + TableViewColumn { role: "title"; title: "Title"; width: 100 } + TableViewColumn { role: "author"; title: "Author"; width: 200 } + model: libraryModel + } + \endqml + + \sa TableView, TreeView +*/ + +QtObject { + + /*! \internal */ + property Item __view: null + + /*! \internal */ + property int __index: -1 + + /*! The title text of the column. */ + property string title + + /*! The model \c role of the column. */ + property string role + + /*! The current width of the column. + The default value depends on platform. If only one + column is defined, the width expands to the viewport. + */ + property int width: (__view && __view.columnCount === 1) ? __view.viewport.width : 160 + + /*! The visible status of the column. */ + property bool visible: true + + /*! Determines if the column should be resizable. + \since QtQuick.Controls 1.1 */ + property bool resizable: true + + /*! Determines if the column should be movable. + The default value is \c true. + \note A non-movable column may get indirectly moved if adjacent columns are movable. + \since QtQuick.Controls 1.1 */ + property bool movable: true + + /*! \qmlproperty enumeration TableViewColumn::elideMode + The text elide mode of the column. + Allowed values are: + \list + \li Text.ElideNone + \li Text.ElideLeft + \li Text.ElideMiddle + \li Text.ElideRight - the default + \endlist + \sa {Text::elide}{elide} */ + property int elideMode: Text.ElideRight + + /*! \qmlproperty enumeration TableViewColumn::horizontalAlignment + The horizontal text alignment of the column. + Allowed values are: + \list + \li Text.AlignLeft - the default + \li Text.AlignRight + \li Text.AlignHCenter + \li Text.AlignJustify + \endlist + \sa {Text::horizontalAlignment}{horizontalAlignment} */ + property int horizontalAlignment: Text.AlignLeft + + /*! The delegate of the column. This can be used to set the itemDelagate + of a \l TableView or \l TreeView for a specific column. + + In the delegate you have access to the following special properties: + \list + \li styleData.selected - if the item is currently selected + \li styleData.value - the value or text for this item + \li styleData.textColor - the default text color for an item + \li styleData.row - the index of the row + \li styleData.column - the index of the column + \li styleData.elideMode - the elide mode of the column + \li styleData.textAlignment - the horizontal text alignment of the column + \endlist + */ + property Component delegate + + property int accessibleRole: Accessible.ColumnHeader + + /*! \qmlmethod void TableViewColumn::resizeToContents() + Resizes the column so that the implicitWidth of the contents on every row will fit. + \since QtQuick.Controls 1.2 */ + function resizeToContents() { + var minWidth = 0 + var listdata = __view.__listView.children[0] + for (var i = 0; __index === -1 && i < __view.__columns.length; ++i) { + if (__view.__columns[i] === this) + __index = i + } + // ### HACK We don't have direct access to the instantiated item, + // so we go spelunking. Each 'item' variable check is annotated + // with the expected object it should point to in BasicTableView. + for (var row = 0 ; row < listdata.children.length ; ++row) { + var item = listdata.children[row] ? listdata.children[row].rowItem : undefined + if (item) { // FocusScope { id: rowitem } + item = item.children[1] + if (item) { // Row { id: itemrow } + item = item.children[__index] + if (item) { // Repeater.delegate a.k.a. __view.__itemDelegateLoader + var indent = __view.__isTreeView && __index === 0 ? item.__itemIndentation : 0 + item = item.item + if (item && item.hasOwnProperty("implicitWidth")) { + minWidth = Math.max(minWidth, item.implicitWidth + indent) + } + } + } + } + } + if (minWidth) + width = minWidth + } +} diff --git a/deployment_test/QtQuick/Controls/TableViewColumn.qmlc b/deployment_test/QtQuick/Controls/TableViewColumn.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..3f5bb3bfa39092ad545aac28c9a70a52cf7a0392 Binary files /dev/null and b/deployment_test/QtQuick/Controls/TableViewColumn.qmlc differ diff --git a/deployment_test/QtQuick/Controls/TextArea.qml b/deployment_test/QtQuick/Controls/TextArea.qml new file mode 100644 index 0000000000000000000000000000000000000000..d289780e963a8e68125e578559edc16261f615d2 --- /dev/null +++ b/deployment_test/QtQuick/Controls/TextArea.qml @@ -0,0 +1,978 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Window 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 +/*! + \qmltype TextArea + \inqmlmodule QtQuick.Controls + \since 5.1 + \ingroup controls + \brief Displays multiple lines of editable formatted text. + + \image textarea.png + + It can display both plain and rich text. For example: + + \qml + TextArea { + width: 240 + text: + "Lorem ipsum dolor sit amet, consectetur adipisicing elit, " + + "sed do eiusmod tempor incididunt ut labore et dolore magna " + + "aliqua. Ut enim ad minim veniam, quis nostrud exercitation " + + "ullamco laboris nisi ut aliquip ex ea commodo cosnsequat. "; + } + \endqml + + Clipboard support is provided by the cut(), copy(), and paste() functions, and the selection can + be handled in a traditional "mouse" mechanism by setting selectByMouse, or handled completely + from QML by manipulating selectionStart and selectionEnd, or using selectAll() or selectWord(). + + You can translate between cursor positions (characters from the start of the document) and pixel + points using positionAt() and positionToRectangle(). + + You can create a custom appearance for a TextArea by + assigning a \l {TextAreaStyle}. + + \sa TextField, TextEdit +*/ + +ScrollView { + id: area + + /*! + \qmlproperty bool TextArea::activeFocusOnPress + + Whether the TextEdit should gain active focus on a mouse press. By default this is + set to true. + */ + property alias activeFocusOnPress: edit.activeFocusOnPress + + /*! + \qmlproperty url TextArea::baseUrl + + This property specifies a base URL which is used to resolve relative URLs + within the text. + + The default value is the url of the QML file instantiating the TextArea item. + */ + property alias baseUrl: edit.baseUrl + + /*! + \qmlproperty bool TextArea::canPaste + + Returns true if the TextArea is writable and the content of the clipboard is + suitable for pasting into the TextArea. + */ + readonly property alias canPaste: edit.canPaste + + /*! + \qmlproperty bool TextArea::canRedo + + Returns true if the TextArea is writable and there are \l {undo}{undone} + operations that can be redone. + */ + readonly property alias canRedo: edit.canRedo + + /*! + \qmlproperty bool TextArea::canUndo + + Returns true if the TextArea is writable and there are previous operations + that can be undone. + */ + readonly property alias canUndo: edit.canUndo + + /*! + \qmlproperty color TextArea::textColor + + The text color. + + \qml + TextArea { textColor: "orange" } + \endqml + */ + property alias textColor: edit.color + + /*! + \qmlproperty int TextArea::cursorPosition + The position of the cursor in the TextArea. + */ + property alias cursorPosition: edit.cursorPosition + + /*! + \qmlproperty rect TextArea::cursorRectangle + \since QtQuick.Controls 1.3 + + The rectangle where the text cursor is rendered within the text area. + */ + readonly property alias cursorRectangle: edit.cursorRectangle + + /*! \qmlproperty font TextArea::font + + The font of the TextArea. + */ + property alias font: edit.font + + /*! + \qmlproperty enumeration TextArea::horizontalAlignment + + Sets the alignment of the text within the TextArea item's width. + + By default, the horizontal text alignment follows the natural alignment of the text, + for example, text that is read from left to right will be aligned to the left. + + The valid values for \c horizontalAlignment are: + \list + \li TextEdit.AlignLeft (Default) + \li TextEdit.AlignRight + \li TextEdit.AlignHCenter + \endlist + + When using the attached property LayoutMirroring::enabled to mirror application + layouts, the horizontal alignment of text will also be mirrored. However, the property + \c horizontalAlignment will remain unchanged. To query the effective horizontal alignment + of TextArea, use the read-only property \c effectiveHorizontalAlignment. + */ + property alias horizontalAlignment: edit.horizontalAlignment + + /*! + \qmlproperty enumeration TextArea::effectiveHorizontalAlignment + + Gets the effective horizontal alignment of the text within the TextArea item's width. + + To set/get the default horizontal alignment of TextArea, use the property \c horizontalAlignment. + + */ + readonly property alias effectiveHorizontalAlignment: edit.effectiveHorizontalAlignment + + /*! + \qmlproperty enumeration TextArea::verticalAlignment + + Sets the alignment of the text within the TextArea item's height. + + The valid values for \c verticalAlignment are: + \list + \li TextEdit.AlignTop + \li TextEdit.AlignBottom + \li TextEdit.AlignVCenter (Default) + \endlist + */ + property alias verticalAlignment: edit.verticalAlignment + + /*! + \qmlproperty bool TextArea::inputMethodComposing + \since QtQuick.Controls 1.3 + + This property holds whether the TextArea has partial text input from an input method. + + While it is composing an input method may rely on mouse or key events from the TextArea + to edit or commit the partial text. This property can be used to determine when to disable + events handlers that may interfere with the correct operation of an input method. + */ + readonly property bool inputMethodComposing: !!edit.inputMethodComposing + + /*! + \qmlproperty enumeration TextArea::inputMethodHints + + Provides hints to the input method about the expected content of the text edit, and how it + should operate. + + The value is a bit-wise combination of flags or Qt.ImhNone if no hints are set. + + The default value is \c Qt.ImhNone. + + Flags that alter behavior are: + + \list + \li Qt.ImhHiddenText - Characters should be hidden, as is typically used when entering passwords. + \li Qt.ImhSensitiveData - Typed text should not be stored by the active input method + in any persistent storage like predictive user dictionary. + \li Qt.ImhNoAutoUppercase - The input method should not try to automatically switch to upper case + when a sentence ends. + \li Qt.ImhPreferNumbers - Numbers are preferred (but not required). + \li Qt.ImhPreferUppercase - Upper case letters are preferred (but not required). + \li Qt.ImhPreferLowercase - Lower case letters are preferred (but not required). + \li Qt.ImhNoPredictiveText - Do not use predictive text (i.e. dictionary lookup) while typing. + + \li Qt.ImhDate - The text editor functions as a date field. + \li Qt.ImhTime - The text editor functions as a time field. + \endlist + + Flags that restrict input (exclusive flags) are: + + \list + \li Qt.ImhDigitsOnly - Only digits are allowed. + \li Qt.ImhFormattedNumbersOnly - Only number input is allowed. This includes decimal point and minus sign. + \li Qt.ImhUppercaseOnly - Only upper case letter input is allowed. + \li Qt.ImhLowercaseOnly - Only lower case letter input is allowed. + \li Qt.ImhDialableCharactersOnly - Only characters suitable for phone dialing are allowed. + \li Qt.ImhEmailCharactersOnly - Only characters suitable for email addresses are allowed. + \li Qt.ImhUrlCharactersOnly - Only characters suitable for URLs are allowed. + \endlist + + Masks: + + \list + \li Qt.ImhExclusiveInputMask - This mask yields nonzero if any of the exclusive flags are used. + \endlist + */ + property alias inputMethodHints: edit.inputMethodHints + + /*! + \qmlproperty int TextArea::length + + Returns the total number of plain text characters in the TextArea item. + + As this number doesn't include any formatting markup, it may not be the same as the + length of the string returned by the \l text property. + + This property can be faster than querying the length the \l text property as it doesn't + require any copying or conversion of the TextArea's internal string data. + */ + readonly property alias length: edit.length + + /*! + \qmlproperty int TextArea::lineCount + + Returns the total number of lines in the TextArea item. + */ + readonly property alias lineCount: edit.lineCount + + /*! + \qmlproperty bool TextArea::readOnly + + Whether the user can interact with the TextArea item. + + The difference from a disabled text field is that it will appear + to be active, and text can be selected and copied. + + If this property is set to \c true, the text cannot be edited by user interaction. + + By default this property is \c false. + */ + property alias readOnly: edit.readOnly + Accessible.readOnly: readOnly + + /*! + \qmlproperty string TextArea::selectedText + + This read-only property provides the text currently selected in the + text edit. + */ + readonly property alias selectedText: edit.selectedText + + /*! + \qmlproperty int TextArea::selectionEnd + + The cursor position after the last character in the current selection. + + This property is read-only. To change the selection, use select(start,end), + selectAll(), or selectWord(). + + \sa selectionStart, cursorPosition, selectedText + */ + readonly property alias selectionEnd: edit.selectionEnd + + /*! + \qmlproperty int TextArea::selectionStart + + The cursor position before the first character in the current selection. + + This property is read-only. To change the selection, use select(start,end), + selectAll(), or selectWord(). + + \sa selectionEnd, cursorPosition, selectedText + */ + readonly property alias selectionStart: edit.selectionStart + + /*! + \qmlproperty bool TextArea::tabChangesFocus + + This property holds whether Tab changes focus, or is accepted as input. + + Defaults to \c false. + */ + property bool tabChangesFocus: false + + /*! + \qmlproperty string TextArea::text + + The text to display. If the text format is AutoText the text edit will + automatically determine whether the text should be treated as + rich text. This determination is made using Qt::mightBeRichText(). + */ + property alias text: edit.text + + /*! + \qmlproperty enumeration TextArea::textFormat + + The way the text property should be displayed. + + \list + \li TextEdit.AutoText + \li TextEdit.PlainText + \li TextEdit.RichText + \endlist + + The default is TextEdit.PlainText. If the text format is TextEdit.AutoText the text edit + will automatically determine whether the text should be treated as + rich text. This determination is made using Qt::mightBeRichText(). + */ + property alias textFormat: edit.textFormat + + /*! + \qmlproperty enumeration TextArea::wrapMode + + Set this property to wrap the text to the TextArea item's width. + + \list + \li TextEdit.NoWrap (default) - no wrapping will be performed. + \li TextEdit.WordWrap - wrapping is done on word boundaries only. + \li TextEdit.WrapAnywhere - wrapping is done at any point on a line, even if it occurs in the middle of a word. + \li TextEdit.Wrap - if possible, wrapping occurs at a word boundary; otherwise it will occur at the appropriate point on the line, even in the middle of a word. + \endlist + */ + property alias wrapMode: edit.wrapMode + + /*! + \qmlproperty bool TextArea::selectByMouse + + This property determines if the user can select the text with the + mouse. + + The default value is \c true. + */ + property bool selectByMouse: true + + /*! + \qmlproperty bool TextArea::selectByKeyboard + + This property determines if the user can select the text with the + keyboard. + + If set to \c true, the user can use the keyboard to select the text + even if the editor is read-only. If set to \c false, the user cannot + use the keyboard to select the text even if the editor is editable. + + The default value is \c true when the editor is editable, + and \c false when read-only. + + \sa readOnly + */ + property alias selectByKeyboard: edit.selectByKeyboard + + /*! + \qmlsignal TextArea::linkActivated(string link) + + This signal is emitted when the user clicks on a link embedded in the text. + The link must be in rich text or HTML format and the + \e link string provides access to the particular link. + + The corresponding handler is \c onLinkActivated. + */ + signal linkActivated(string link) + + /*! + \qmlsignal TextArea::linkHovered(string link) + \since QtQuick.Controls 1.1 + + This signal is emitted when the user hovers a link embedded in the text. + The link must be in rich text or HTML format and the + \e link string provides access to the particular link. + + \sa hoveredLink + + The corresponding handler is \c onLinkHovered. + */ + signal linkHovered(string link) + + /*! + \qmlsignal TextArea::editingFinished() + \since QtQuick.Controls 1.5 + + This signal is emitted when the text area loses focus. + + The corresponding handler is \c onEditingFinished. + */ + signal editingFinished() + + /*! + \qmlproperty string TextArea::hoveredLink + \since QtQuick.Controls 1.1 + + This property contains the link string when user hovers a link + embedded in the text. The link must be in rich text or HTML format + and the link string provides access to the particular link. + */ + readonly property alias hoveredLink: edit.hoveredLink + + /*! + \since QtQuick.Controls 1.3 + + This property contains the edit \l Menu for working + with text selection. Set it to \c null if no menu + is wanted. + + \sa Menu + */ + property Component menu: editMenu.defaultMenu + + /*! + \qmlmethod void TextArea::append(string text) + + Appends a string \a text as a new line to the end of the text area. + */ + function append (string) { + edit.append(string) + __verticalScrollBar.value = __verticalScrollBar.maximumValue + } + + /*! + \qmlmethod void TextArea::copy() + + Copies the currently selected text to the system clipboard. + */ + function copy() { + edit.copy(); + } + + /*! + \qmlmethod void TextArea::cut() + + Moves the currently selected text to the system clipboard. + */ + function cut() { + edit.cut(); + } + + /*! + \qmlmethod void TextArea::deselect() + + Removes active text selection. + */ + function deselect() { + edit.deselect(); + } + + /*! + \qmlmethod string TextArea::getFormattedText(int start, int end) + + Returns the section of text that is between the \a start and \a end positions. + + The returned text will be formatted according to the \l textFormat property. + */ + function getFormattedText(start, end) { + return edit.getFormattedText(start, end); + } + + /*! + \qmlmethod string TextArea::getText(int start, int end) + + Returns the section of text that is between the \a start and \a end positions. + + The returned text does not include any rich text formatting. + */ + function getText(start, end) { + return edit.getText(start, end); + } + + /*! + \qmlmethod void TextArea::insert(int position, string text) + + Inserts \a text into the TextArea at \a position. + */ + function insert(position, text) { + edit.insert(position, text); + } + + /*! + \qmlmethod bool TextArea::isRightToLeft(int start, int end) + + Returns true if the natural reading direction of the editor text + found between positions \a start and \a end is right to left. + */ + function isRightToLeft(start, end) { + return edit.isRightToLeft(start, end); + } + + /*! + \qmlmethod void TextArea::moveCursorSelection(int position, SelectionMode mode = TextEdit.SelectCharacters) + + Moves the cursor to \a position and updates the selection according to the optional \a mode + parameter. (To only move the cursor, set the \l cursorPosition property.) + + When this method is called it additionally sets either the + selectionStart or the selectionEnd (whichever was at the previous cursor position) + to the specified position. This allows you to easily extend and contract the selected + text range. + + The selection mode specifies whether the selection is updated on a per character or a per word + basis. If not specified the selection mode will default to TextEdit.SelectCharacters. + + \list + \li TextEdit.SelectCharacters - Sets either the selectionStart or selectionEnd (whichever was at + the previous cursor position) to the specified position. + \li TextEdit.SelectWords - Sets the selectionStart and selectionEnd to include all + words between the specified position and the previous cursor position. Words partially in the + range are included. + \endlist + + For example, take this sequence of calls: + + \code + cursorPosition = 5 + moveCursorSelection(9, TextEdit.SelectCharacters) + moveCursorSelection(7, TextEdit.SelectCharacters) + \endcode + + This moves the cursor to the 5th position, extends the selection end from 5 to 9, + and then retracts the selection end from 9 to 7, leaving the text from the 5th + position to the 7th position selected (the 6th and 7th characters). + + The same sequence with TextEdit.SelectWords will extend the selection start to a word boundary + before or on the 5th position, and extend the selection end to a word boundary on or past the 9th position. + */ + function moveCursorSelection(position, mode) { + edit.moveCursorSelection(position, mode); + } + + /*! + \qmlmethod void TextArea::paste() + + Replaces the currently selected text by the contents of the system clipboard. + */ + function paste() { + edit.paste(); + } + + /*! + \qmlmethod int TextArea::positionAt(int x, int y) + + Returns the text position closest to pixel position (\a x, \a y). + + Position 0 is before the first character, position 1 is after the first character + but before the second, and so on until position \l {text}.length, which is after all characters. + */ + function positionAt(x, y) { + return edit.positionAt(x, y); + } + + /*! + \qmlmethod rectangle TextArea::positionToRectangle(position) + + Returns the rectangle at the given \a position in the text. The x, y, + and height properties correspond to the cursor that would describe + that position. + */ + function positionToRectangle(position) { + return edit.positionToRectangle(position); + } + + /*! + \qmlmethod void TextArea::redo() + + Redoes the last operation if redo is \l {canRedo}{available}. + */ + function redo() { + edit.redo(); + } + + /*! + \qmlmethod string TextArea::remove(int start, int end) + + Removes the section of text that is between the \a start and \a end positions from the TextArea. + */ + function remove(start, end) { + return edit.remove(start, end); + } + + /*! + \qmlmethod void TextArea::select(int start, int end) + + Causes the text from \a start to \a end to be selected. + + If either start or end is out of range, the selection is not changed. + + After calling this, selectionStart will become the lesser + and selectionEnd will become the greater (regardless of the order passed + to this method). + + \sa selectionStart, selectionEnd + */ + function select(start, end) { + edit.select(start, end); + } + + /*! + \qmlmethod void TextArea::selectAll() + + Causes all text to be selected. + */ + function selectAll() { + edit.selectAll(); + } + + /*! + \qmlmethod void TextArea::selectWord() + + Causes the word closest to the current cursor position to be selected. + */ + function selectWord() { + edit.selectWord(); + } + + /*! + \qmlmethod void TextArea::undo() + + Undoes the last operation if undo is \l {canUndo}{available}. Deselects any + current selection, and updates the selection start to the current cursor + position. + */ + function undo() { + edit.undo(); + } + + /*! \qmlproperty bool TextArea::backgroundVisible + + This property determines if the background should be filled or not. + + The default value is \c true. + */ + property alias backgroundVisible: colorRect.visible + + /*! \internal */ + default property alias data: area.data + + /*! \qmlproperty real TextArea::textMargin + \since QtQuick.Controls 1.1 + + The margin, in pixels, around the text in the TextArea. + */ + property alias textMargin: edit.textMargin + + /*! \qmlproperty real TextArea::contentWidth + \since QtQuick.Controls 1.3 + + The width of the text content. + */ + readonly property alias contentWidth: edit.contentWidth + + /*! \qmlproperty real TextArea::contentHeight + \since QtQuick.Controls 1.3 + + The height of the text content. + */ + readonly property alias contentHeight: edit.contentHeight + + frameVisible: true + + activeFocusOnTab: true + + Accessible.role: Accessible.EditableText + + style: Settings.styleComponent(Settings.style, "TextAreaStyle.qml", area) + + /*! + \qmlproperty TextDocument TextArea::textDocument + + This property exposes the \l QQuickTextDocument of this TextArea. + \sa TextEdit::textDocument + */ + property alias textDocument: edit.textDocument + + Flickable { + id: flickable + + interactive: !edit.selectByMouse + anchors.fill: parent + + TextEdit { + id: edit + focus: true + cursorDelegate: __style && __style.__cursorDelegate ? __style.__cursorDelegate : null + persistentSelection: true + + Rectangle { + id: colorRect + parent: viewport + anchors.fill: parent + color: __style ? __style.backgroundColor : "white" + z: -1 + } + + property int layoutRecursionDepth: 0 + + function doLayout() { + // scrollbars affect the document/viewport size and vice versa, so we + // must allow the layout loop to recurse twice until the sizes stabilize + if (layoutRecursionDepth <= 2) { + layoutRecursionDepth++ + + if (wrapMode == TextEdit.NoWrap) { + __horizontalScrollBar.visible = edit.contentWidth > viewport.width + edit.width = Math.max(viewport.width, edit.contentWidth) + } else { + __horizontalScrollBar.visible = false + edit.width = viewport.width + } + edit.height = Math.max(viewport.height, edit.contentHeight) + + flickable.contentWidth = edit.contentWidth + flickable.contentHeight = edit.contentHeight + + layoutRecursionDepth-- + } + } + + Connections { + target: area.viewport + function onWidthChanged() { edit.doLayout() } + function onHeightChanged() { edit.doLayout() } + } + onContentWidthChanged: edit.doLayout() + onContentHeightChanged: edit.doLayout() + onWrapModeChanged: edit.doLayout() + + renderType: __style ? __style.renderType : Text.NativeRendering + font: __style ? __style.font : TextSingleton.font + color: __style ? __style.textColor : "darkgray" + selectionColor: __style ? __style.selectionColor : "darkred" + selectedTextColor: __style ? __style.selectedTextColor : "white" + wrapMode: TextEdit.WordWrap + textMargin: __style && __style.textMargin !== undefined ? __style.textMargin : 4 + + selectByMouse: area.selectByMouse && Qt.platform.os != "ios" && (!Settings.isMobile || !cursorHandle.delegate || !selectionHandle.delegate) + readOnly: false + + Keys.forwardTo: area + + KeyNavigation.priority: KeyNavigation.BeforeItem + KeyNavigation.tab: area.tabChangesFocus ? area.KeyNavigation.tab : null + KeyNavigation.backtab: area.tabChangesFocus ? area.KeyNavigation.backtab : null + + property bool blockRecursion: false + property bool hasSelection: selectionStart !== selectionEnd + readonly property int selectionPosition: selectionStart !== cursorPosition ? selectionStart : selectionEnd + + // force re-evaluation when contentWidth changes => text layout changes => selection moves + property rect selectionRectangle: contentWidth ? positionToRectangle(selectionPosition) + : positionToRectangle(selectionPosition) + + onSelectionStartChanged: syncHandlesWithSelection() + onCursorPositionChanged: syncHandlesWithSelection() + + function syncHandlesWithSelection() + { + if (!blockRecursion && selectionHandle.delegate) { + blockRecursion = true + // We cannot use property selectionPosition since it gets updated after onSelectionStartChanged + cursorHandle.position = cursorPosition + selectionHandle.position = (selectionStart !== cursorPosition) ? selectionStart : selectionEnd + blockRecursion = false + } + ensureVisible(cursorRectangle) + } + + function ensureVisible(rect) { + if (rect.y >= flickableItem.contentY + viewport.height - rect.height - textMargin) { + // moving down + flickableItem.contentY = rect.y - viewport.height + rect.height + textMargin + } else if (rect.y < flickableItem.contentY) { + // moving up + flickableItem.contentY = rect.y - textMargin + } + + if (rect.x >= flickableItem.contentX + viewport.width - textMargin) { + // moving right + flickableItem.contentX = rect.x - viewport.width + textMargin + } else if (rect.x < flickableItem.contentX) { + // moving left + flickableItem.contentX = rect.x - textMargin + } + } + + onLinkActivated: area.linkActivated(link) + onLinkHovered: area.linkHovered(link) + onEditingFinished: area.editingFinished() + + function activate() { + if (activeFocusOnPress) { + forceActiveFocus() + if (!readOnly) + Qt.inputMethod.show() + } + cursorHandle.activate() + selectionHandle.activate() + } + + function moveHandles(cursor, selection) { + blockRecursion = true + cursorPosition = cursor + if (selection === -1) { + selectWord() + selection = selectionStart + } + selectionHandle.position = selection + cursorHandle.position = cursorPosition + blockRecursion = false + } + + MouseArea { + id: mouseArea + anchors.fill: parent + cursorShape: edit.hoveredLink ? Qt.PointingHandCursor : Qt.IBeamCursor + acceptedButtons: (edit.selectByMouse ? Qt.NoButton : Qt.LeftButton) | (area.menu ? Qt.RightButton : Qt.NoButton) + onClicked: { + if (editMenu.item) + return; + var pos = edit.positionAt(mouse.x, mouse.y) + edit.moveHandles(pos, pos) + edit.activate() + } + onPressAndHold: { + if (editMenu.item) + return; + var pos = edit.positionAt(mouse.x, mouse.y) + edit.moveHandles(pos, area.selectByMouse ? -1 : pos) + edit.activate() + } + } + + EditMenu { + id: editMenu + control: area + input: edit + mouseArea: mouseArea + cursorHandle: cursorHandle + selectionHandle: selectionHandle + flickable: flickable + anchors.fill: parent + } + + ScenePosListener { + id: listener + item: edit + enabled: edit.activeFocus && Qt.platform.os !== "ios" && Settings.isMobile + } + + TextHandle { + id: selectionHandle + + editor: edit + control: area + z: 1000001 // DefaultWindowDecoration+1 + parent: !edit.activeFocus || Qt.platform.os === "ios" ? editor : Window.contentItem // float (QTBUG-42538) + active: area.selectByMouse && Settings.isMobile + delegate: __style.__selectionHandle + maximum: cursorHandle.position - 1 + + // Mention scenePos, contentX and contentY in the mappedPos binding to force re-evaluation if they change + property var mappedPos: listener.scenePos.x !== listener.scenePos.y !== flickableItem.contentX !== flickableItem.contentY !== Number.MAX_VALUE ? + editor.mapToItem(parent, editor.selectionRectangle.x, editor.selectionRectangle.y) : -1 + x: mappedPos.x + y: mappedPos.y + + property var posInViewport: flickableItem.contentX !== flickableItem.contentY !== Number.MAX_VALUE ? + viewport.mapFromItem(parent, handleX, handleY) : -1 + visible: pressed || (edit.hasSelection + && posInViewport.y + handleHeight >= -1 + && posInViewport.y <= viewport.height + 1 + && posInViewport.x + handleWidth >= -1 + && posInViewport.x <= viewport.width + 1) + + onPositionChanged: { + if (!edit.blockRecursion) { + edit.blockRecursion = true + edit.select(selectionHandle.position, cursorHandle.position) + if (pressed) + edit.ensureVisible(edit.selectionRectangle) + edit.blockRecursion = false + } + } + } + + TextHandle { + id: cursorHandle + + editor: edit + control: area + z: 1000001 // DefaultWindowDecoration+1 + parent: !edit.activeFocus || Qt.platform.os === "ios" ? editor : Window.contentItem // float (QTBUG-42538) + active: area.selectByMouse && Settings.isMobile + delegate: __style.__cursorHandle + minimum: edit.hasSelection ? selectionHandle.position + 1 : -1 + + // Mention scenePos, contentX and contentY in the mappedPos binding to force re-evaluation if they change + property var mappedPos: listener.scenePos.x !== listener.scenePos.y !== flickableItem.contentX !== flickableItem.contentY !== Number.MAX_VALUE ? + editor.mapToItem(parent, editor.cursorRectangle.x, editor.cursorRectangle.y) : -1 + x: mappedPos.x + y: mappedPos.y + + property var posInViewport: flickableItem.contentX !== flickableItem.contentY !== Number.MAX_VALUE ? + viewport.mapFromItem(parent, handleX, handleY) : -1 + visible: pressed || ((edit.cursorVisible || edit.hasSelection) + && posInViewport.y + handleHeight >= -1 + && posInViewport.y <= viewport.height + 1 + && posInViewport.x + handleWidth >= -1 + && posInViewport.x <= viewport.width + 1) + + onPositionChanged: { + if (!edit.blockRecursion) { + edit.blockRecursion = true + if (!edit.hasSelection) + selectionHandle.position = cursorHandle.position + edit.select(selectionHandle.position, cursorHandle.position) + edit.blockRecursion = false + } + } + } + } + } + + Keys.onPressed: { + if (event.key == Qt.Key_PageUp) { + __verticalScrollBar.value -= area.height + } else if (event.key == Qt.Key_PageDown) + __verticalScrollBar.value += area.height + } + +} diff --git a/deployment_test/QtQuick/Controls/TextArea.qmlc b/deployment_test/QtQuick/Controls/TextArea.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..75903e28c6c8b7d0b16738d9eef72ff9ab44eea0 Binary files /dev/null and b/deployment_test/QtQuick/Controls/TextArea.qmlc differ diff --git a/deployment_test/QtQuick/Controls/TextField.qml b/deployment_test/QtQuick/Controls/TextField.qml new file mode 100644 index 0000000000000000000000000000000000000000..d0d1d5cc1716fae18ced31e95fdb048bb61f903e --- /dev/null +++ b/deployment_test/QtQuick/Controls/TextField.qml @@ -0,0 +1,672 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.6 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype TextField + \inqmlmodule QtQuick.Controls + \since 5.1 + \ingroup controls + \brief Displays a single line of editable plain text. + + \image textfield.png + + TextField is used to accept a line of text input. Input constraints can be + placed on a TextField item (for example, through a \l validator or \l + inputMask). Setting \l echoMode to an appropriate value enables + TextField to be used for a password input field. + + \qml + TextField { + placeholderText: qsTr("Enter name") + } + \endqml + + You can create a custom appearance for a TextField by + assigning a \l {TextFieldStyle}. + + \sa TextArea, TextInput +*/ + +Control { + id: textfield + + /*! + \qmlproperty bool TextField::acceptableInput + + Returns \c true if the text field contains acceptable + text. + + If a validator or input mask was set, this property will return \c + true if the current text satisfies the validator or mask as + a final string (not as an intermediate string). + + The default value is \c true. + + \sa validator, inputMask, accepted + + */ + readonly property alias acceptableInput: textInput.acceptableInput // read only + + /*! + \qmlproperty bool TextField::activeFocusOnPress + + This property is set to \c true if the TextField should gain active + focus on a mouse press. + + The default value is \c true. + */ + property alias activeFocusOnPress: textInput.activeFocusOnPress + + /*! + \qmlproperty bool TextField::canPaste + + Returns \c true if the TextField is writable and the content of the + clipboard is suitable for pasting into the TextField. + */ + readonly property alias canPaste: textInput.canPaste + + /*! + \qmlproperty bool TextField::canRedo + + Returns \c true if the TextField is writable and there are \l + {undo}{undone} operations that can be redone. + */ + readonly property alias canRedo: textInput.canRedo + + /*! + \qmlproperty bool TextField::canUndo + + Returns \c true if the TextField is writable and there are previous + operations that can be undone. + */ + readonly property alias canUndo: textInput.canUndo + + /*! + \qmlproperty color TextField::textColor + + This property holds the text color. + */ + property alias textColor: textInput.color + + /*! + \qmlproperty int TextField::cursorPosition + + This property holds the position of the cursor in the TextField. + */ + property alias cursorPosition: textInput.cursorPosition + + /*! + \qmlproperty rect TextField::cursorRectangle + \since QtQuick.Controls 1.3 + + The rectangle where the text cursor is rendered within the text field. + */ + readonly property alias cursorRectangle: textInput.cursorRectangle + + /*! + \qmlproperty string TextField::displayText + + This property holds the text displayed in the TextField. + + If \l echoMode is set to TextInput::Normal, this holds the + same value as the TextField::text property. Otherwise, + this property holds the text visible to the user, while + the \l text property holds the actual entered text. + */ + readonly property alias displayText: textInput.displayText + + /*! + \qmlproperty enumeration TextField::echoMode + + Specifies how the text should be displayed in the + TextField. + + The possible modes are: + \list + \li TextInput.Normal - Displays the text as it is. (Default) + \li TextInput.Password - Displays asterisks instead of characters. + \li TextInput.NoEcho - Displays nothing. + \li TextInput.PasswordEchoOnEdit - Displays characters as they are + entered while editing, otherwise displays asterisks. + \endlist + */ + property alias echoMode: textInput.echoMode + Accessible.passwordEdit: echoMode == TextInput.Password || echoMode === TextInput.PasswordEchoOnEdit + + /*! + \qmlproperty font TextField::font + + Sets the font of the TextField. + */ + property alias font: textInput.font + + /*! + \qmlproperty enumeration TextField::horizontalAlignment + + Sets the alignment of the text within the TextField item's width. + + By default, the horizontal text alignment follows the natural alignment + of the text, for example text that is read from left to right will be + aligned to the left. + + The possible alignment values are: + \list + \li TextInput.AlignLeft + \li TextInput.AlignRight + \li TextInput.AlignHCenter + \endlist + + When using the attached property, LayoutMirroring::enabled, to mirror + application layouts, the horizontal alignment of text will also be + mirrored. However, the property \c horizontalAlignment will remain + unchanged. To query the effective horizontal alignment of TextField, use + the read-only property \c effectiveHorizontalAlignment. + */ + property alias horizontalAlignment: textInput.horizontalAlignment + + /*! + \qmlproperty enumeration TextField::effectiveHorizontalAlignment + + Gets the effective horizontal alignment of the text within the TextField + item's width. + + \l horizontalAlignment contains the default horizontal alignment. + + \sa horizontalAlignment + + */ + readonly property alias effectiveHorizontalAlignment: textInput.effectiveHorizontalAlignment + + /*! + \qmlproperty enumeration TextField::verticalAlignment + + Sets the alignment of the text within the TextField item's height. + + The possible alignment values are: + \list + \li TextInput.AlignTop + \li TextInput.AlignBottom + \li TextInput.AlignVCenter (default). + \endlist + */ + property alias verticalAlignment: textInput.verticalAlignment + + /*! + \qmlproperty string TextField::inputMask + + Sets an input mask on the TextField, restricting the allowable text + inputs. See QLineEdit::inputMask for further details, as the exact same + mask strings are used by TextField. + + \sa acceptableInput, validator + */ + property alias inputMask: textInput.inputMask + + /*! + \qmlproperty bool TextField::inputMethodComposing + \since QtQuick.Controls 1.3 + + This property holds whether the TextField has partial text input from an input method. + + While it is composing an input method may rely on mouse or key events from the TextField + to edit or commit the partial text. This property can be used to determine when to disable + events handlers that may interfere with the correct operation of an input method. + */ + readonly property bool inputMethodComposing: !!textInput.inputMethodComposing + + /*! + \qmlproperty enumeration TextField::inputMethodHints + + Provides hints to the input method about the expected content of the + text field and how it should operate. + + The value is a bit-wise combination of flags, or \c Qt.ImhNone if no + hints are set. + + The default value is \c Qt.ImhNone. + + Flags that alter behavior are: + + \list + \li Qt.ImhHiddenText - Characters should be hidden, as is typically used when entering passwords. + This is automatically set when setting echoMode to \c TextInput.Password. + \li Qt.ImhSensitiveData - Typed text should not be stored by the active input method + in any persistent storage like predictive user dictionary. + \li Qt.ImhNoAutoUppercase - The input method should not try to automatically switch to upper case + when a sentence ends. + \li Qt.ImhPreferNumbers - Numbers are preferred (but not required). + \li Qt.ImhPreferUppercase - Uppercase letters are preferred (but not required). + \li Qt.ImhPreferLowercase - Lowercase letters are preferred (but not required). + \li Qt.ImhNoPredictiveText - Do not use predictive text (for example, dictionary lookup) while typing. + + \li Qt.ImhDate - The text editor functions as a date field. + \li Qt.ImhTime - The text editor functions as a time field. + \li Qt.ImhMultiLine - The text editor doesn't close software input keyboard when Return or Enter key is pressed (since QtQuick.Controls 1.3). + \endlist + + Flags that restrict input (exclusive flags) are: + + \list + \li Qt.ImhDigitsOnly - Only digits are allowed. + \li Qt.ImhFormattedNumbersOnly - Only number input is allowed. This includes decimal point and minus sign. + \li Qt.ImhUppercaseOnly - Only uppercase letter input is allowed. + \li Qt.ImhLowercaseOnly - Only lowercase letter input is allowed. + \li Qt.ImhDialableCharactersOnly - Only characters suitable for phone dialing are allowed. + \li Qt.ImhEmailCharactersOnly - Only characters suitable for email addresses are allowed. + \li Qt.ImhUrlCharactersOnly - Only characters suitable for URLs are allowed. + \endlist + + Masks: + \list + \li Qt.ImhExclusiveInputMask - This mask yields nonzero if any of the exclusive flags are used. + \endlist + */ + property alias inputMethodHints: textInput.inputMethodHints + + /*! + \qmlproperty int TextField::length + + Returns the total number of characters in the TextField item. + + If the TextField has an input mask, the length will include mask + characters and may differ from the length of the string returned by the + \l text property. + + This property can be faster than querying the length of the \l text + property as it doesn't require any copying or conversion of the + TextField's internal string data. + */ + readonly property alias length: textInput.length + + /*! + \qmlproperty int TextField::maximumLength + + This property holds the maximum permitted length of the text in the + TextField. + + If the text is too long, it is truncated at the limit. + */ + property alias maximumLength: textInput.maximumLength + + /*! + \qmlproperty string TextField::placeholderText + + This property contains the text that is shown in the text field when the + text field is empty. + */ + property alias placeholderText: placeholderTextComponent.text + + /*! + \qmlproperty bool TextField::readOnly + + Sets whether user input can modify the contents of the TextField. Read- + only is different from a disabled text field in that the text field will + appear to be active and text can still be selected and copied. + + If readOnly is set to \c true, then user input will not affect the text. + Any bindings or attempts to set the text property will still + work, however. + */ + property alias readOnly: textInput.readOnly + Accessible.readOnly: readOnly + + /*! + \qmlproperty bool TextField::selectByMouse + \since QtQuick.Controls 1.3 + + This property determines if the user can select the text with the + mouse. + + The default value is \c true. + */ + property bool selectByMouse: true + + /*! + \qmlproperty string TextField::selectedText + + Provides the text currently selected in the text input. + + It is equivalent to the following snippet, but is faster and easier + to use. + + \code + myTextField.text.toString().substring(myTextField.selectionStart, myTextField.selectionEnd); + \endcode + */ + readonly property alias selectedText: textInput.selectedText + + /*! + \qmlproperty int TextField::selectionEnd + + The cursor position after the last character in the current selection. + + This property is read-only. To change the selection, use + select(start,end), selectAll(), or selectWord(). + + \sa selectionStart, cursorPosition, selectedText + */ + readonly property alias selectionEnd: textInput.selectionEnd + + /*! + \qmlproperty int TextField::selectionStart + + The cursor position before the first character in the current selection. + + This property is read-only. To change the selection, use select(start,end), + selectAll(), or selectWord(). + + \sa selectionEnd, cursorPosition, selectedText + */ + readonly property alias selectionStart: textInput.selectionStart + + /*! + \qmlproperty string TextField::text + + This property contains the text in the TextField. + */ + property alias text: textInput.text + + /*! + \qmlproperty Validator TextField::validator + + Allows you to set a validator on the TextField. When a validator is set, + the TextField will only accept input which leaves the text property in + an intermediate state. The accepted signal will only be sent + if the text is in an acceptable state when enter is pressed. + + Currently supported validators are \l[QtQuick]{IntValidator}, + \l[QtQuick]{DoubleValidator}, and \l[QtQuick]{RegExpValidator}. An + example of using validators is shown below, which allows input of + integers between 11 and 31 into the text input: + + \code + import QtQuick 2.2 + import QtQuick.Controls 1.2 + + TextField { + validator: IntValidator {bottom: 11; top: 31;} + focus: true + } + \endcode + + \sa acceptableInput, inputMask, accepted + */ + property alias validator: textInput.validator + + /*! + \since QtQuick.Controls 1.3 + + This property contains the edit \l Menu for working + with text selection. Set it to \c null if no menu + is wanted. + */ + property Component menu: textInput.editMenu.defaultMenu + + /*! + \qmlsignal TextField::accepted() + + This signal is emitted when the Return or Enter key is pressed. + Note that if there is a \l validator or \l inputMask set on the text + field, the signal will only be emitted if the input is in an acceptable + state. + + The corresponding handler is \c onAccepted. + */ + signal accepted() + + /*! + \qmlsignal TextField::editingFinished() + \since QtQuick.Controls 1.1 + + This signal is emitted when the Return or Enter key is pressed or + the text field loses focus. Note that if there is a validator or + inputMask set on the text field and enter/return is pressed, this + signal will only be emitted if the input follows + the inputMask and the validator returns an acceptable state. + + The corresponding handler is \c onEditingFinished. + */ + signal editingFinished() + + /*! + \qmlmethod void TextField::copy() + + Copies the currently selected text to the system clipboard. + */ + function copy() { + textInput.copy() + } + + /*! + \qmlmethod void TextField::cut() + + Moves the currently selected text to the system clipboard. + */ + function cut() { + textInput.cut() + } + + /*! + \qmlmethod void TextField::deselect() + + Removes active text selection. + */ + function deselect() { + textInput.deselect(); + } + + /*! + \qmlmethod string TextField::getText(int start, int end) + + Removes the section of text that is between the \a start and \a end + positions from the TextField. + */ + function getText(start, end) { + return textInput.getText(start, end); + } + + /*! + \qmlmethod void TextField::insert(int position, string text) + + Inserts \a text into the TextField at \a position. + */ + function insert(position, text) { + textInput.insert(position, text); + } + + /*! + \qmlmethod bool TextField::isRightToLeft(int start, int end) + + Returns \c true if the natural reading direction of the editor text + found between positions \a start and \a end is right to left. + */ + function isRightToLeft(start, end) { + return textInput.isRightToLeft(start, end); + } + + /*! + \qmlmethod void TextField::paste() + + Replaces the currently selected text by the contents of the system + clipboard. + */ + function paste() { + textInput.paste() + } + + /*! + \qmlmethod void TextField::redo() + + Performs the last operation if redo is \l {canRedo}{available}. + */ + function redo() { + textInput.redo(); + } + + /*! + \qmlmethod void TextField::remove(int start, int end) + \since QtQuick.Controls 1.4 + + Removes the section of text that is between the \a start and \a end positions. + */ + function remove(start, end) { + textInput.remove(start, end) + } + + /*! + \qmlmethod void TextField::select(int start, int end) + + Causes the text from \a start to \a end to be selected. + + If either start or end is out of range, the selection is not changed. + + After calling select, selectionStart will become the lesser + and selectionEnd will become the greater (regardless of the order passed + to this method). + + \sa selectionStart, selectionEnd + */ + function select(start, end) { + textInput.select(start, end) + } + + /*! + \qmlmethod void TextField::selectAll() + + Causes all text to be selected. + */ + function selectAll() { + textInput.selectAll() + } + + /*! + \qmlmethod void TextField::selectWord() + + Causes the word closest to the current cursor position to be selected. + */ + function selectWord() { + textInput.selectWord() + } + + /*! + \qmlmethod void TextField::undo() + + Reverts the last operation if undo is \l {canUndo}{available}. undo() + deselects any current selection and updates the selection start to the + current cursor position. + */ + function undo() { + textInput.undo(); + } + + /*! \qmlproperty bool TextField::hovered + + This property holds whether the control is being hovered. + */ + readonly property alias hovered: textInput.containsMouse + + /*! \internal */ + property alias __contentHeight: textInput.contentHeight + + /*! \internal */ + property alias __contentWidth: textInput.contentWidth + + /*! \internal */ + property alias __baselineOffset: textInput.baselineOffset + + style: Settings.styleComponent(Settings.style, "TextFieldStyle.qml", textInput) + + activeFocusOnTab: true + + Accessible.name: text + Accessible.role: Accessible.EditableText + Accessible.description: placeholderText + + Text { + id: placeholderTextComponent + anchors.fill: textInput + font: textInput.font + horizontalAlignment: textInput.horizontalAlignment + verticalAlignment: textInput.verticalAlignment + opacity: !textInput.displayText && (!textInput.activeFocus || textInput.horizontalAlignment !== Qt.AlignHCenter) ? 1.0 : 0.0 + color: __panel ? __panel.placeholderTextColor : "darkgray" + clip: contentWidth > width; + elide: Text.ElideRight + renderType: __style ? __style.renderType : Text.NativeRendering + } + + TextInputWithHandles { + id: textInput + focus: true + passwordCharacter: __style && __style.passwordCharacter !== undefined ? __style.passwordCharacter + : Qt.styleHints.passwordMaskCharacter + selectionColor: __panel ? __panel.selectionColor : "darkred" + selectedTextColor: __panel ? __panel.selectedTextColor : "white" + + control: textfield + cursorHandle: __style ? __style.__cursorHandle : undefined + selectionHandle: __style ? __style.__selectionHandle : undefined + + font: __panel ? __panel.font : TextSingleton.font + anchors.leftMargin: __panel ? __panel.leftMargin : 0 + anchors.topMargin: __panel ? __panel.topMargin : 0 + anchors.rightMargin: __panel ? __panel.rightMargin : 0 + anchors.bottomMargin: __panel ? __panel.bottomMargin : 0 + + anchors.fill: parent + verticalAlignment: Text.AlignVCenter + + color: __panel ? __panel.textColor : "darkgray" + clip: contentWidth > width + + renderType: __style ? __style.renderType : Text.NativeRendering + + Keys.forwardTo: textfield + + EnterKey.type: control.EnterKey.type + + onAccepted: textfield.accepted() + + onEditingFinished: textfield.editingFinished() + } +} diff --git a/deployment_test/QtQuick/Controls/TextField.qmlc b/deployment_test/QtQuick/Controls/TextField.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..26e12cf351e96054956dd7000f8e10881b505bbc Binary files /dev/null and b/deployment_test/QtQuick/Controls/TextField.qmlc differ diff --git a/deployment_test/QtQuick/Controls/ToolBar.qml b/deployment_test/QtQuick/Controls/ToolBar.qml new file mode 100644 index 0000000000000000000000000000000000000000..2e8a8fa31be9e6c6bf1df24d6fd09e44c1d2b5eb --- /dev/null +++ b/deployment_test/QtQuick/Controls/ToolBar.qml @@ -0,0 +1,182 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype ToolBar + \inqmlmodule QtQuick.Controls + \since 5.1 + \ingroup applicationwindow + \ingroup controls + \brief Contains ToolButton and related controls. + + \image toolbar.png + + The common way of using ToolBar is in relation to \l ApplicationWindow. It + provides styling and is generally designed to work well with ToolButton as + well as other controls. + + Note that the ToolBar does not provide a layout of its own, but requires + you to position its contents, for instance by creating a \l RowLayout. + + If only a single item is used within the ToolBar, it will resize to fit the implicitHeight + of its contained item. This makes it particularly suitable for use together with layouts. + Otherwise the height is platform dependent. + + \code + ApplicationWindow { + ... + toolBar:ToolBar { + RowLayout { + anchors.fill: parent + ToolButton { + iconSource: "new.png" + } + ToolButton { + iconSource: "open.png" + } + ToolButton { + iconSource: "save-as.png" + } + Item { Layout.fillWidth: true } + CheckBox { + text: "Enabled" + checked: true + Layout.alignment: Qt.AlignRight + } + } + } + } + \endcode +*/ + +FocusScope { + id: toolbar + + activeFocusOnTab: false + Accessible.role: Accessible.ToolBar + LayoutMirroring.enabled: Qt.application.layoutDirection === Qt.RightToLeft + LayoutMirroring.childrenInherit: true + + width: parent ? parent.width : implicitWidth + implicitWidth: container.leftMargin + container.rightMargin + + Math.max(container.layoutWidth, __panel ? __panel.implicitWidth : 0) + implicitHeight: container.topMargin + container.bottomMargin + + Math.max(container.layoutHeight, __panel ? __panel.implicitHeight : 0) + + /*! \internal */ + property Component style: Settings.styleComponent(Settings.style, "ToolBarStyle.qml", toolbar) + + /*! \internal */ + property alias __style: styleLoader.item + + /*! \internal */ + property Item __panel: panelLoader.item + + /*! \internal */ + default property alias __content: container.data + + /*! \internal */ + property var __menu + + /*! + \qmlproperty Item ToolBar::contentItem + + This property holds the content Item of the tool bar. + + Items declared as children of a ToolBar are automatically parented to the ToolBar's contentItem. + Items created dynamically need to be explicitly parented to the contentItem: + + \note The implicit size of the ToolBar is calculated based on the size of its content. If you want to anchor + items inside the tool bar, you must specify an explicit width and height on the ToolBar itself. + */ + readonly property alias contentItem: container + + data: [ + Loader { + id: panelLoader + anchors.fill: parent + sourceComponent: styleLoader.item ? styleLoader.item.panel : null + onLoaded: item.z = -1 + Loader { + id: styleLoader + property alias __control: toolbar + sourceComponent: style + } + }, + Item { + id: container + z: 1 + focus: true + anchors.fill: parent + + anchors.topMargin: topMargin + anchors.leftMargin: leftMargin + anchors.rightMargin: rightMargin + (buttonLoader.active ? buttonLoader.width + rightMargin : 0) + anchors.bottomMargin: bottomMargin + + property int topMargin: __style ? __style.padding.top : 0 + property int bottomMargin: __style ? __style.padding.bottom : 0 + property int leftMargin: __style ? __style.padding.left : 0 + property int rightMargin: __style ? __style.padding.right : 0 + + property Item layoutItem: container.children.length === 1 ? container.children[0] : null + property real layoutWidth: layoutItem ? (layoutItem.implicitWidth || layoutItem.width) + + (layoutItem.anchors.fill ? layoutItem.anchors.leftMargin + + layoutItem.anchors.rightMargin : 0) : 0 + property real layoutHeight: layoutItem ? (layoutItem.implicitHeight || layoutItem.height) + + (layoutItem.anchors.fill ? layoutItem.anchors.topMargin + + layoutItem.anchors.bottomMargin : 0) : 0 + }, + Loader { + id: buttonLoader + anchors.right: parent.right + anchors.rightMargin: container.rightMargin + anchors.verticalCenter: parent.verticalCenter + sourceComponent: ToolMenuButton { + menu: toolbar.__menu + panel: toolbar.__style.menuButton || null + } + active: !!__menu && __menu.items.length > 0 && !!__style.menuButton + } + ] +} diff --git a/deployment_test/QtQuick/Controls/ToolBar.qmlc b/deployment_test/QtQuick/Controls/ToolBar.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..d9defd0becc24559ee463778af71925a5d5310d2 Binary files /dev/null and b/deployment_test/QtQuick/Controls/ToolBar.qmlc differ diff --git a/deployment_test/QtQuick/Controls/ToolButton.qml b/deployment_test/QtQuick/Controls/ToolButton.qml new file mode 100644 index 0000000000000000000000000000000000000000..1d5e474f25ec042de1090bdac400dee1cdf45a2b --- /dev/null +++ b/deployment_test/QtQuick/Controls/ToolButton.qml @@ -0,0 +1,87 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.2 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype ToolButton + \inqmlmodule QtQuick.Controls + \since 5.1 + \ingroup controls + \brief Provides a button type that is typically used within a ToolBar. + + \image toolbar.png + + ToolButton is functionally similar to \l {QtQuick.Controls::}{Button}, but + can provide a look that is more suitable within a \l ToolBar. + + \code + ApplicationWindow { + ... + toolBar: ToolBar { + RowLayout { + ToolButton { + iconSource: "new.png" + } + ToolButton { + iconSource: "open.png" + } + ToolButton { + iconSource: "save-as.png" + } + Item { Layout.fillWidth: true } + CheckBox { + text: "Enabled" + checked: true + } + } + } + } + \endcode + + You can create a custom appearance for a ToolButton by + assigning a \l {ButtonStyle}. +*/ + +Button { + id: button + style: Settings.styleComponent(Settings.style, "ToolButtonStyle.qml", button) +} diff --git a/deployment_test/QtQuick/Controls/ToolButton.qmlc b/deployment_test/QtQuick/Controls/ToolButton.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..ff4224406108fb2dcdafd37e864566df44339b55 Binary files /dev/null and b/deployment_test/QtQuick/Controls/ToolButton.qmlc differ diff --git a/deployment_test/QtQuick/Controls/TreeView.qml b/deployment_test/QtQuick/Controls/TreeView.qml new file mode 100644 index 0000000000000000000000000000000000000000..2bedb9e64df36a86c9fb15eafcd8e22498b4802f --- /dev/null +++ b/deployment_test/QtQuick/Controls/TreeView.qml @@ -0,0 +1,421 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Controls module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.4 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Private 1.0 +import QtQuick.Controls.Styles 1.2 +import QtQml.Models 2.2 + +BasicTableView { + id: root + + property var model: null + property alias rootIndex: modelAdaptor.rootIndex + + readonly property var currentIndex: modelAdaptor.updateCount, modelAdaptor.mapRowToModelIndex(__currentRow) + property ItemSelectionModel selection: null + + signal activated(var index) + signal clicked(var index) + signal doubleClicked(var index) + signal pressAndHold(var index) + signal expanded(var index) + signal collapsed(var index) + + function isExpanded(index) { + if (index.valid && index.model !== model) { + console.warn("TreeView.isExpanded: model and index mismatch") + return false + } + return modelAdaptor.isExpanded(index) + } + + function collapse(index) { + if (index.valid && index.model !== model) + console.warn("TreeView.collapse: model and index mismatch") + else + modelAdaptor.collapse(index) + } + + function expand(index) { + if (index.valid && index.model !== model) + console.warn("TreeView.expand: model and index mismatch") + else + modelAdaptor.expand(index) + } + + function indexAt(x, y) { + var obj = root.mapToItem(__listView.contentItem, x, y) + return modelAdaptor.mapRowToModelIndex(__listView.indexAt(obj.x, obj.y)) + } + + style: Settings.styleComponent(Settings.style, "TreeViewStyle.qml", root) + + // Internal stuff. Do not look + + __viewTypeName: "TreeView" + + __model: TreeModelAdaptor { + id: modelAdaptor + model: root.model + + // Hack to force re-evaluation of the currentIndex binding + property int updateCount: 0 + onModelReset: updateCount++ + onRowsInserted: updateCount++ + onRowsRemoved: updateCount++ + + onExpanded: root.expanded(index) + onCollapsed: root.collapsed(index) + } + + __itemDelegateLoader: TreeViewItemDelegateLoader { + __style: root.__style + __itemDelegate: root.itemDelegate + __mouseArea: mouseArea + __treeModel: modelAdaptor + } + + onSelectionModeChanged: if (!!selection) selection.clear() + + __mouseArea: MouseArea { + id: mouseArea + + parent: __listView + width: __listView.width + height: __listView.height + z: -1 + propagateComposedEvents: true + focus: true + // If there is not a touchscreen, keep the flickable from eating our mouse drags. + // If there is a touchscreen, flicking is possible, but selection can be done only by tapping, not by dragging. + preventStealing: !Settings.hasTouchScreen + + property var clickedIndex: undefined + property var pressedIndex: undefined + property bool selectOnRelease: false + property int pressedColumn: -1 + readonly property alias currentRow: root.__currentRow + readonly property alias currentIndex: root.currentIndex + + // Handle vertical scrolling whem dragging mouse outside boundaries + property int autoScroll: 0 // 0 -> do nothing; 1 -> increment; 2 -> decrement + property bool shiftPressed: false // forward shift key state to the autoscroll timer + + Timer { + running: mouseArea.autoScroll !== 0 && __verticalScrollBar.visible + interval: 20 + repeat: true + onTriggered: { + var oldPressedIndex = mouseArea.pressedIndex + var row + if (mouseArea.autoScroll === 1) { + __listView.incrementCurrentIndexBlocking(); + row = __listView.indexAt(0, __listView.height + __listView.contentY) + if (row === -1) + row = __listView.count - 1 + } else { + __listView.decrementCurrentIndexBlocking(); + row = __listView.indexAt(0, __listView.contentY) + } + + var index = modelAdaptor.mapRowToModelIndex(row) + if (index !== oldPressedIndex) { + mouseArea.pressedIndex = index + var modifiers = mouseArea.shiftPressed ? Qt.ShiftModifier : Qt.NoModifier + mouseArea.mouseSelect(index, modifiers, true /* drag */) + } + } + } + + function mouseSelect(modelIndex, modifiers, drag) { + if (!selection) { + maybeWarnAboutSelectionMode() + return + } + + if (selectionMode) { + selection.setCurrentIndex(modelIndex, ItemSelectionModel.NoUpdate) + if (selectionMode === SelectionMode.SingleSelection) { + selection.select(modelIndex, ItemSelectionModel.ClearAndSelect) + } else { + var selectRowRange = (drag && (selectionMode === SelectionMode.MultiSelection + || (selectionMode === SelectionMode.ExtendedSelection + && modifiers & Qt.ControlModifier))) + || modifiers & Qt.ShiftModifier + var itemSelection = !selectRowRange || clickedIndex === modelIndex ? modelIndex + : modelAdaptor.selectionForRowRange(clickedIndex, modelIndex) + + if (selectionMode === SelectionMode.MultiSelection + || selectionMode === SelectionMode.ExtendedSelection && modifiers & Qt.ControlModifier) { + if (drag) + selection.select(itemSelection, ItemSelectionModel.ToggleCurrent) + else + selection.select(modelIndex, ItemSelectionModel.Toggle) + } else if (modifiers & Qt.ShiftModifier) { + selection.select(itemSelection, ItemSelectionModel.SelectCurrent) + } else { + clickedIndex = modelIndex // Needed only when drag is true + selection.select(modelIndex, ItemSelectionModel.ClearAndSelect) + } + } + } + } + + function keySelect(keyModifiers) { + if (selectionMode) { + if (!keyModifiers) + clickedIndex = currentIndex + if (!(keyModifiers & Qt.ControlModifier)) + mouseSelect(currentIndex, keyModifiers, keyModifiers & Qt.ShiftModifier) + } + } + + function selected(row) { + if (selectionMode === SelectionMode.NoSelection) + return false + + var modelIndex = null + if (!!selection) { + modelIndex = modelAdaptor.mapRowToModelIndex(row) + if (modelIndex.valid) { + if (selectionMode === SelectionMode.SingleSelection) + return selection.currentIndex === modelIndex + return selection.hasSelection && selection.isSelected(modelIndex) + } else { + return false + } + } + + return row === currentRow + && (selectionMode === SelectionMode.SingleSelection + || (selectionMode > SelectionMode.SingleSelection && !selection)) + } + + function branchDecorationContains(x, y) { + var clickedItem = __listView.itemAt(0, y + __listView.contentY) + if (!(clickedItem && clickedItem.rowItem)) + return false + var branchDecoration = clickedItem.rowItem.branchDecoration + if (!branchDecoration) + return false + var pos = mapToItem(branchDecoration, x, y) + return branchDecoration.contains(Qt.point(pos.x, pos.y)) + } + + function maybeWarnAboutSelectionMode() { + if (selectionMode > SelectionMode.SingleSelection) + console.warn("TreeView: Non-single selection is not supported without an ItemSelectionModel.") + } + + onPressed: { + var pressedRow = __listView.indexAt(0, mouseY + __listView.contentY) + pressedIndex = modelAdaptor.mapRowToModelIndex(pressedRow) + pressedColumn = __listView.columnAt(mouseX) + selectOnRelease = false + __listView.forceActiveFocus() + if (pressedRow === -1 + || Settings.hasTouchScreen + || branchDecorationContains(mouse.x, mouse.y)) { + return + } + if (selectionMode === SelectionMode.ExtendedSelection + && selection.isSelected(pressedIndex)) { + selectOnRelease = true + return + } + __listView.currentIndex = pressedRow + if (!clickedIndex) + clickedIndex = pressedIndex + mouseSelect(pressedIndex, mouse.modifiers, false) + if (!mouse.modifiers) + clickedIndex = pressedIndex + } + + onReleased: { + if (selectOnRelease) { + var releasedRow = __listView.indexAt(0, mouseY + __listView.contentY) + var releasedIndex = modelAdaptor.mapRowToModelIndex(releasedRow) + if (releasedRow >= 0 && releasedIndex === pressedIndex) + mouseSelect(pressedIndex, mouse.modifiers, false) + } + pressedIndex = undefined + pressedColumn = -1 + autoScroll = 0 + selectOnRelease = false + } + + onPositionChanged: { + // NOTE: Testing for pressed is not technically needed, at least + // until we decide to support tooltips or some other hover feature + if (mouseY > __listView.height && pressed) { + if (autoScroll === 1) return; + autoScroll = 1 + } else if (mouseY < 0 && pressed) { + if (autoScroll === 2) return; + autoScroll = 2 + } else { + autoScroll = 0 + } + + if (pressed && containsMouse) { + var oldPressedIndex = pressedIndex + var pressedRow = __listView.indexAt(0, mouseY + __listView.contentY) + pressedIndex = modelAdaptor.mapRowToModelIndex(pressedRow) + pressedColumn = __listView.columnAt(mouseX) + if (pressedRow > -1 && oldPressedIndex !== pressedIndex) { + __listView.currentIndex = pressedRow + mouseSelect(pressedIndex, mouse.modifiers, true /* drag */) + } + } + } + + onExited: { + pressedIndex = undefined + pressedColumn = -1 + selectOnRelease = false + } + + onCanceled: { + pressedIndex = undefined + pressedColumn = -1 + autoScroll = 0 + selectOnRelease = false + } + + onClicked: { + var clickIndex = __listView.indexAt(0, mouseY + __listView.contentY) + if (clickIndex > -1) { + var modelIndex = modelAdaptor.mapRowToModelIndex(clickIndex) + if (branchDecorationContains(mouse.x, mouse.y)) { + if (modelAdaptor.isExpanded(modelIndex)) + modelAdaptor.collapse(modelIndex) + else + modelAdaptor.expand(modelIndex) + } else { + if (Settings.hasTouchScreen) { + // compensate for the fact that onPressed didn't select on press: do it here instead + pressedIndex = modelAdaptor.mapRowToModelIndex(clickIndex) + pressedColumn = __listView.columnAt(mouseX) + selectOnRelease = false + __listView.forceActiveFocus() + __listView.currentIndex = clickIndex + if (!clickedIndex) + clickedIndex = pressedIndex + mouseSelect(pressedIndex, mouse.modifiers, false) + if (!mouse.modifiers) + clickedIndex = pressedIndex + } + if (root.__activateItemOnSingleClick && !mouse.modifiers) + root.activated(modelIndex) + } + root.clicked(modelIndex) + } + } + + onDoubleClicked: { + var clickIndex = __listView.indexAt(0, mouseY + __listView.contentY) + if (clickIndex > -1) { + var modelIndex = modelAdaptor.mapRowToModelIndex(clickIndex) + if (!root.__activateItemOnSingleClick) + root.activated(modelIndex) + root.doubleClicked(modelIndex) + } + } + + onPressAndHold: { + var pressIndex = __listView.indexAt(0, mouseY + __listView.contentY) + if (pressIndex > -1) { + var modelIndex = modelAdaptor.mapRowToModelIndex(pressIndex) + root.pressAndHold(modelIndex) + } + } + + Keys.forwardTo: [root] + + Keys.onUpPressed: { + event.accepted = __listView.decrementCurrentIndexBlocking() + keySelect(event.modifiers) + } + + Keys.onDownPressed: { + event.accepted = __listView.incrementCurrentIndexBlocking() + keySelect(event.modifiers) + } + + Keys.onRightPressed: { + if (root.currentIndex.valid) + root.expand(currentIndex) + else + event.accepted = false + } + + Keys.onLeftPressed: { + if (root.currentIndex.valid) + root.collapse(currentIndex) + else + event.accepted = false + } + + Keys.onReturnPressed: { + if (root.currentIndex.valid) + root.activated(currentIndex) + else + event.accepted = false + } + + Keys.onPressed: { + __listView.scrollIfNeeded(event.key) + + if (event.key === Qt.Key_A && event.modifiers & Qt.ControlModifier + && !!selection && selectionMode > SelectionMode.SingleSelection) { + var sel = modelAdaptor.selectionForRowRange(0, __listView.count - 1) + selection.select(sel, ItemSelectionModel.SelectCurrent) + } else if (event.key === Qt.Key_Shift) { + shiftPressed = true + } + } + + Keys.onReleased: { + if (event.key === Qt.Key_Shift) + shiftPressed = false + } + } +} diff --git a/deployment_test/QtQuick/Controls/TreeView.qmlc b/deployment_test/QtQuick/Controls/TreeView.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..fb2b8c6c834da35a590b54897ea905a053a240bb Binary files /dev/null and b/deployment_test/QtQuick/Controls/TreeView.qmlc differ diff --git a/deployment_test/QtQuick/Controls/plugins.qmltypes b/deployment_test/QtQuick/Controls/plugins.qmltypes new file mode 100644 index 0000000000000000000000000000000000000000..0242497c1e1914f5bcdb5ac7ee6eab0b6c68893e --- /dev/null +++ b/deployment_test/QtQuick/Controls/plugins.qmltypes @@ -0,0 +1,3439 @@ +import QtQuick.tooling 1.2 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. +// +// This file was auto-generated by: +// 'qmlplugindump -nonrelocatable QtQuick.Controls 1.5' + +Module { + dependencies: [ + "QtGraphicalEffects 1.12", + "QtQml 2.14", + "QtQml.Models 2.2", + "QtQuick 2.9", + "QtQuick.Controls.Styles 1.4", + "QtQuick.Extras 1.4", + "QtQuick.Layouts 1.1", + "QtQuick.Window 2.2" + ] + Component { + name: "QAbstractItemModel" + prototype: "QObject" + exports: ["QtQuick.Controls.Private/AbstractItemModel 1.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Enum { + name: "LayoutChangeHint" + values: { + "NoLayoutChangeHint": 0, + "VerticalSortHint": 1, + "HorizontalSortHint": 2 + } + } + Enum { + name: "CheckIndexOption" + values: { + "NoOption": 0, + "IndexIsValid": 1, + "DoNotUseParent": 2, + "ParentIsInvalid": 4 + } + } + Signal { + name: "dataChanged" + Parameter { name: "topLeft"; type: "QModelIndex" } + Parameter { name: "bottomRight"; type: "QModelIndex" } + Parameter { name: "roles"; type: "QVector<int>" } + } + Signal { + name: "dataChanged" + Parameter { name: "topLeft"; type: "QModelIndex" } + Parameter { name: "bottomRight"; type: "QModelIndex" } + } + Signal { + name: "headerDataChanged" + Parameter { name: "orientation"; type: "Qt::Orientation" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "layoutChanged" + Parameter { name: "parents"; type: "QList<QPersistentModelIndex>" } + Parameter { name: "hint"; type: "QAbstractItemModel::LayoutChangeHint" } + } + Signal { + name: "layoutChanged" + Parameter { name: "parents"; type: "QList<QPersistentModelIndex>" } + } + Signal { name: "layoutChanged" } + Signal { + name: "layoutAboutToBeChanged" + Parameter { name: "parents"; type: "QList<QPersistentModelIndex>" } + Parameter { name: "hint"; type: "QAbstractItemModel::LayoutChangeHint" } + } + Signal { + name: "layoutAboutToBeChanged" + Parameter { name: "parents"; type: "QList<QPersistentModelIndex>" } + } + Signal { name: "layoutAboutToBeChanged" } + Signal { + name: "rowsAboutToBeInserted" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "rowsInserted" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "rowsAboutToBeRemoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "rowsRemoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "columnsAboutToBeInserted" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "columnsInserted" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "columnsAboutToBeRemoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { + name: "columnsRemoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "first"; type: "int" } + Parameter { name: "last"; type: "int" } + } + Signal { name: "modelAboutToBeReset" } + Signal { name: "modelReset" } + Signal { + name: "rowsAboutToBeMoved" + Parameter { name: "sourceParent"; type: "QModelIndex" } + Parameter { name: "sourceStart"; type: "int" } + Parameter { name: "sourceEnd"; type: "int" } + Parameter { name: "destinationParent"; type: "QModelIndex" } + Parameter { name: "destinationRow"; type: "int" } + } + Signal { + name: "rowsMoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + Parameter { name: "destination"; type: "QModelIndex" } + Parameter { name: "row"; type: "int" } + } + Signal { + name: "columnsAboutToBeMoved" + Parameter { name: "sourceParent"; type: "QModelIndex" } + Parameter { name: "sourceStart"; type: "int" } + Parameter { name: "sourceEnd"; type: "int" } + Parameter { name: "destinationParent"; type: "QModelIndex" } + Parameter { name: "destinationColumn"; type: "int" } + } + Signal { + name: "columnsMoved" + Parameter { name: "parent"; type: "QModelIndex" } + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + Parameter { name: "destination"; type: "QModelIndex" } + Parameter { name: "column"; type: "int" } + } + Method { name: "submit"; type: "bool" } + Method { name: "revert" } + Method { + name: "hasIndex" + type: "bool" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { + name: "hasIndex" + type: "bool" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + } + Method { + name: "index" + type: "QModelIndex" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { + name: "index" + type: "QModelIndex" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + } + Method { + name: "parent" + type: "QModelIndex" + Parameter { name: "child"; type: "QModelIndex" } + } + Method { + name: "sibling" + type: "QModelIndex" + Parameter { name: "row"; type: "int" } + Parameter { name: "column"; type: "int" } + Parameter { name: "idx"; type: "QModelIndex" } + } + Method { + name: "rowCount" + type: "int" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { name: "rowCount"; type: "int" } + Method { + name: "columnCount" + type: "int" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { name: "columnCount"; type: "int" } + Method { + name: "hasChildren" + type: "bool" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { name: "hasChildren"; type: "bool" } + Method { + name: "data" + type: "QVariant" + Parameter { name: "index"; type: "QModelIndex" } + Parameter { name: "role"; type: "int" } + } + Method { + name: "data" + type: "QVariant" + Parameter { name: "index"; type: "QModelIndex" } + } + Method { + name: "setData" + type: "bool" + Parameter { name: "index"; type: "QModelIndex" } + Parameter { name: "value"; type: "QVariant" } + Parameter { name: "role"; type: "int" } + } + Method { + name: "setData" + type: "bool" + Parameter { name: "index"; type: "QModelIndex" } + Parameter { name: "value"; type: "QVariant" } + } + Method { + name: "headerData" + type: "QVariant" + Parameter { name: "section"; type: "int" } + Parameter { name: "orientation"; type: "Qt::Orientation" } + Parameter { name: "role"; type: "int" } + } + Method { + name: "headerData" + type: "QVariant" + Parameter { name: "section"; type: "int" } + Parameter { name: "orientation"; type: "Qt::Orientation" } + } + Method { + name: "fetchMore" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { + name: "canFetchMore" + type: "bool" + Parameter { name: "parent"; type: "QModelIndex" } + } + Method { + name: "flags" + type: "Qt::ItemFlags" + Parameter { name: "index"; type: "QModelIndex" } + } + Method { + name: "match" + type: "QModelIndexList" + Parameter { name: "start"; type: "QModelIndex" } + Parameter { name: "role"; type: "int" } + Parameter { name: "value"; type: "QVariant" } + Parameter { name: "hits"; type: "int" } + Parameter { name: "flags"; type: "Qt::MatchFlags" } + } + Method { + name: "match" + type: "QModelIndexList" + Parameter { name: "start"; type: "QModelIndex" } + Parameter { name: "role"; type: "int" } + Parameter { name: "value"; type: "QVariant" } + Parameter { name: "hits"; type: "int" } + } + Method { + name: "match" + type: "QModelIndexList" + Parameter { name: "start"; type: "QModelIndex" } + Parameter { name: "role"; type: "int" } + Parameter { name: "value"; type: "QVariant" } + } + } + Component { name: "QAbstractListModel"; prototype: "QAbstractItemModel" } + Component { + name: "QQuickAbstractStyle1" + defaultProperty: "data" + prototype: "QObject" + exports: ["QtQuick.Controls.Private/AbstractStyle 1.0"] + exportMetaObjectRevisions: [0] + Property { name: "padding"; type: "QQuickPadding1"; isReadonly: true; isPointer: true } + Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } + } + Component { + name: "QQuickAction1" + prototype: "QObject" + exports: ["QtQuick.Controls/Action 1.0"] + exportMetaObjectRevisions: [0] + Property { name: "text"; type: "string" } + Property { name: "iconSource"; type: "QUrl" } + Property { name: "iconName"; type: "string" } + Property { name: "__icon"; type: "QVariant"; isReadonly: true } + Property { name: "tooltip"; type: "string" } + Property { name: "enabled"; type: "bool" } + Property { name: "checkable"; type: "bool" } + Property { name: "checked"; type: "bool" } + Property { name: "exclusiveGroup"; type: "QQuickExclusiveGroup1"; isPointer: true } + Property { name: "shortcut"; type: "QVariant" } + Signal { + name: "triggered" + Parameter { name: "source"; type: "QObject"; isPointer: true } + } + Signal { name: "triggered" } + Signal { + name: "toggled" + Parameter { name: "checked"; type: "bool" } + } + Signal { + name: "shortcutChanged" + Parameter { name: "shortcut"; type: "QVariant" } + } + Signal { name: "iconChanged" } + Signal { + name: "tooltipChanged" + Parameter { name: "arg"; type: "string" } + } + Method { + name: "trigger" + Parameter { name: "source"; type: "QObject"; isPointer: true } + } + Method { name: "trigger" } + } + Component { + name: "QQuickCalendarModel1" + prototype: "QAbstractListModel" + exports: ["QtQuick.Controls.Private/CalendarModel 1.0"] + exportMetaObjectRevisions: [0] + Property { name: "visibleDate"; type: "QDate" } + Property { name: "locale"; type: "QLocale" } + Property { name: "count"; type: "int"; isReadonly: true } + Signal { + name: "visibleDateChanged" + Parameter { name: "visibleDate"; type: "QDate" } + } + Signal { + name: "localeChanged" + Parameter { name: "locale"; type: "QLocale" } + } + Signal { + name: "countChanged" + Parameter { name: "count"; type: "int" } + } + Method { + name: "dateAt" + type: "QDateTime" + Parameter { name: "index"; type: "int" } + } + Method { + name: "indexAt" + type: "int" + Parameter { name: "visibleDate"; type: "QDate" } + } + Method { + name: "weekNumberAt" + type: "int" + Parameter { name: "row"; type: "int" } + } + } + Component { + name: "QQuickControlSettings1" + prototype: "QObject" + exports: ["QtQuick.Controls.Private/Settings 1.0"] + isCreatable: false + isSingleton: true + exportMetaObjectRevisions: [0] + Property { name: "style"; type: "QUrl"; isReadonly: true } + Property { name: "styleName"; type: "string" } + Property { name: "stylePath"; type: "string" } + Property { name: "dpiScaleFactor"; type: "double"; isReadonly: true } + Property { name: "dragThreshold"; type: "double"; isReadonly: true } + Property { name: "hasTouchScreen"; type: "bool"; isReadonly: true } + Property { name: "isMobile"; type: "bool"; isReadonly: true } + Property { name: "hoverEnabled"; type: "bool"; isReadonly: true } + Method { + name: "styleComponent" + type: "QQmlComponent*" + Parameter { name: "styleDirUrl"; type: "QUrl" } + Parameter { name: "controlStyleName"; type: "string" } + Parameter { name: "control"; type: "QObject"; isPointer: true } + } + } + Component { + name: "QQuickControlsPrivate1" + prototype: "QObject" + exports: ["QtQuick.Controls.Private/Controls 1.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + attachedType: "QQuickControlsPrivate1Attached" + } + Component { + name: "QQuickControlsPrivate1Attached" + prototype: "QObject" + Property { name: "window"; type: "QQuickWindow"; isReadonly: true; isPointer: true } + } + Component { + name: "QQuickExclusiveGroup1" + defaultProperty: "__actions" + prototype: "QObject" + exports: ["QtQuick.Controls/ExclusiveGroup 1.0"] + exportMetaObjectRevisions: [0] + Property { name: "current"; type: "QObject"; isPointer: true } + Property { name: "__actions"; type: "QQuickAction1"; isList: true; isReadonly: true } + Method { + name: "bindCheckable" + Parameter { name: "o"; type: "QObject"; isPointer: true } + } + Method { + name: "unbindCheckable" + Parameter { name: "o"; type: "QObject"; isPointer: true } + } + } + Component { + name: "QQuickMenu1" + defaultProperty: "items" + prototype: "QQuickMenuText1" + exports: ["QtQuick.Controls.Private/MenuPrivate 1.0"] + exportMetaObjectRevisions: [0] + Enum { + name: "MenuType" + values: { + "DefaultMenu": 0, + "EditMenu": 1 + } + } + Property { name: "title"; type: "string" } + Property { name: "items"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "__selectedIndex"; type: "int" } + Property { name: "__popupVisible"; type: "bool"; isReadonly: true } + Property { name: "__contentItem"; type: "QQuickItem"; isPointer: true } + Property { name: "__minimumWidth"; type: "int" } + Property { name: "__font"; type: "QFont" } + Property { name: "__xOffset"; type: "double" } + Property { name: "__yOffset"; type: "double" } + Property { name: "__action"; type: "QQuickAction1"; isReadonly: true; isPointer: true } + Property { name: "__popupGeometry"; type: "QRect"; isReadonly: true } + Property { name: "__isProxy"; type: "bool" } + Signal { name: "aboutToShow" } + Signal { name: "aboutToHide" } + Signal { name: "popupVisibleChanged" } + Signal { name: "__menuPopupDestroyed" } + Signal { name: "menuContentItemChanged" } + Signal { name: "minimumWidthChanged" } + Signal { name: "__proxyChanged" } + Method { name: "__dismissMenu" } + Method { name: "__closeAndDestroy" } + Method { name: "__dismissAndDestroy" } + Method { name: "popup" } + Method { + name: "addItem" + type: "QQuickMenuItem1*" + Parameter { type: "string" } + } + Method { + name: "insertItem" + type: "QQuickMenuItem1*" + Parameter { type: "int" } + Parameter { type: "string" } + } + Method { name: "addSeparator" } + Method { + name: "insertSeparator" + Parameter { type: "int" } + } + Method { + name: "insertItem" + Parameter { type: "int" } + Parameter { type: "QQuickMenuBase1"; isPointer: true } + } + Method { + name: "removeItem" + Parameter { type: "QQuickMenuBase1"; isPointer: true } + } + Method { name: "clear" } + Method { + name: "__popup" + Parameter { name: "targetRect"; type: "QRectF" } + Parameter { name: "atItemIndex"; type: "int" } + Parameter { name: "menuType"; type: "MenuType" } + } + Method { + name: "__popup" + Parameter { name: "targetRect"; type: "QRectF" } + Parameter { name: "atItemIndex"; type: "int" } + } + Method { + name: "__popup" + Parameter { name: "targetRect"; type: "QRectF" } + } + } + Component { + name: "QQuickMenuBar1" + defaultProperty: "menus" + prototype: "QObject" + exports: ["QtQuick.Controls.Private/MenuBarPrivate 1.0"] + exportMetaObjectRevisions: [0] + Property { name: "menus"; type: "QQuickMenu1"; isList: true; isReadonly: true } + Property { name: "__contentItem"; type: "QQuickItem"; isPointer: true } + Property { name: "__parentWindow"; type: "QQuickWindow"; isPointer: true } + Property { name: "__isNative"; type: "bool" } + Signal { name: "nativeChanged" } + Signal { name: "contentItemChanged" } + } + Component { + name: "QQuickMenuBase1" + prototype: "QObject" + exports: ["QtQuick.Controls/MenuBase 1.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Property { name: "visible"; type: "bool" } + Property { name: "type"; type: "QQuickMenuItemType1::MenuItemType"; isReadonly: true } + Property { name: "__parentMenu"; type: "QObject"; isReadonly: true; isPointer: true } + Property { name: "__isNative"; type: "bool"; isReadonly: true } + Property { name: "__visualItem"; type: "QQuickItem"; isPointer: true } + } + Component { + name: "QQuickMenuItem1" + prototype: "QQuickMenuText1" + exports: ["QtQuick.Controls/MenuItem 1.0"] + exportMetaObjectRevisions: [0] + Property { name: "text"; type: "string" } + Property { name: "checkable"; type: "bool" } + Property { name: "checked"; type: "bool" } + Property { name: "exclusiveGroup"; type: "QQuickExclusiveGroup1"; isPointer: true } + Property { name: "shortcut"; type: "QVariant" } + Property { name: "action"; type: "QQuickAction1"; isPointer: true } + Signal { name: "triggered" } + Signal { + name: "toggled" + Parameter { name: "checked"; type: "bool" } + } + Method { name: "trigger" } + } + Component { + name: "QQuickMenuItemType1" + exports: ["QtQuick.Controls/MenuItemType 1.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Enum { + name: "MenuItemType" + values: { + "Separator": 0, + "Item": 1, + "Menu": 2, + "ScrollIndicator": 3 + } + } + } + Component { + name: "QQuickMenuSeparator1" + prototype: "QQuickMenuBase1" + exports: ["QtQuick.Controls/MenuSeparator 1.0"] + exportMetaObjectRevisions: [0] + } + Component { + name: "QQuickMenuText1" + prototype: "QQuickMenuBase1" + Property { name: "enabled"; type: "bool" } + Property { name: "iconSource"; type: "QUrl" } + Property { name: "iconName"; type: "string" } + Property { name: "__icon"; type: "QVariant"; isReadonly: true } + Signal { name: "__textChanged" } + } + Component { + name: "QQuickPadding1" + prototype: "QObject" + exports: ["QtQuick.Controls.Private/Padding 1.0"] + exportMetaObjectRevisions: [0] + Property { name: "left"; type: "int" } + Property { name: "top"; type: "int" } + Property { name: "right"; type: "int" } + Property { name: "bottom"; type: "int" } + Method { + name: "setLeft" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setTop" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setRight" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setBottom" + Parameter { name: "arg"; type: "int" } + } + } + Component { + name: "QQuickPopupWindow1" + defaultProperty: "popupContentItem" + prototype: "QQuickWindow" + exports: ["QtQuick.Controls.Private/PopupWindow 1.0"] + exportMetaObjectRevisions: [0] + Property { name: "popupContentItem"; type: "QQuickItem"; isPointer: true } + Property { name: "parentItem"; type: "QQuickItem"; isPointer: true } + Signal { name: "popupDismissed" } + Signal { name: "geometryChanged" } + Method { name: "show" } + Method { name: "dismissPopup" } + } + Component { + name: "QQuickRangeModel1" + prototype: "QObject" + exports: ["QtQuick.Controls.Private/RangeModel 1.0"] + exportMetaObjectRevisions: [0] + Property { name: "value"; type: "double" } + Property { name: "minimumValue"; type: "double" } + Property { name: "maximumValue"; type: "double" } + Property { name: "stepSize"; type: "double" } + Property { name: "position"; type: "double" } + Property { name: "positionAtMinimum"; type: "double" } + Property { name: "positionAtMaximum"; type: "double" } + Property { name: "inverted"; type: "bool" } + Signal { + name: "valueChanged" + Parameter { name: "value"; type: "double" } + } + Signal { + name: "positionChanged" + Parameter { name: "position"; type: "double" } + } + Signal { + name: "stepSizeChanged" + Parameter { name: "stepSize"; type: "double" } + } + Signal { + name: "invertedChanged" + Parameter { name: "inverted"; type: "bool" } + } + Signal { + name: "minimumChanged" + Parameter { name: "min"; type: "double" } + } + Signal { + name: "maximumChanged" + Parameter { name: "max"; type: "double" } + } + Signal { + name: "positionAtMinimumChanged" + Parameter { name: "min"; type: "double" } + } + Signal { + name: "positionAtMaximumChanged" + Parameter { name: "max"; type: "double" } + } + Method { name: "toMinimum" } + Method { name: "toMaximum" } + Method { + name: "setValue" + Parameter { name: "value"; type: "double" } + } + Method { + name: "setPosition" + Parameter { name: "position"; type: "double" } + } + Method { name: "increaseSingleStep" } + Method { name: "decreaseSingleStep" } + Method { + name: "valueForPosition" + type: "double" + Parameter { name: "position"; type: "double" } + } + Method { + name: "positionForValue" + type: "double" + Parameter { name: "value"; type: "double" } + } + } + Component { + name: "QQuickRangedDate1" + prototype: "QObject" + exports: ["QtQuick.Controls.Private/RangedDate 1.0"] + exportMetaObjectRevisions: [0] + Property { name: "date"; type: "QDateTime" } + Property { name: "minimumDate"; type: "QDateTime" } + Property { name: "maximumDate"; type: "QDateTime" } + } + Component { + name: "QQuickRootItem" + defaultProperty: "data" + prototype: "QQuickItem" + Method { + name: "setWidth" + Parameter { name: "w"; type: "int" } + } + Method { + name: "setHeight" + Parameter { name: "h"; type: "int" } + } + } + Component { + name: "QQuickScenePosListener1" + prototype: "QObject" + exports: ["QtQuick.Controls.Private/ScenePosListener 1.0"] + exportMetaObjectRevisions: [0] + Property { name: "item"; type: "QQuickItem"; isPointer: true } + Property { name: "scenePos"; type: "QPointF"; isReadonly: true } + Property { name: "enabled"; type: "bool" } + } + Component { + name: "QQuickSelectionMode1" + exports: ["QtQuick.Controls/SelectionMode 1.1"] + isCreatable: false + exportMetaObjectRevisions: [0] + Enum { + name: "SelectionMode" + values: { + "NoSelection": 0, + "SingleSelection": 1, + "ExtendedSelection": 2, + "MultiSelection": 3, + "ContiguousSelection": 4 + } + } + } + Component { + name: "QQuickSpinBoxValidator1" + prototype: "QValidator" + exports: ["QtQuick.Controls.Private/SpinBoxValidator 1.0"] + exportMetaObjectRevisions: [0] + Property { name: "text"; type: "string"; isReadonly: true } + Property { name: "value"; type: "double" } + Property { name: "minimumValue"; type: "double" } + Property { name: "maximumValue"; type: "double" } + Property { name: "decimals"; type: "int" } + Property { name: "stepSize"; type: "double" } + Property { name: "prefix"; type: "string" } + Property { name: "suffix"; type: "string" } + Method { name: "increment" } + Method { name: "decrement" } + } + Component { + name: "QQuickStack1" + prototype: "QObject" + exports: ["QtQuick.Controls/Stack 1.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Enum { + name: "Status" + values: { + "Inactive": 0, + "Deactivating": 1, + "Activating": 2, + "Active": 3 + } + } + Property { name: "index"; type: "int"; isReadonly: true } + Property { name: "__index"; type: "int" } + Property { name: "status"; type: "Status"; isReadonly: true } + Property { name: "__status"; type: "Status" } + Property { name: "view"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "__view"; type: "QQuickItem"; isPointer: true } + } + Component { + name: "QQuickStyleItem1" + defaultProperty: "data" + prototype: "QQuickItem" + exports: ["QtQuick.Controls.Private/StyleItem 1.0"] + exportMetaObjectRevisions: [0] + Property { name: "border"; type: "QQuickPadding1"; isReadonly: true; isPointer: true } + Property { name: "sunken"; type: "bool" } + Property { name: "raised"; type: "bool" } + Property { name: "active"; type: "bool" } + Property { name: "selected"; type: "bool" } + Property { name: "hasFocus"; type: "bool" } + Property { name: "on"; type: "bool" } + Property { name: "hover"; type: "bool" } + Property { name: "horizontal"; type: "bool" } + Property { name: "isTransient"; type: "bool" } + Property { name: "elementType"; type: "string" } + Property { name: "text"; type: "string" } + Property { name: "activeControl"; type: "string" } + Property { name: "style"; type: "string"; isReadonly: true } + Property { name: "hints"; type: "QVariantMap" } + Property { name: "properties"; type: "QVariantMap" } + Property { name: "font"; type: "QFont"; isReadonly: true } + Property { name: "minimum"; type: "int" } + Property { name: "maximum"; type: "int" } + Property { name: "value"; type: "int" } + Property { name: "step"; type: "int" } + Property { name: "paintMargins"; type: "int" } + Property { name: "contentWidth"; type: "int" } + Property { name: "contentHeight"; type: "int" } + Property { name: "textureWidth"; type: "int" } + Property { name: "textureHeight"; type: "int" } + Signal { name: "transientChanged" } + Signal { name: "infoChanged" } + Signal { name: "hintChanged" } + Signal { + name: "contentWidthChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "contentHeightChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "textureWidthChanged" + Parameter { name: "w"; type: "int" } + } + Signal { + name: "textureHeightChanged" + Parameter { name: "h"; type: "int" } + } + Method { + name: "pixelMetric" + type: "int" + Parameter { type: "string" } + } + Method { + name: "styleHint" + type: "QVariant" + Parameter { type: "string" } + } + Method { name: "updateSizeHint" } + Method { name: "updateRect" } + Method { name: "updateBaselineOffset" } + Method { name: "updateItem" } + Method { + name: "hitTest" + type: "string" + Parameter { name: "x"; type: "int" } + Parameter { name: "y"; type: "int" } + } + Method { + name: "subControlRect" + type: "QRectF" + Parameter { name: "subcontrolString"; type: "string" } + } + Method { + name: "elidedText" + type: "string" + Parameter { name: "text"; type: "string" } + Parameter { name: "elideMode"; type: "int" } + Parameter { name: "width"; type: "int" } + } + Method { + name: "hasThemeIcon" + type: "bool" + Parameter { type: "string" } + } + Method { + name: "textWidth" + type: "double" + Parameter { type: "string" } + } + Method { + name: "textHeight" + type: "double" + Parameter { type: "string" } + } + } + Component { + name: "QQuickTooltip1" + prototype: "QObject" + exports: ["QtQuick.Controls.Private/Tooltip 1.0"] + isCreatable: false + isSingleton: true + exportMetaObjectRevisions: [0] + Method { + name: "showText" + Parameter { name: "item"; type: "QQuickItem"; isPointer: true } + Parameter { name: "pos"; type: "QPointF" } + Parameter { name: "text"; type: "string" } + } + Method { name: "hideText" } + } + Component { + name: "QQuickTreeModelAdaptor1" + prototype: "QAbstractListModel" + exports: ["QtQuick.Controls.Private/TreeModelAdaptor 1.0"] + exportMetaObjectRevisions: [0] + Property { name: "model"; type: "QAbstractItemModel"; isPointer: true } + Property { name: "rootIndex"; type: "QModelIndex" } + Signal { + name: "modelChanged" + Parameter { name: "model"; type: "QAbstractItemModel"; isPointer: true } + } + Signal { + name: "expanded" + Parameter { name: "index"; type: "QModelIndex" } + } + Signal { + name: "collapsed" + Parameter { name: "index"; type: "QModelIndex" } + } + Method { + name: "expand" + Parameter { type: "QModelIndex" } + } + Method { + name: "collapse" + Parameter { type: "QModelIndex" } + } + Method { + name: "setModel" + Parameter { name: "model"; type: "QAbstractItemModel"; isPointer: true } + } + Method { + name: "mapRowToModelIndex" + type: "QModelIndex" + Parameter { name: "row"; type: "int" } + } + Method { + name: "selectionForRowRange" + type: "QItemSelection" + Parameter { name: "fromIndex"; type: "QModelIndex" } + Parameter { name: "toIndex"; type: "QModelIndex" } + } + Method { + name: "isExpanded" + type: "bool" + Parameter { type: "QModelIndex" } + } + } + Component { + name: "QQuickWheelArea1" + defaultProperty: "data" + prototype: "QQuickItem" + exports: ["QtQuick.Controls.Private/WheelArea 1.0"] + exportMetaObjectRevisions: [0] + Property { name: "verticalDelta"; type: "double" } + Property { name: "horizontalDelta"; type: "double" } + Property { name: "horizontalMinimumValue"; type: "double" } + Property { name: "horizontalMaximumValue"; type: "double" } + Property { name: "verticalMinimumValue"; type: "double" } + Property { name: "verticalMaximumValue"; type: "double" } + Property { name: "horizontalValue"; type: "double" } + Property { name: "verticalValue"; type: "double" } + Property { name: "scrollSpeed"; type: "double" } + Property { name: "active"; type: "bool" } + Property { name: "inverted"; type: "bool"; isReadonly: true } + Signal { name: "verticalWheelMoved" } + Signal { name: "horizontalWheelMoved" } + } + Component { + prototype: "QQuickWindowQmlImpl" + name: "QtQuick.Controls/ApplicationWindow 1.0" + exports: ["QtQuick.Controls/ApplicationWindow 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "menuBar"; type: "MenuBar_QMLTYPE_4"; isPointer: true } + Property { name: "toolBar"; type: "QQuickItem"; isPointer: true } + Property { name: "statusBar"; type: "QQuickItem"; isPointer: true } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__topBottomMargins"; type: "double" } + Property { name: "__qwindowsize_max"; type: "double"; isReadonly: true } + Property { name: "__width"; type: "double" } + Property { name: "__height"; type: "double" } + Property { name: "contentItem"; type: "ContentItem_QMLTYPE_2"; isReadonly: true; isPointer: true } + Property { name: "__style"; type: "QObject"; isReadonly: true; isPointer: true } + Property { name: "__panel"; type: "QObject"; isReadonly: true; isPointer: true } + Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } + } + Component { + prototype: "QObject" + name: "QtQuick.Controls.Styles/ApplicationWindowStyle 1.3" + exports: ["QtQuick.Controls.Styles/ApplicationWindowStyle 1.3"] + exportMetaObjectRevisions: [3] + isComposite: true + Property { + name: "control" + type: "ApplicationWindow_QMLTYPE_14" + isReadonly: true + isPointer: true + } + Property { name: "background"; type: "QQmlComponent"; isPointer: true } + Property { name: "panel"; type: "QQmlComponent"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/BusyIndicator 1.1" + exports: ["QtQuick.Controls/BusyIndicator 1.1"] + exportMetaObjectRevisions: [1] + isComposite: true + defaultProperty: "data" + Property { name: "running"; type: "bool" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickAbstractStyle1" + name: "QtQuick.Controls.Styles/BusyIndicatorStyle 1.1" + exports: ["QtQuick.Controls.Styles/BusyIndicatorStyle 1.1"] + exportMetaObjectRevisions: [1] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "BusyIndicator_QMLTYPE_21"; isReadonly: true; isPointer: true } + Property { name: "indicator"; type: "QQmlComponent"; isPointer: true } + Property { name: "panel"; type: "QQmlComponent"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/Button 1.0" + exports: ["QtQuick.Controls/Button 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "isDefault"; type: "bool" } + Property { name: "menu"; type: "Menu_QMLTYPE_55"; isPointer: true } + Property { name: "checkable"; type: "bool" } + Property { name: "checked"; type: "bool" } + Property { name: "exclusiveGroup"; type: "QQuickExclusiveGroup1"; isPointer: true } + Property { name: "action"; type: "QQuickAction1"; isPointer: true } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "text"; type: "string" } + Property { name: "tooltip"; type: "string" } + Property { name: "iconSource"; type: "QUrl" } + Property { name: "iconName"; type: "string" } + Property { name: "__position"; type: "string" } + Property { name: "__iconOverriden"; type: "bool"; isReadonly: true } + Property { name: "__action"; type: "QQuickAction1"; isPointer: true } + Property { name: "__iconAction"; type: "QQuickAction1"; isReadonly: true; isPointer: true } + Property { name: "__behavior"; type: "QVariant" } + Property { name: "__effectivePressed"; type: "bool" } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Signal { name: "clicked" } + Method { name: "accessiblePressAction"; type: "QVariant" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickAbstractStyle1" + name: "QtQuick.Controls.Styles/ButtonStyle 1.0" + exports: ["QtQuick.Controls.Styles/ButtonStyle 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "Button_QMLTYPE_60"; isReadonly: true; isPointer: true } + Property { name: "background"; type: "QQmlComponent"; isPointer: true } + Property { name: "label"; type: "QQmlComponent"; isPointer: true } + Property { name: "panel"; type: "QQmlComponent"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/Calendar 1.2" + exports: ["QtQuick.Controls/Calendar 1.2"] + exportMetaObjectRevisions: [2] + isComposite: true + defaultProperty: "data" + Property { name: "visibleMonth"; type: "int" } + Property { name: "visibleYear"; type: "int" } + Property { name: "frameVisible"; type: "bool" } + Property { name: "weekNumbersVisible"; type: "bool" } + Property { name: "navigationBarVisible"; type: "bool" } + Property { name: "dayOfWeekFormat"; type: "int" } + Property { name: "locale"; type: "QVariant" } + Property { name: "__model"; type: "QQuickCalendarModel1"; isPointer: true } + Property { name: "selectedDate"; type: "QDateTime" } + Property { name: "minimumDate"; type: "QDateTime" } + Property { name: "maximumDate"; type: "QDateTime" } + Property { name: "__locale"; type: "QVariant" } + Signal { + name: "hovered" + Parameter { name: "date"; type: "QDateTime" } + } + Signal { + name: "pressed" + Parameter { name: "date"; type: "QDateTime" } + } + Signal { + name: "released" + Parameter { name: "date"; type: "QDateTime" } + } + Signal { + name: "clicked" + Parameter { name: "date"; type: "QDateTime" } + } + Signal { + name: "doubleClicked" + Parameter { name: "date"; type: "QDateTime" } + } + Signal { + name: "pressAndHold" + Parameter { name: "date"; type: "QDateTime" } + } + Method { name: "showPreviousMonth"; type: "QVariant" } + Method { name: "showNextMonth"; type: "QVariant" } + Method { name: "showPreviousYear"; type: "QVariant" } + Method { name: "showNextYear"; type: "QVariant" } + Method { name: "__selectPreviousMonth"; type: "QVariant" } + Method { name: "__selectNextMonth"; type: "QVariant" } + Method { name: "__selectPreviousWeek"; type: "QVariant" } + Method { name: "__selectNextWeek"; type: "QVariant" } + Method { name: "__selectFirstDayOfMonth"; type: "QVariant" } + Method { name: "__selectLastDayOfMonth"; type: "QVariant" } + Method { name: "__selectPreviousDay"; type: "QVariant" } + Method { name: "__selectNextDay"; type: "QVariant" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/Calendar 1.6" + exports: ["QtQuick.Controls/Calendar 1.6"] + exportMetaObjectRevisions: [6] + isComposite: true + defaultProperty: "data" + Property { name: "visibleMonth"; type: "int" } + Property { name: "visibleYear"; type: "int" } + Property { name: "frameVisible"; type: "bool" } + Property { name: "weekNumbersVisible"; type: "bool" } + Property { name: "navigationBarVisible"; type: "bool" } + Property { name: "dayOfWeekFormat"; type: "int" } + Property { name: "locale"; type: "QVariant" } + Property { name: "__model"; type: "QQuickCalendarModel1"; isPointer: true } + Property { name: "selectedDate"; type: "QDateTime" } + Property { name: "minimumDate"; type: "QDateTime" } + Property { name: "maximumDate"; type: "QDateTime" } + Property { name: "__locale"; type: "QVariant" } + Signal { + name: "hovered" + Parameter { name: "date"; type: "QDateTime" } + } + Signal { + name: "pressed" + Parameter { name: "date"; type: "QDateTime" } + } + Signal { + name: "released" + Parameter { name: "date"; type: "QDateTime" } + } + Signal { + name: "clicked" + Parameter { name: "date"; type: "QDateTime" } + } + Signal { + name: "doubleClicked" + Parameter { name: "date"; type: "QDateTime" } + } + Signal { + name: "pressAndHold" + Parameter { name: "date"; type: "QDateTime" } + } + Method { name: "showPreviousMonth"; type: "QVariant" } + Method { name: "showNextMonth"; type: "QVariant" } + Method { name: "showPreviousYear"; type: "QVariant" } + Method { name: "showNextYear"; type: "QVariant" } + Method { name: "__selectPreviousMonth"; type: "QVariant" } + Method { name: "__selectNextMonth"; type: "QVariant" } + Method { name: "__selectPreviousWeek"; type: "QVariant" } + Method { name: "__selectNextWeek"; type: "QVariant" } + Method { name: "__selectFirstDayOfMonth"; type: "QVariant" } + Method { name: "__selectLastDayOfMonth"; type: "QVariant" } + Method { name: "__selectPreviousDay"; type: "QVariant" } + Method { name: "__selectNextDay"; type: "QVariant" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickAbstractStyle1" + name: "QtQuick.Controls.Styles/CalendarStyle 1.1" + exports: ["QtQuick.Controls.Styles/CalendarStyle 1.1"] + exportMetaObjectRevisions: [1] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "Calendar_QMLTYPE_65"; isReadonly: true; isPointer: true } + Property { name: "gridColor"; type: "QColor" } + Property { name: "gridVisible"; type: "bool" } + Property { name: "__gridLineWidth"; type: "double" } + Property { name: "__horizontalSeparatorColor"; type: "QColor" } + Property { name: "__verticalSeparatorColor"; type: "QColor" } + Property { name: "background"; type: "QQmlComponent"; isPointer: true } + Property { name: "navigationBar"; type: "QQmlComponent"; isPointer: true } + Property { name: "dayDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "dayOfWeekDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "weekNumberDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "panel"; type: "QQmlComponent"; isPointer: true } + Method { + name: "__cellRectAt" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "__isValidDate" + type: "QVariant" + Parameter { name: "date"; type: "QVariant" } + } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/CheckBox 1.0" + exports: ["QtQuick.Controls/CheckBox 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "checkedState"; type: "int" } + Property { name: "partiallyCheckedEnabled"; type: "bool" } + Property { name: "__ignoreChecked"; type: "bool" } + Property { name: "__ignoreCheckedState"; type: "bool" } + Method { name: "__cycleCheckBoxStates"; type: "QVariant" } + Property { name: "checked"; type: "bool" } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "exclusiveGroup"; type: "QQuickExclusiveGroup1"; isPointer: true } + Property { name: "text"; type: "string" } + Property { name: "tooltip"; type: "string" } + Property { name: "__cycleStatesHandler"; type: "QVariant" } + Property { name: "pressed"; type: "bool" } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Signal { name: "clicked" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickAbstractStyle1" + name: "QtQuick.Controls.Styles/CheckBoxStyle 1.0" + exports: ["QtQuick.Controls.Styles/CheckBoxStyle 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "CheckBox_QMLTYPE_88"; isReadonly: true; isPointer: true } + Property { name: "label"; type: "QQmlComponent"; isPointer: true } + Property { name: "background"; type: "QQmlComponent"; isPointer: true } + Property { name: "spacing"; type: "int" } + Property { name: "indicator"; type: "QQmlComponent"; isPointer: true } + Property { name: "panel"; type: "QQmlComponent"; isPointer: true } + } + Component { + prototype: "QQuickAbstractStyle1" + name: "QtQuick.Controls.Styles/CircularButtonStyle 1.0" + exports: ["QtQuick.Controls.Styles/CircularButtonStyle 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { + name: "__buttonHelper" + type: "CircularButtonStyleHelper_QMLTYPE_93" + isReadonly: true + isPointer: true + } + Property { name: "control"; type: "Button_QMLTYPE_60"; isReadonly: true; isPointer: true } + Property { name: "background"; type: "QQmlComponent"; isPointer: true } + Property { name: "label"; type: "QQmlComponent"; isPointer: true } + Property { name: "panel"; type: "QQmlComponent"; isPointer: true } + } + Component { + prototype: "QQuickAbstractStyle1" + name: "QtQuick.Controls.Styles/CircularGaugeStyle 1.0" + exports: ["QtQuick.Controls.Styles/CircularGaugeStyle 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "CircularGauge_QMLTYPE_97"; isReadonly: true; isPointer: true } + Property { name: "outerRadius"; type: "double"; isReadonly: true } + Property { name: "minimumValueAngle"; type: "double" } + Property { name: "maximumValueAngle"; type: "double" } + Property { name: "angleRange"; type: "double"; isReadonly: true } + Property { name: "needleRotation"; type: "double" } + Property { name: "tickmarkStepSize"; type: "double" } + Property { name: "tickmarkInset"; type: "double" } + Property { name: "tickmarkCount"; type: "int"; isReadonly: true } + Property { name: "minorTickmarkCount"; type: "int" } + Property { name: "minorTickmarkInset"; type: "double" } + Property { name: "labelInset"; type: "double" } + Property { name: "labelStepSize"; type: "double" } + Property { name: "labelCount"; type: "int"; isReadonly: true } + Property { name: "__protectedScope"; type: "QObject"; isPointer: true } + Property { name: "background"; type: "QQmlComponent"; isPointer: true } + Property { name: "tickmark"; type: "QQmlComponent"; isPointer: true } + Property { name: "minorTickmark"; type: "QQmlComponent"; isPointer: true } + Property { name: "tickmarkLabel"; type: "QQmlComponent"; isPointer: true } + Property { name: "needle"; type: "QQmlComponent"; isPointer: true } + Property { name: "foreground"; type: "QQmlComponent"; isPointer: true } + Property { name: "panel"; type: "QQmlComponent"; isPointer: true } + Method { + name: "valueToAngle" + type: "QVariant" + Parameter { name: "value"; type: "QVariant" } + } + } + Component { + prototype: "QQuickAbstractStyle1" + name: "QtQuick.Controls.Styles/CircularTickmarkLabelStyle 1.0" + exports: ["QtQuick.Controls.Styles/CircularTickmarkLabelStyle 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "outerRadius"; type: "double"; isReadonly: true } + Property { name: "__protectedScope"; type: "QObject"; isPointer: true } + Property { name: "tickmark"; type: "QQmlComponent"; isPointer: true } + Property { name: "minorTickmark"; type: "QQmlComponent"; isPointer: true } + Property { name: "tickmarkLabel"; type: "QQmlComponent"; isPointer: true } + Property { name: "panel"; type: "QQmlComponent"; isPointer: true } + Property { name: "control"; type: "QQuickItem"; isReadonly: true; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/ComboBox 1.0" + exports: ["QtQuick.Controls/ComboBox 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "textRole"; type: "string" } + Property { name: "editable"; type: "bool" } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Property { name: "menu"; type: "QQmlComponent"; isPointer: true } + Property { name: "selectByMouse"; type: "bool" } + Property { name: "inputMethodComposing"; type: "bool"; isReadonly: true } + Property { name: "__popup"; type: "QVariant" } + Property { name: "model"; type: "QVariant" } + Property { name: "currentIndex"; type: "int" } + Property { name: "currentText"; type: "string"; isReadonly: true } + Property { name: "editText"; type: "string" } + Property { name: "inputMethodHints"; type: "int" } + Property { name: "count"; type: "int"; isReadonly: true } + Property { name: "validator"; type: "QValidator"; isPointer: true } + Property { name: "acceptableInput"; type: "bool"; isReadonly: true } + Signal { name: "accepted" } + Signal { + name: "activated" + Parameter { name: "index"; type: "int" } + } + Method { + name: "textAt" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "find" + type: "QVariant" + Parameter { name: "text"; type: "QVariant" } + } + Method { name: "selectAll"; type: "QVariant" } + Method { name: "__selectPrevItem"; type: "QVariant" } + Method { name: "__selectNextItem"; type: "QVariant" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickAbstractStyle1" + name: "QtQuick.Controls.Styles/ComboBoxStyle 1.0" + exports: ["QtQuick.Controls.Styles/ComboBoxStyle 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "renderType"; type: "int" } + Property { name: "font"; type: "QFont" } + Property { name: "textColor"; type: "QColor" } + Property { name: "selectionColor"; type: "QColor" } + Property { name: "selectedTextColor"; type: "QColor" } + Property { name: "control"; type: "ComboBox_QMLTYPE_120"; isReadonly: true; isPointer: true } + Property { name: "dropDownButtonWidth"; type: "int" } + Property { name: "background"; type: "QQmlComponent"; isPointer: true } + Property { name: "__editor"; type: "QQmlComponent"; isPointer: true } + Property { name: "label"; type: "QQmlComponent"; isPointer: true } + Property { name: "panel"; type: "QQmlComponent"; isPointer: true } + Property { name: "__dropDownStyle"; type: "QQmlComponent"; isPointer: true } + Property { name: "__popupStyle"; type: "QQmlComponent"; isPointer: true } + Property { name: "__cursorHandle"; type: "QQmlComponent"; isPointer: true } + Property { name: "__selectionHandle"; type: "QQmlComponent"; isPointer: true } + Property { name: "__cursorDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "drowDownButtonWidth"; type: "int" } + } + Component { + prototype: "QObject" + name: "QtQuick.Controls.Styles/CommonStyleHelper 1.0" + exports: ["QtQuick.Controls.Styles/CommonStyleHelper 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + Property { name: "control"; type: "QQuickItem"; isPointer: true } + Property { name: "buttonColorUpTop"; type: "QColor" } + Property { name: "buttonColorUpBottom"; type: "QColor" } + Property { name: "buttonColorDownTop"; type: "QColor" } + Property { name: "buttonColorDownBottom"; type: "QColor" } + Property { name: "textColorUp"; type: "QColor" } + Property { name: "textColorDown"; type: "QColor" } + Property { name: "textRaisedColorUp"; type: "QColor" } + Property { name: "textRaisedColorDown"; type: "QColor" } + Property { name: "offColor"; type: "QColor" } + Property { name: "offColorShine"; type: "QColor" } + Property { name: "onColor"; type: "QColor" } + Property { name: "onColorShine"; type: "QColor" } + Property { name: "inactiveColor"; type: "QColor" } + Property { name: "inactiveColorShine"; type: "QColor" } + } + Component { + prototype: "QQuickAbstractStyle1" + name: "QtQuick.Controls.Styles/DelayButtonStyle 1.0" + exports: ["QtQuick.Controls.Styles/DelayButtonStyle 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "DelayButton_QMLTYPE_159"; isReadonly: true; isPointer: true } + Property { name: "progressBarGradient"; type: "QQuickGradient"; isPointer: true } + Property { name: "progressBarDropShadowColor"; type: "QColor" } + Property { name: "foreground"; type: "QQmlComponent"; isPointer: true } + Property { + name: "__buttonHelper" + type: "CircularButtonStyleHelper_QMLTYPE_93" + isReadonly: true + isPointer: true + } + Property { name: "background"; type: "QQmlComponent"; isPointer: true } + Property { name: "label"; type: "QQmlComponent"; isPointer: true } + Property { name: "panel"; type: "QQmlComponent"; isPointer: true } + } + Component { + prototype: "QQuickAbstractStyle1" + name: "QtQuick.Controls.Styles/DialStyle 1.1" + exports: ["QtQuick.Controls.Styles/DialStyle 1.1"] + exportMetaObjectRevisions: [1] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "Dial_QMLTYPE_165"; isReadonly: true; isPointer: true } + Property { name: "outerRadius"; type: "double"; isReadonly: true } + Property { name: "handleInset"; type: "double" } + Property { name: "tickmarkStepSize"; type: "double" } + Property { name: "tickmarkInset"; type: "double" } + Property { name: "tickmarkCount"; type: "int"; isReadonly: true } + Property { name: "minorTickmarkCount"; type: "int" } + Property { name: "minorTickmarkInset"; type: "double" } + Property { name: "labelInset"; type: "double" } + Property { name: "labelStepSize"; type: "double" } + Property { name: "labelCount"; type: "int"; isReadonly: true } + Property { name: "__tickmarkRadius"; type: "double"; isReadonly: true } + Property { name: "__handleRadius"; type: "double"; isReadonly: true } + Property { name: "__dragToSet"; type: "bool" } + Property { name: "background"; type: "QQmlComponent"; isPointer: true } + Property { name: "handle"; type: "QQmlComponent"; isPointer: true } + Property { name: "tickmark"; type: "QQmlComponent"; isPointer: true } + Property { name: "minorTickmark"; type: "QQmlComponent"; isPointer: true } + Property { name: "tickmarkLabel"; type: "QQmlComponent"; isPointer: true } + Property { name: "panel"; type: "QQmlComponent"; isPointer: true } + Method { + name: "valueToAngle" + type: "QVariant" + Parameter { name: "value"; type: "QVariant" } + } + } + Component { + prototype: "QQuickAbstractStyle1" + name: "QtQuick.Controls.Styles/GaugeStyle 1.0" + exports: ["QtQuick.Controls.Styles/GaugeStyle 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "Gauge_QMLTYPE_173"; isReadonly: true; isPointer: true } + Property { name: "valuePosition"; type: "double"; isReadonly: true } + Property { name: "background"; type: "QQmlComponent"; isPointer: true } + Property { name: "tickmark"; type: "QQmlComponent"; isPointer: true } + Property { name: "minorTickmark"; type: "QQmlComponent"; isPointer: true } + Property { name: "tickmarkLabel"; type: "QQmlComponent"; isPointer: true } + Property { name: "valueBar"; type: "QQmlComponent"; isPointer: true } + Property { name: "foreground"; type: "QQmlComponent"; isPointer: true } + Property { name: "panel"; type: "QQmlComponent"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/GroupBox 1.0" + exports: ["QtQuick.Controls/GroupBox 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "__content" + Property { name: "title"; type: "string" } + Property { name: "flat"; type: "bool" } + Property { name: "checkable"; type: "bool" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "checked"; type: "bool" } + Property { name: "__content"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "contentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "__checkbox"; type: "CheckBox_QMLTYPE_88"; isReadonly: true; isPointer: true } + Property { name: "__style"; type: "QObject"; isReadonly: true; isPointer: true } + } + Component { + prototype: "QQuickAbstractStyle1" + name: "QtQuick.Controls.Styles/HandleStyle 1.0" + exports: ["QtQuick.Controls.Styles/HandleStyle 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "handle"; type: "QQmlComponent"; isPointer: true } + Property { name: "panel"; type: "QQmlComponent"; isPointer: true } + Property { name: "handleColorTop"; type: "QColor" } + Property { name: "handleColorBottom"; type: "QColor" } + Property { name: "handleColorBottomStop"; type: "double" } + Property { name: "control"; type: "QQuickItem"; isReadonly: true; isPointer: true } + } + Component { + prototype: "QObject" + name: "QtQuick.Controls.Styles/HandleStyleHelper 1.0" + exports: ["QtQuick.Controls.Styles/HandleStyleHelper 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + Property { name: "handleColorTop"; type: "QColor" } + Property { name: "handleColorBottom"; type: "QColor" } + Property { name: "handleColorBottomStop"; type: "double" } + Property { name: "handleRingColorTop"; type: "QColor" } + Property { name: "handleRingColorBottom"; type: "QColor" } + Method { + name: "paintHandle" + type: "QVariant" + Parameter { name: "ctx"; type: "QVariant" } + Parameter { name: "handleX"; type: "QVariant" } + Parameter { name: "handleY"; type: "QVariant" } + Parameter { name: "handleWidth"; type: "QVariant" } + Parameter { name: "handleHeight"; type: "QVariant" } + } + } + Component { + prototype: "QQuickText" + name: "QtQuick.Controls/Label 1.0" + exports: ["QtQuick.Controls/Label 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + } + Component { + prototype: "QQuickMenu1" + name: "QtQuick.Controls/Menu 1.0" + exports: ["QtQuick.Controls/Menu 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "items" + Property { name: "__selfComponent"; type: "QQmlComponent"; isPointer: true } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__usingDefaultStyle"; type: "bool" } + Property { name: "__parentContentItem"; type: "QVariant" } + Property { name: "__currentIndex"; type: "int" } + Method { + name: "addMenu" + type: "QVariant" + Parameter { name: "title"; type: "QVariant" } + } + Method { + name: "insertMenu" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + Parameter { name: "title"; type: "QVariant" } + } + } + Component { + prototype: "QQuickMenuBar1" + name: "QtQuick.Controls/MenuBar 1.0" + exports: ["QtQuick.Controls/MenuBar 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "menus" + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__menuBarComponent"; type: "QQmlComponent"; isPointer: true } + } + Component { + prototype: "QQuickAbstractStyle1" + name: "QtQuick.Controls.Styles/MenuBarStyle 1.2" + exports: ["QtQuick.Controls.Styles/MenuBarStyle 1.2"] + exportMetaObjectRevisions: [2] + isComposite: true + defaultProperty: "data" + Property { name: "background"; type: "QQmlComponent"; isPointer: true } + Property { name: "itemDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "menuStyle"; type: "QQmlComponent"; isPointer: true } + Property { name: "font"; type: "QFont" } + Property { name: "__isNative"; type: "bool" } + Method { + name: "formatMnemonic" + type: "QVariant" + Parameter { name: "text"; type: "QVariant" } + Parameter { name: "underline"; type: "QVariant" } + } + Property { name: "control"; type: "QQuickItem"; isReadonly: true; isPointer: true } + } + Component { + prototype: "QQuickAbstractStyle1" + name: "QtQuick.Controls.Styles/MenuStyle 1.2" + exports: ["QtQuick.Controls.Styles/MenuStyle 1.2"] + exportMetaObjectRevisions: [2] + isComposite: true + defaultProperty: "data" + Property { name: "submenuOverlap"; type: "int" } + Property { name: "submenuPopupDelay"; type: "int" } + Property { name: "frame"; type: "QQmlComponent"; isPointer: true } + Property { name: "separator"; type: "QQmlComponent"; isPointer: true } + Property { name: "scrollIndicator"; type: "QQmlComponent"; isPointer: true } + Property { name: "font"; type: "QFont" } + Property { name: "__menuItemType"; type: "string" } + Property { name: "__backgroundColor"; type: "QColor" } + Property { name: "__borderColor"; type: "QColor" } + Property { name: "__maxPopupHeight"; type: "int" } + Property { name: "__selectedBackgroundColor"; type: "QColor" } + Property { name: "__labelColor"; type: "QColor" } + Property { name: "__selectedLabelColor"; type: "QColor" } + Property { name: "__disabledLabelColor"; type: "QColor" } + Property { name: "__mirrored"; type: "bool"; isReadonly: true } + Property { name: "__leftLabelMargin"; type: "int" } + Property { name: "__rightLabelMargin"; type: "int" } + Property { name: "__minRightLabelSpacing"; type: "int" } + Property { name: "__scrollerStyle"; type: "QQmlComponent"; isPointer: true } + Property { name: "menuItemPanel"; type: "QQmlComponent"; isPointer: true } + Property { + name: "itemDelegate" + type: "MenuItemSubControls_QMLTYPE_125" + isReadonly: true + isPointer: true + } + Method { + name: "formatMnemonic" + type: "QVariant" + Parameter { name: "text"; type: "QVariant" } + Parameter { name: "underline"; type: "QVariant" } + } + Property { name: "control"; type: "QQuickItem"; isReadonly: true; isPointer: true } + } + Component { + prototype: "QQuickAbstractStyle1" + name: "QtQuick.Controls.Styles/PieMenuStyle 1.3" + exports: ["QtQuick.Controls.Styles/PieMenuStyle 1.3"] + exportMetaObjectRevisions: [3] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "PieMenu_QMLTYPE_192"; isReadonly: true; isPointer: true } + Property { name: "backgroundColor"; type: "QColor" } + Property { name: "selectionColor"; type: "QColor" } + Property { name: "shadowColor"; type: "QColor" } + Property { name: "shadowRadius"; type: "double" } + Property { name: "shadowSpread"; type: "double" } + Property { name: "radius"; type: "double"; isReadonly: true } + Property { name: "cancelRadius"; type: "double" } + Property { name: "startAngle"; type: "double" } + Property { name: "endAngle"; type: "double" } + Property { name: "__iconOffset"; type: "double"; isReadonly: true } + Property { name: "__selectableRadius"; type: "double"; isReadonly: true } + Property { name: "__implicitWidth"; type: "int" } + Property { name: "__implicitHeight"; type: "int" } + Property { name: "background"; type: "QQmlComponent"; isPointer: true } + Property { name: "cancel"; type: "QQmlComponent"; isPointer: true } + Property { name: "title"; type: "QQmlComponent"; isPointer: true } + Property { name: "menuItem"; type: "QQmlComponent"; isPointer: true } + Property { name: "panel"; type: "QQmlComponent"; isPointer: true } + Method { + name: "sectionStartAngle" + type: "QVariant" + Parameter { name: "itemIndex"; type: "QVariant" } + } + Method { + name: "sectionCenterAngle" + type: "QVariant" + Parameter { name: "itemIndex"; type: "QVariant" } + } + Method { + name: "sectionEndAngle" + type: "QVariant" + Parameter { name: "itemIndex"; type: "QVariant" } + } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/ProgressBar 1.0" + exports: ["QtQuick.Controls/ProgressBar 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "value"; type: "double" } + Property { name: "minimumValue"; type: "double" } + Property { name: "maximumValue"; type: "double" } + Property { name: "indeterminate"; type: "bool" } + Property { name: "orientation"; type: "int" } + Property { name: "__initialized"; type: "bool" } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Method { + name: "setValue" + type: "QVariant" + Parameter { name: "v"; type: "QVariant" } + } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickAbstractStyle1" + name: "QtQuick.Controls.Styles/ProgressBarStyle 1.0" + exports: ["QtQuick.Controls.Styles/ProgressBarStyle 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "ProgressBar_QMLTYPE_207"; isReadonly: true; isPointer: true } + Property { name: "currentProgress"; type: "double"; isReadonly: true } + Property { name: "progress"; type: "QQmlComponent"; isPointer: true } + Property { name: "background"; type: "QQmlComponent"; isPointer: true } + Property { name: "panel"; type: "QQmlComponent"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/RadioButton 1.0" + exports: ["QtQuick.Controls/RadioButton 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "checked"; type: "bool" } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "exclusiveGroup"; type: "QQuickExclusiveGroup1"; isPointer: true } + Property { name: "text"; type: "string" } + Property { name: "tooltip"; type: "string" } + Property { name: "__cycleStatesHandler"; type: "QVariant" } + Property { name: "pressed"; type: "bool" } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Signal { name: "clicked" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickAbstractStyle1" + name: "QtQuick.Controls.Styles/RadioButtonStyle 1.0" + exports: ["QtQuick.Controls.Styles/RadioButtonStyle 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "RadioButton_QMLTYPE_214"; isReadonly: true; isPointer: true } + Property { name: "label"; type: "QQmlComponent"; isPointer: true } + Property { name: "background"; type: "QQmlComponent"; isPointer: true } + Property { name: "spacing"; type: "int" } + Property { name: "indicator"; type: "QQmlComponent"; isPointer: true } + Property { name: "panel"; type: "QQmlComponent"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/ScrollView 1.0" + exports: ["QtQuick.Controls/ScrollView 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "contentItem" + Property { name: "frameVisible"; type: "bool" } + Property { name: "highlightOnFocus"; type: "bool" } + Property { name: "contentItem"; type: "QQuickItem"; isPointer: true } + Property { name: "__scrollBarTopMargin"; type: "int" } + Property { name: "__viewTopMargin"; type: "int" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "Style_QMLTYPE_3"; isPointer: true } + Property { name: "horizontalScrollBarPolicy"; type: "int" } + Property { name: "verticalScrollBarPolicy"; type: "int" } + Property { name: "viewport"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "flickableItem"; type: "QQuickFlickable"; isReadonly: true; isPointer: true } + Property { + name: "__scroller" + type: "ScrollViewHelper_QMLTYPE_32" + isReadonly: true + isPointer: true + } + Property { name: "__verticalScrollbarOffset"; type: "int" } + Property { name: "__wheelAreaScrollSpeed"; type: "double" } + Property { + name: "__horizontalScrollBar" + type: "ScrollBar_QMLTYPE_28" + isReadonly: true + isPointer: true + } + Property { + name: "__verticalScrollBar" + type: "ScrollBar_QMLTYPE_28" + isReadonly: true + isPointer: true + } + } + Component { + prototype: "QQuickAbstractStyle1" + name: "QtQuick.Controls.Styles/ScrollViewStyle 1.0" + exports: ["QtQuick.Controls.Styles/ScrollViewStyle 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "ScrollView_QMLTYPE_37"; isReadonly: true; isPointer: true } + Property { name: "corner"; type: "QQmlComponent"; isPointer: true } + Property { name: "scrollToClickedPosition"; type: "bool" } + Property { name: "transientScrollBars"; type: "bool" } + Property { name: "frame"; type: "QQmlComponent"; isPointer: true } + Property { name: "minimumHandleLength"; type: "int" } + Property { name: "handleOverlap"; type: "int" } + Property { name: "scrollBarBackground"; type: "QQmlComponent"; isPointer: true } + Property { name: "handle"; type: "QQmlComponent"; isPointer: true } + Property { name: "incrementControl"; type: "QQmlComponent"; isPointer: true } + Property { name: "decrementControl"; type: "QQmlComponent"; isPointer: true } + Property { name: "__scrollbar"; type: "QQmlComponent"; isPointer: true } + Property { name: "__externalScrollBars"; type: "bool" } + Property { name: "__scrollBarSpacing"; type: "int" } + Property { name: "__scrollBarFadeDelay"; type: "int" } + Property { name: "__scrollBarFadeDuration"; type: "int" } + Property { name: "__stickyScrollbars"; type: "bool" } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/Slider 1.0" + exports: ["QtQuick.Controls/Slider 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "orientation"; type: "int" } + Property { name: "updateValueWhileDragging"; type: "bool" } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "tickmarksEnabled"; type: "bool" } + Property { name: "__horizontal"; type: "bool" } + Property { name: "__handlePos"; type: "double" } + Property { name: "minimumValue"; type: "double" } + Property { name: "maximumValue"; type: "double" } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Property { name: "stepSize"; type: "double" } + Property { name: "value"; type: "double" } + Property { name: "wheelEnabled"; type: "bool" } + Method { name: "accessibleIncreaseAction"; type: "QVariant" } + Method { name: "accessibleDecreaseAction"; type: "QVariant" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/Slider 1.6" + exports: ["QtQuick.Controls/Slider 1.6"] + exportMetaObjectRevisions: [6] + isComposite: true + defaultProperty: "data" + Property { name: "orientation"; type: "int" } + Property { name: "updateValueWhileDragging"; type: "bool" } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "tickmarksEnabled"; type: "bool" } + Property { name: "__horizontal"; type: "bool" } + Property { name: "__handlePos"; type: "double" } + Property { name: "minimumValue"; type: "double" } + Property { name: "maximumValue"; type: "double" } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Property { name: "stepSize"; type: "double" } + Property { name: "value"; type: "double" } + Property { name: "wheelEnabled"; type: "bool" } + Method { name: "accessibleIncreaseAction"; type: "QVariant" } + Method { name: "accessibleDecreaseAction"; type: "QVariant" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickAbstractStyle1" + name: "QtQuick.Controls.Styles/SliderStyle 1.0" + exports: ["QtQuick.Controls.Styles/SliderStyle 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "Slider_QMLTYPE_218"; isReadonly: true; isPointer: true } + Property { name: "handle"; type: "QQmlComponent"; isPointer: true } + Property { name: "groove"; type: "QQmlComponent"; isPointer: true } + Property { name: "tickmarks"; type: "QQmlComponent"; isPointer: true } + Property { name: "panel"; type: "QQmlComponent"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/SpinBox 1.0" + exports: ["QtQuick.Controls/SpinBox 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "horizontalAlignment"; type: "int" } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Property { name: "selectByMouse"; type: "bool" } + Property { name: "inputMethodComposing"; type: "bool"; isReadonly: true } + Property { name: "menu"; type: "QQmlComponent"; isPointer: true } + Property { name: "value"; type: "double" } + Property { name: "minimumValue"; type: "double" } + Property { name: "maximumValue"; type: "double" } + Property { name: "stepSize"; type: "double" } + Property { name: "suffix"; type: "string" } + Property { name: "prefix"; type: "string" } + Property { name: "decimals"; type: "int" } + Property { name: "font"; type: "QFont" } + Property { name: "cursorPosition"; type: "int" } + Property { name: "__text"; type: "string" } + Property { name: "__baselineOffset"; type: "double" } + Signal { name: "editingFinished" } + Method { name: "__increment"; type: "QVariant" } + Method { name: "__decrement"; type: "QVariant" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickAbstractStyle1" + name: "QtQuick.Controls.Styles/SpinBoxStyle 1.1" + exports: ["QtQuick.Controls.Styles/SpinBoxStyle 1.1"] + exportMetaObjectRevisions: [1] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "SpinBox_QMLTYPE_238"; isReadonly: true; isPointer: true } + Property { name: "horizontalAlignment"; type: "int" } + Property { name: "textColor"; type: "QColor" } + Property { name: "selectionColor"; type: "QColor" } + Property { name: "selectedTextColor"; type: "QColor" } + Property { name: "renderType"; type: "int" } + Property { name: "font"; type: "QFont" } + Property { name: "incrementControl"; type: "QQmlComponent"; isPointer: true } + Property { name: "decrementControl"; type: "QQmlComponent"; isPointer: true } + Property { name: "background"; type: "QQmlComponent"; isPointer: true } + Property { name: "panel"; type: "QQmlComponent"; isPointer: true } + Property { name: "__cursorHandle"; type: "QQmlComponent"; isPointer: true } + Property { name: "__selectionHandle"; type: "QQmlComponent"; isPointer: true } + Property { name: "__cursorDelegate"; type: "QQmlComponent"; isPointer: true } + } + Component { + prototype: "QQuickItem" + name: "QtQuick.Controls/SplitView 1.0" + exports: ["QtQuick.Controls/SplitView 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "__contents" + Property { name: "orientation"; type: "int" } + Property { name: "handleDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "resizing"; type: "bool" } + Property { name: "__contents"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "__items"; type: "QQuickItem"; isList: true; isReadonly: true } + Property { name: "__handles"; type: "QQuickItem"; isList: true; isReadonly: true } + Method { + name: "addItem" + type: "QVariant" + Parameter { name: "item"; type: "QVariant" } + } + Method { + name: "removeItem" + type: "QVariant" + Parameter { name: "item"; type: "QVariant" } + } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/StackView 1.0" + exports: ["QtQuick.Controls/StackView 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "initialItem"; type: "QVariant" } + Property { name: "busy"; type: "bool"; isReadonly: true } + Property { name: "delegate"; type: "StackViewDelegate_QMLTYPE_252"; isPointer: true } + Property { name: "__currentItem"; type: "QQuickItem"; isPointer: true } + Property { name: "__depth"; type: "int" } + Property { name: "__currentTransition"; type: "QVariant" } + Property { name: "__guard"; type: "bool" } + Property { name: "invalidItemReplacement"; type: "QQmlComponent"; isPointer: true } + Property { name: "depth"; type: "int"; isReadonly: true } + Property { name: "currentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Method { + name: "push" + type: "QVariant" + Parameter { name: "item"; type: "QVariant" } + } + Method { + name: "pop" + type: "QVariant" + Parameter { name: "item"; type: "QVariant" } + } + Method { name: "clear"; type: "QVariant" } + Method { + name: "find" + type: "QVariant" + Parameter { name: "func"; type: "QVariant" } + Parameter { name: "onlySearchLoadedItems"; type: "QVariant" } + } + Method { + name: "get" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + Parameter { name: "dontLoad"; type: "QVariant" } + } + Method { name: "completeTransition"; type: "QVariant" } + Method { + name: "replace" + type: "QVariant" + Parameter { name: "item"; type: "QVariant" } + Parameter { name: "properties"; type: "QVariant" } + Parameter { name: "immediate"; type: "QVariant" } + } + Method { + name: "__recursionGuard" + type: "QVariant" + Parameter { name: "use"; type: "QVariant" } + } + Method { + name: "__loadElement" + type: "QVariant" + Parameter { name: "element"; type: "QVariant" } + } + Method { + name: "__resolveComponent" + type: "QVariant" + Parameter { name: "unknownObjectType"; type: "QVariant" } + Parameter { name: "element"; type: "QVariant" } + } + Method { + name: "__cleanup" + type: "QVariant" + Parameter { name: "element"; type: "QVariant" } + } + Method { + name: "__setStatus" + type: "QVariant" + Parameter { name: "item"; type: "QVariant" } + Parameter { name: "status"; type: "QVariant" } + } + Method { + name: "__performTransition" + type: "QVariant" + Parameter { name: "transition"; type: "QVariant" } + } + Method { name: "animationFinished"; type: "QVariant" } + } + Component { + prototype: "QObject" + name: "QtQuick.Controls/StackViewDelegate 1.0" + exports: ["QtQuick.Controls/StackViewDelegate 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + Property { name: "pushTransition"; type: "QQmlComponent"; isPointer: true } + Property { name: "popTransition"; type: "QQmlComponent"; isPointer: true } + Property { name: "replaceTransition"; type: "QQmlComponent"; isPointer: true } + Method { + name: "getTransition" + type: "QVariant" + Parameter { name: "properties"; type: "QVariant" } + } + Method { + name: "transitionFinished" + type: "QVariant" + Parameter { name: "properties"; type: "QVariant" } + } + } + Component { + prototype: "QQuickParallelAnimation" + name: "QtQuick.Controls/StackViewTransition 1.0" + exports: ["QtQuick.Controls/StackViewTransition 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "animations" + Property { name: "name"; type: "string" } + Property { name: "enterItem"; type: "QQuickItem"; isPointer: true } + Property { name: "exitItem"; type: "QQuickItem"; isPointer: true } + Property { name: "immediate"; type: "bool" } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/StatusBar 1.0" + exports: ["QtQuick.Controls/StatusBar 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "__content" + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "__style"; type: "QObject"; isReadonly: true; isPointer: true } + Property { name: "__content"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "contentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + } + Component { + prototype: "QQuickAbstractStyle1" + name: "QtQuick.Controls.Styles/StatusBarStyle 1.0" + exports: ["QtQuick.Controls.Styles/StatusBarStyle 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "background"; type: "QQmlComponent"; isPointer: true } + Property { name: "panel"; type: "QQmlComponent"; isPointer: true } + Property { name: "control"; type: "QQuickItem"; isReadonly: true; isPointer: true } + } + Component { + prototype: "QQuickAbstractStyle1" + name: "QtQuick.Controls.Styles/StatusIndicatorStyle 1.1" + exports: ["QtQuick.Controls.Styles/StatusIndicatorStyle 1.1"] + exportMetaObjectRevisions: [1] + isComposite: true + defaultProperty: "data" + Property { + name: "control" + type: "StatusIndicator_QMLTYPE_261" + isReadonly: true + isPointer: true + } + Property { name: "color"; type: "QColor" } + Property { name: "indicator"; type: "QQmlComponent"; isPointer: true } + Property { name: "panel"; type: "QQmlComponent"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/Switch 1.1" + exports: ["QtQuick.Controls/Switch 1.1"] + exportMetaObjectRevisions: [1] + isComposite: true + defaultProperty: "data" + Property { name: "checked"; type: "bool" } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "exclusiveGroup"; type: "QQuickExclusiveGroup1"; isPointer: true } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Signal { name: "clicked" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickAbstractStyle1" + name: "QtQuick.Controls.Styles/SwitchStyle 1.1" + exports: ["QtQuick.Controls.Styles/SwitchStyle 1.1"] + exportMetaObjectRevisions: [1] + isComposite: true + defaultProperty: "data" + Property { name: "handle"; type: "QQmlComponent"; isPointer: true } + Property { name: "groove"; type: "QQmlComponent"; isPointer: true } + Property { name: "panel"; type: "QQmlComponent"; isPointer: true } + Property { name: "control"; type: "QQuickItem"; isReadonly: true; isPointer: true } + } + Component { + prototype: "QQuickLoader" + name: "QtQuick.Controls/Tab 1.0" + exports: ["QtQuick.Controls/Tab 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "component" + Property { name: "title"; type: "string" } + Property { name: "__inserted"; type: "bool" } + Property { name: "component"; type: "QQmlComponent"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/TabView 1.0" + exports: ["QtQuick.Controls/TabView 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "currentIndex"; type: "int" } + Property { name: "count"; type: "int"; isReadonly: true } + Property { name: "frameVisible"; type: "bool" } + Property { name: "tabsVisible"; type: "bool" } + Property { name: "tabPosition"; type: "int" } + Property { name: "__tabs"; type: "QQmlListModel"; isPointer: true } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__styleItem"; type: "QVariant" } + Property { name: "contentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } + Method { + name: "addTab" + type: "QVariant" + Parameter { name: "title"; type: "QVariant" } + Parameter { name: "component"; type: "QVariant" } + } + Method { + name: "insertTab" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + Parameter { name: "title"; type: "QVariant" } + Parameter { name: "component"; type: "QVariant" } + } + Method { + name: "removeTab" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "moveTab" + type: "QVariant" + Parameter { name: "from"; type: "QVariant" } + Parameter { name: "to"; type: "QVariant" } + } + Method { + name: "getTab" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "__willRemoveIndex" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "__didInsertIndex" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { name: "__setOpacities"; type: "QVariant" } + } + Component { + prototype: "QQuickAbstractStyle1" + name: "QtQuick.Controls.Styles/TabViewStyle 1.0" + exports: ["QtQuick.Controls.Styles/TabViewStyle 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "TabView_QMLTYPE_280"; isReadonly: true; isPointer: true } + Property { name: "tabsMovable"; type: "bool" } + Property { name: "tabsAlignment"; type: "int" } + Property { name: "tabOverlap"; type: "int" } + Property { name: "frameOverlap"; type: "int" } + Property { name: "frame"; type: "QQmlComponent"; isPointer: true } + Property { name: "tab"; type: "QQmlComponent"; isPointer: true } + Property { name: "leftCorner"; type: "QQmlComponent"; isPointer: true } + Property { name: "rightCorner"; type: "QQmlComponent"; isPointer: true } + Property { name: "tabBar"; type: "QQmlComponent"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/TableView 1.0" + exports: ["QtQuick.Controls/TableView 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "__columns" + Property { name: "model"; type: "QVariant" } + Property { name: "rowCount"; type: "int"; isReadonly: true } + Property { name: "currentRow"; type: "int" } + Property { + name: "selection" + type: "TableViewSelection_QMLTYPE_308" + isReadonly: true + isPointer: true + } + Signal { + name: "activated" + Parameter { name: "row"; type: "int" } + } + Signal { + name: "clicked" + Parameter { name: "row"; type: "int" } + } + Signal { + name: "doubleClicked" + Parameter { name: "row"; type: "int" } + } + Signal { + name: "pressAndHold" + Parameter { name: "row"; type: "int" } + } + Method { + name: "positionViewAtRow" + type: "QVariant" + Parameter { name: "row"; type: "QVariant" } + Parameter { name: "mode"; type: "QVariant" } + } + Method { + name: "rowAt" + type: "QVariant" + Parameter { name: "x"; type: "QVariant" } + Parameter { name: "y"; type: "QVariant" } + } + Property { name: "alternatingRowColors"; type: "bool" } + Property { name: "headerVisible"; type: "bool" } + Property { name: "itemDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "rowDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "headerDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "sortIndicatorColumn"; type: "int" } + Property { name: "sortIndicatorVisible"; type: "bool" } + Property { name: "sortIndicatorOrder"; type: "int" } + Property { name: "selectionMode"; type: "int" } + Property { name: "__viewTypeName"; type: "string" } + Property { name: "__isTreeView"; type: "bool"; isReadonly: true } + Property { name: "__itemDelegateLoader"; type: "QQmlComponent"; isPointer: true } + Property { name: "__model"; type: "QVariant" } + Property { name: "__activateItemOnSingleClick"; type: "bool" } + Property { name: "__mouseArea"; type: "QQuickItem"; isPointer: true } + Property { name: "backgroundVisible"; type: "bool" } + Property { name: "contentHeader"; type: "QQmlComponent"; isPointer: true } + Property { name: "contentFooter"; type: "QQmlComponent"; isPointer: true } + Property { name: "columnCount"; type: "int"; isReadonly: true } + Property { name: "section"; type: "QQuickViewSection"; isReadonly: true; isPointer: true } + Property { name: "__columns"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "__currentRowItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "__currentRow"; type: "int" } + Property { name: "__listView"; type: "QQuickListView"; isReadonly: true; isPointer: true } + Method { + name: "addColumn" + type: "QVariant" + Parameter { name: "column"; type: "QVariant" } + } + Method { + name: "insertColumn" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + Parameter { name: "column"; type: "QVariant" } + } + Method { + name: "removeColumn" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "moveColumn" + type: "QVariant" + Parameter { name: "from"; type: "QVariant" } + Parameter { name: "to"; type: "QVariant" } + } + Method { + name: "getColumn" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { name: "resizeColumnsToContents"; type: "QVariant" } + Property { name: "frameVisible"; type: "bool" } + Property { name: "highlightOnFocus"; type: "bool" } + Property { name: "contentItem"; type: "QQuickItem"; isPointer: true } + Property { name: "__scrollBarTopMargin"; type: "int" } + Property { name: "__viewTopMargin"; type: "int" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "Style_QMLTYPE_3"; isPointer: true } + Property { name: "horizontalScrollBarPolicy"; type: "int" } + Property { name: "verticalScrollBarPolicy"; type: "int" } + Property { name: "viewport"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "flickableItem"; type: "QQuickFlickable"; isReadonly: true; isPointer: true } + Property { + name: "__scroller" + type: "ScrollViewHelper_QMLTYPE_32" + isReadonly: true + isPointer: true + } + Property { name: "__verticalScrollbarOffset"; type: "int" } + Property { name: "__wheelAreaScrollSpeed"; type: "double" } + Property { + name: "__horizontalScrollBar" + type: "ScrollBar_QMLTYPE_28" + isReadonly: true + isPointer: true + } + Property { + name: "__verticalScrollBar" + type: "ScrollBar_QMLTYPE_28" + isReadonly: true + isPointer: true + } + } + Component { + prototype: "QObject" + name: "QtQuick.Controls/TableViewColumn 1.0" + exports: ["QtQuick.Controls/TableViewColumn 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + Property { name: "__view"; type: "QQuickItem"; isPointer: true } + Property { name: "__index"; type: "int" } + Property { name: "title"; type: "string" } + Property { name: "role"; type: "string" } + Property { name: "width"; type: "int" } + Property { name: "visible"; type: "bool" } + Property { name: "resizable"; type: "bool" } + Property { name: "movable"; type: "bool" } + Property { name: "elideMode"; type: "int" } + Property { name: "horizontalAlignment"; type: "int" } + Property { name: "delegate"; type: "QQmlComponent"; isPointer: true } + Method { name: "resizeToContents"; type: "QVariant" } + } + Component { + prototype: "QQuickAbstractStyle1" + name: "QtQuick.Controls.Styles/TableViewStyle 1.0" + exports: ["QtQuick.Controls.Styles/TableViewStyle 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "TableView_QMLTYPE_312"; isReadonly: true; isPointer: true } + Property { name: "textColor"; type: "QColor" } + Property { name: "backgroundColor"; type: "QColor" } + Property { name: "alternateBackgroundColor"; type: "QColor" } + Property { name: "highlightedTextColor"; type: "QColor" } + Property { name: "activateItemOnSingleClick"; type: "bool" } + Property { name: "headerDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "rowDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "itemDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "__branchDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "__indentation"; type: "int" } + Property { name: "corner"; type: "QQmlComponent"; isPointer: true } + Property { name: "scrollToClickedPosition"; type: "bool" } + Property { name: "transientScrollBars"; type: "bool" } + Property { name: "frame"; type: "QQmlComponent"; isPointer: true } + Property { name: "minimumHandleLength"; type: "int" } + Property { name: "handleOverlap"; type: "int" } + Property { name: "scrollBarBackground"; type: "QQmlComponent"; isPointer: true } + Property { name: "handle"; type: "QQmlComponent"; isPointer: true } + Property { name: "incrementControl"; type: "QQmlComponent"; isPointer: true } + Property { name: "decrementControl"; type: "QQmlComponent"; isPointer: true } + Property { name: "__scrollbar"; type: "QQmlComponent"; isPointer: true } + Property { name: "__externalScrollBars"; type: "bool" } + Property { name: "__scrollBarSpacing"; type: "int" } + Property { name: "__scrollBarFadeDelay"; type: "int" } + Property { name: "__scrollBarFadeDuration"; type: "int" } + Property { name: "__stickyScrollbars"; type: "bool" } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/TextArea 1.0" + exports: ["QtQuick.Controls/TextArea 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "inputMethodComposing"; type: "bool"; isReadonly: true } + Property { name: "tabChangesFocus"; type: "bool" } + Property { name: "selectByMouse"; type: "bool" } + Property { name: "menu"; type: "QQmlComponent"; isPointer: true } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "baseUrl"; type: "QUrl" } + Property { name: "canPaste"; type: "bool"; isReadonly: true } + Property { name: "canRedo"; type: "bool"; isReadonly: true } + Property { name: "canUndo"; type: "bool"; isReadonly: true } + Property { name: "textColor"; type: "QColor" } + Property { name: "cursorPosition"; type: "int" } + Property { name: "cursorRectangle"; type: "QRectF"; isReadonly: true } + Property { name: "font"; type: "QFont" } + Property { name: "horizontalAlignment"; type: "int" } + Property { name: "effectiveHorizontalAlignment"; type: "int"; isReadonly: true } + Property { name: "verticalAlignment"; type: "int" } + Property { name: "inputMethodHints"; type: "int" } + Property { name: "length"; type: "int"; isReadonly: true } + Property { name: "lineCount"; type: "int"; isReadonly: true } + Property { name: "readOnly"; type: "bool" } + Property { name: "selectedText"; type: "string"; isReadonly: true } + Property { name: "selectionEnd"; type: "int"; isReadonly: true } + Property { name: "selectionStart"; type: "int"; isReadonly: true } + Property { name: "text"; type: "string" } + Property { name: "textFormat"; type: "int" } + Property { name: "wrapMode"; type: "int" } + Property { name: "selectByKeyboard"; type: "bool" } + Property { name: "hoveredLink"; type: "string"; isReadonly: true } + Property { name: "backgroundVisible"; type: "bool" } + Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "textMargin"; type: "double" } + Property { name: "contentWidth"; type: "double"; isReadonly: true } + Property { name: "contentHeight"; type: "double"; isReadonly: true } + Property { name: "textDocument"; type: "QQuickTextDocument"; isReadonly: true; isPointer: true } + Signal { + name: "linkActivated" + Parameter { name: "link"; type: "string" } + } + Signal { + name: "linkHovered" + Parameter { name: "link"; type: "string" } + } + Signal { name: "editingFinished" } + Method { + name: "append" + type: "QVariant" + Parameter { name: "string"; type: "QVariant" } + } + Method { name: "copy"; type: "QVariant" } + Method { name: "cut"; type: "QVariant" } + Method { name: "deselect"; type: "QVariant" } + Method { + name: "getFormattedText" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { + name: "getText" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { + name: "insert" + type: "QVariant" + Parameter { name: "position"; type: "QVariant" } + Parameter { name: "text"; type: "QVariant" } + } + Method { + name: "isRightToLeft" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { + name: "moveCursorSelection" + type: "QVariant" + Parameter { name: "position"; type: "QVariant" } + Parameter { name: "mode"; type: "QVariant" } + } + Method { name: "paste"; type: "QVariant" } + Method { + name: "positionAt" + type: "QVariant" + Parameter { name: "x"; type: "QVariant" } + Parameter { name: "y"; type: "QVariant" } + } + Method { + name: "positionToRectangle" + type: "QVariant" + Parameter { name: "position"; type: "QVariant" } + } + Method { name: "redo"; type: "QVariant" } + Method { + name: "remove" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { + name: "select" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { name: "selectAll"; type: "QVariant" } + Method { name: "selectWord"; type: "QVariant" } + Method { name: "undo"; type: "QVariant" } + Property { name: "frameVisible"; type: "bool" } + Property { name: "highlightOnFocus"; type: "bool" } + Property { name: "contentItem"; type: "QQuickItem"; isPointer: true } + Property { name: "__scrollBarTopMargin"; type: "int" } + Property { name: "__viewTopMargin"; type: "int" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "Style_QMLTYPE_3"; isPointer: true } + Property { name: "horizontalScrollBarPolicy"; type: "int" } + Property { name: "verticalScrollBarPolicy"; type: "int" } + Property { name: "viewport"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "flickableItem"; type: "QQuickFlickable"; isReadonly: true; isPointer: true } + Property { + name: "__scroller" + type: "ScrollViewHelper_QMLTYPE_32" + isReadonly: true + isPointer: true + } + Property { name: "__verticalScrollbarOffset"; type: "int" } + Property { name: "__wheelAreaScrollSpeed"; type: "double" } + Property { + name: "__horizontalScrollBar" + type: "ScrollBar_QMLTYPE_28" + isReadonly: true + isPointer: true + } + Property { + name: "__verticalScrollBar" + type: "ScrollBar_QMLTYPE_28" + isReadonly: true + isPointer: true + } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/TextArea 1.3" + exports: ["QtQuick.Controls/TextArea 1.3"] + exportMetaObjectRevisions: [3] + isComposite: true + defaultProperty: "data" + Property { name: "inputMethodComposing"; type: "bool"; isReadonly: true } + Property { name: "tabChangesFocus"; type: "bool" } + Property { name: "selectByMouse"; type: "bool" } + Property { name: "menu"; type: "QQmlComponent"; isPointer: true } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "baseUrl"; type: "QUrl" } + Property { name: "canPaste"; type: "bool"; isReadonly: true } + Property { name: "canRedo"; type: "bool"; isReadonly: true } + Property { name: "canUndo"; type: "bool"; isReadonly: true } + Property { name: "textColor"; type: "QColor" } + Property { name: "cursorPosition"; type: "int" } + Property { name: "cursorRectangle"; type: "QRectF"; isReadonly: true } + Property { name: "font"; type: "QFont" } + Property { name: "horizontalAlignment"; type: "int" } + Property { name: "effectiveHorizontalAlignment"; type: "int"; isReadonly: true } + Property { name: "verticalAlignment"; type: "int" } + Property { name: "inputMethodHints"; type: "int" } + Property { name: "length"; type: "int"; isReadonly: true } + Property { name: "lineCount"; type: "int"; isReadonly: true } + Property { name: "readOnly"; type: "bool" } + Property { name: "selectedText"; type: "string"; isReadonly: true } + Property { name: "selectionEnd"; type: "int"; isReadonly: true } + Property { name: "selectionStart"; type: "int"; isReadonly: true } + Property { name: "text"; type: "string" } + Property { name: "textFormat"; type: "int" } + Property { name: "wrapMode"; type: "int" } + Property { name: "selectByKeyboard"; type: "bool" } + Property { name: "hoveredLink"; type: "string"; isReadonly: true } + Property { name: "backgroundVisible"; type: "bool" } + Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "textMargin"; type: "double" } + Property { name: "contentWidth"; type: "double"; isReadonly: true } + Property { name: "contentHeight"; type: "double"; isReadonly: true } + Property { name: "textDocument"; type: "QQuickTextDocument"; isReadonly: true; isPointer: true } + Signal { + name: "linkActivated" + Parameter { name: "link"; type: "string" } + } + Signal { + name: "linkHovered" + Parameter { name: "link"; type: "string" } + } + Signal { name: "editingFinished" } + Method { + name: "append" + type: "QVariant" + Parameter { name: "string"; type: "QVariant" } + } + Method { name: "copy"; type: "QVariant" } + Method { name: "cut"; type: "QVariant" } + Method { name: "deselect"; type: "QVariant" } + Method { + name: "getFormattedText" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { + name: "getText" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { + name: "insert" + type: "QVariant" + Parameter { name: "position"; type: "QVariant" } + Parameter { name: "text"; type: "QVariant" } + } + Method { + name: "isRightToLeft" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { + name: "moveCursorSelection" + type: "QVariant" + Parameter { name: "position"; type: "QVariant" } + Parameter { name: "mode"; type: "QVariant" } + } + Method { name: "paste"; type: "QVariant" } + Method { + name: "positionAt" + type: "QVariant" + Parameter { name: "x"; type: "QVariant" } + Parameter { name: "y"; type: "QVariant" } + } + Method { + name: "positionToRectangle" + type: "QVariant" + Parameter { name: "position"; type: "QVariant" } + } + Method { name: "redo"; type: "QVariant" } + Method { + name: "remove" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { + name: "select" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { name: "selectAll"; type: "QVariant" } + Method { name: "selectWord"; type: "QVariant" } + Method { name: "undo"; type: "QVariant" } + Property { name: "frameVisible"; type: "bool" } + Property { name: "highlightOnFocus"; type: "bool" } + Property { name: "contentItem"; type: "QQuickItem"; isPointer: true } + Property { name: "__scrollBarTopMargin"; type: "int" } + Property { name: "__viewTopMargin"; type: "int" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "Style_QMLTYPE_3"; isPointer: true } + Property { name: "horizontalScrollBarPolicy"; type: "int" } + Property { name: "verticalScrollBarPolicy"; type: "int" } + Property { name: "viewport"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "flickableItem"; type: "QQuickFlickable"; isReadonly: true; isPointer: true } + Property { + name: "__scroller" + type: "ScrollViewHelper_QMLTYPE_32" + isReadonly: true + isPointer: true + } + Property { name: "__verticalScrollbarOffset"; type: "int" } + Property { name: "__wheelAreaScrollSpeed"; type: "double" } + Property { + name: "__horizontalScrollBar" + type: "ScrollBar_QMLTYPE_28" + isReadonly: true + isPointer: true + } + Property { + name: "__verticalScrollBar" + type: "ScrollBar_QMLTYPE_28" + isReadonly: true + isPointer: true + } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/TextArea 1.5" + exports: ["QtQuick.Controls/TextArea 1.5"] + exportMetaObjectRevisions: [5] + isComposite: true + defaultProperty: "data" + Property { name: "inputMethodComposing"; type: "bool"; isReadonly: true } + Property { name: "tabChangesFocus"; type: "bool" } + Property { name: "selectByMouse"; type: "bool" } + Property { name: "menu"; type: "QQmlComponent"; isPointer: true } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "baseUrl"; type: "QUrl" } + Property { name: "canPaste"; type: "bool"; isReadonly: true } + Property { name: "canRedo"; type: "bool"; isReadonly: true } + Property { name: "canUndo"; type: "bool"; isReadonly: true } + Property { name: "textColor"; type: "QColor" } + Property { name: "cursorPosition"; type: "int" } + Property { name: "cursorRectangle"; type: "QRectF"; isReadonly: true } + Property { name: "font"; type: "QFont" } + Property { name: "horizontalAlignment"; type: "int" } + Property { name: "effectiveHorizontalAlignment"; type: "int"; isReadonly: true } + Property { name: "verticalAlignment"; type: "int" } + Property { name: "inputMethodHints"; type: "int" } + Property { name: "length"; type: "int"; isReadonly: true } + Property { name: "lineCount"; type: "int"; isReadonly: true } + Property { name: "readOnly"; type: "bool" } + Property { name: "selectedText"; type: "string"; isReadonly: true } + Property { name: "selectionEnd"; type: "int"; isReadonly: true } + Property { name: "selectionStart"; type: "int"; isReadonly: true } + Property { name: "text"; type: "string" } + Property { name: "textFormat"; type: "int" } + Property { name: "wrapMode"; type: "int" } + Property { name: "selectByKeyboard"; type: "bool" } + Property { name: "hoveredLink"; type: "string"; isReadonly: true } + Property { name: "backgroundVisible"; type: "bool" } + Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "textMargin"; type: "double" } + Property { name: "contentWidth"; type: "double"; isReadonly: true } + Property { name: "contentHeight"; type: "double"; isReadonly: true } + Property { name: "textDocument"; type: "QQuickTextDocument"; isReadonly: true; isPointer: true } + Signal { + name: "linkActivated" + Parameter { name: "link"; type: "string" } + } + Signal { + name: "linkHovered" + Parameter { name: "link"; type: "string" } + } + Signal { name: "editingFinished" } + Method { + name: "append" + type: "QVariant" + Parameter { name: "string"; type: "QVariant" } + } + Method { name: "copy"; type: "QVariant" } + Method { name: "cut"; type: "QVariant" } + Method { name: "deselect"; type: "QVariant" } + Method { + name: "getFormattedText" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { + name: "getText" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { + name: "insert" + type: "QVariant" + Parameter { name: "position"; type: "QVariant" } + Parameter { name: "text"; type: "QVariant" } + } + Method { + name: "isRightToLeft" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { + name: "moveCursorSelection" + type: "QVariant" + Parameter { name: "position"; type: "QVariant" } + Parameter { name: "mode"; type: "QVariant" } + } + Method { name: "paste"; type: "QVariant" } + Method { + name: "positionAt" + type: "QVariant" + Parameter { name: "x"; type: "QVariant" } + Parameter { name: "y"; type: "QVariant" } + } + Method { + name: "positionToRectangle" + type: "QVariant" + Parameter { name: "position"; type: "QVariant" } + } + Method { name: "redo"; type: "QVariant" } + Method { + name: "remove" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { + name: "select" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { name: "selectAll"; type: "QVariant" } + Method { name: "selectWord"; type: "QVariant" } + Method { name: "undo"; type: "QVariant" } + Property { name: "frameVisible"; type: "bool" } + Property { name: "highlightOnFocus"; type: "bool" } + Property { name: "contentItem"; type: "QQuickItem"; isPointer: true } + Property { name: "__scrollBarTopMargin"; type: "int" } + Property { name: "__viewTopMargin"; type: "int" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "Style_QMLTYPE_3"; isPointer: true } + Property { name: "horizontalScrollBarPolicy"; type: "int" } + Property { name: "verticalScrollBarPolicy"; type: "int" } + Property { name: "viewport"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "flickableItem"; type: "QQuickFlickable"; isReadonly: true; isPointer: true } + Property { + name: "__scroller" + type: "ScrollViewHelper_QMLTYPE_32" + isReadonly: true + isPointer: true + } + Property { name: "__verticalScrollbarOffset"; type: "int" } + Property { name: "__wheelAreaScrollSpeed"; type: "double" } + Property { + name: "__horizontalScrollBar" + type: "ScrollBar_QMLTYPE_28" + isReadonly: true + isPointer: true + } + Property { + name: "__verticalScrollBar" + type: "ScrollBar_QMLTYPE_28" + isReadonly: true + isPointer: true + } + } + Component { + prototype: "QQuickAbstractStyle1" + name: "QtQuick.Controls.Styles/TextAreaStyle 1.1" + exports: ["QtQuick.Controls.Styles/TextAreaStyle 1.1"] + exportMetaObjectRevisions: [1] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "TextArea_QMLTYPE_318"; isReadonly: true; isPointer: true } + Property { name: "font"; type: "QFont" } + Property { name: "textColor"; type: "QColor" } + Property { name: "selectionColor"; type: "QColor" } + Property { name: "selectedTextColor"; type: "QColor" } + Property { name: "backgroundColor"; type: "QColor" } + Property { name: "renderType"; type: "int" } + Property { name: "textMargin"; type: "double" } + Property { name: "__cursorHandle"; type: "QQmlComponent"; isPointer: true } + Property { name: "__selectionHandle"; type: "QQmlComponent"; isPointer: true } + Property { name: "__cursorDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "__editMenu"; type: "QQmlComponent"; isPointer: true } + Property { name: "corner"; type: "QQmlComponent"; isPointer: true } + Property { name: "scrollToClickedPosition"; type: "bool" } + Property { name: "transientScrollBars"; type: "bool" } + Property { name: "frame"; type: "QQmlComponent"; isPointer: true } + Property { name: "minimumHandleLength"; type: "int" } + Property { name: "handleOverlap"; type: "int" } + Property { name: "scrollBarBackground"; type: "QQmlComponent"; isPointer: true } + Property { name: "handle"; type: "QQmlComponent"; isPointer: true } + Property { name: "incrementControl"; type: "QQmlComponent"; isPointer: true } + Property { name: "decrementControl"; type: "QQmlComponent"; isPointer: true } + Property { name: "__scrollbar"; type: "QQmlComponent"; isPointer: true } + Property { name: "__externalScrollBars"; type: "bool" } + Property { name: "__scrollBarSpacing"; type: "int" } + Property { name: "__scrollBarFadeDelay"; type: "int" } + Property { name: "__scrollBarFadeDuration"; type: "int" } + Property { name: "__stickyScrollbars"; type: "bool" } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/TextField 1.0" + exports: ["QtQuick.Controls/TextField 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "inputMethodComposing"; type: "bool"; isReadonly: true } + Property { name: "selectByMouse"; type: "bool" } + Property { name: "menu"; type: "QQmlComponent"; isPointer: true } + Property { name: "acceptableInput"; type: "bool"; isReadonly: true } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "canPaste"; type: "bool"; isReadonly: true } + Property { name: "canRedo"; type: "bool"; isReadonly: true } + Property { name: "canUndo"; type: "bool"; isReadonly: true } + Property { name: "textColor"; type: "QColor" } + Property { name: "cursorPosition"; type: "int" } + Property { name: "cursorRectangle"; type: "QRectF"; isReadonly: true } + Property { name: "displayText"; type: "string"; isReadonly: true } + Property { name: "echoMode"; type: "int" } + Property { name: "font"; type: "QFont" } + Property { name: "horizontalAlignment"; type: "int" } + Property { name: "effectiveHorizontalAlignment"; type: "int"; isReadonly: true } + Property { name: "verticalAlignment"; type: "int" } + Property { name: "inputMask"; type: "string" } + Property { name: "inputMethodHints"; type: "int" } + Property { name: "length"; type: "int"; isReadonly: true } + Property { name: "maximumLength"; type: "int" } + Property { name: "placeholderText"; type: "string" } + Property { name: "readOnly"; type: "bool" } + Property { name: "selectedText"; type: "string"; isReadonly: true } + Property { name: "selectionEnd"; type: "int"; isReadonly: true } + Property { name: "selectionStart"; type: "int"; isReadonly: true } + Property { name: "text"; type: "string" } + Property { name: "validator"; type: "QValidator"; isPointer: true } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Property { name: "__contentHeight"; type: "double"; isReadonly: true } + Property { name: "__contentWidth"; type: "double"; isReadonly: true } + Property { name: "__baselineOffset"; type: "double" } + Signal { name: "accepted" } + Signal { name: "editingFinished" } + Method { name: "copy"; type: "QVariant" } + Method { name: "cut"; type: "QVariant" } + Method { name: "deselect"; type: "QVariant" } + Method { + name: "getText" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { + name: "insert" + type: "QVariant" + Parameter { name: "position"; type: "QVariant" } + Parameter { name: "text"; type: "QVariant" } + } + Method { + name: "isRightToLeft" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { name: "paste"; type: "QVariant" } + Method { name: "redo"; type: "QVariant" } + Method { + name: "remove" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { + name: "select" + type: "QVariant" + Parameter { name: "start"; type: "QVariant" } + Parameter { name: "end"; type: "QVariant" } + } + Method { name: "selectAll"; type: "QVariant" } + Method { name: "selectWord"; type: "QVariant" } + Method { name: "undo"; type: "QVariant" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickAbstractStyle1" + name: "QtQuick.Controls.Styles/TextFieldStyle 1.0" + exports: ["QtQuick.Controls.Styles/TextFieldStyle 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "TextField_QMLTYPE_324"; isReadonly: true; isPointer: true } + Property { name: "font"; type: "QFont" } + Property { name: "textColor"; type: "QColor" } + Property { name: "selectionColor"; type: "QColor" } + Property { name: "selectedTextColor"; type: "QColor" } + Property { name: "passwordCharacter"; type: "string" } + Property { name: "renderType"; type: "int" } + Property { name: "placeholderTextColor"; type: "QColor" } + Property { name: "background"; type: "QQmlComponent"; isPointer: true } + Property { name: "panel"; type: "QQmlComponent"; isPointer: true } + Property { name: "__cursorHandle"; type: "QQmlComponent"; isPointer: true } + Property { name: "__selectionHandle"; type: "QQmlComponent"; isPointer: true } + Property { name: "__cursorDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "__editMenu"; type: "QQmlComponent"; isPointer: true } + } + Component { + prototype: "QQuickAbstractStyle1" + name: "QtQuick.Controls.Styles/ToggleButtonStyle 1.0" + exports: ["QtQuick.Controls.Styles/ToggleButtonStyle 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "ToggleButton_QMLTYPE_327"; isReadonly: true; isPointer: true } + Property { name: "inactiveGradient"; type: "QQuickGradient"; isPointer: true } + Property { name: "checkedGradient"; type: "QQuickGradient"; isPointer: true } + Property { name: "uncheckedGradient"; type: "QQuickGradient"; isPointer: true } + Property { name: "checkedDropShadowColor"; type: "QColor" } + Property { name: "uncheckedDropShadowColor"; type: "QColor" } + Property { + name: "__buttonHelper" + type: "CircularButtonStyleHelper_QMLTYPE_93" + isReadonly: true + isPointer: true + } + Property { name: "background"; type: "QQmlComponent"; isPointer: true } + Property { name: "label"; type: "QQmlComponent"; isPointer: true } + Property { name: "panel"; type: "QQmlComponent"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/ToolBar 1.0" + exports: ["QtQuick.Controls/ToolBar 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "__content" + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "__menu"; type: "QVariant" } + Property { name: "__style"; type: "QObject"; isReadonly: true; isPointer: true } + Property { name: "__content"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "contentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + } + Component { + prototype: "QQuickAbstractStyle1" + name: "QtQuick.Controls.Styles/ToolBarStyle 1.0" + exports: ["QtQuick.Controls.Styles/ToolBarStyle 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "background"; type: "QQmlComponent"; isPointer: true } + Property { name: "menuButton"; type: "QQmlComponent"; isPointer: true } + Property { name: "panel"; type: "QQmlComponent"; isPointer: true } + Property { name: "control"; type: "QQuickItem"; isReadonly: true; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/ToolButton 1.0" + exports: ["QtQuick.Controls/ToolButton 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "isDefault"; type: "bool" } + Property { name: "menu"; type: "Menu_QMLTYPE_55"; isPointer: true } + Property { name: "checkable"; type: "bool" } + Property { name: "checked"; type: "bool" } + Property { name: "exclusiveGroup"; type: "QQuickExclusiveGroup1"; isPointer: true } + Property { name: "action"; type: "QQuickAction1"; isPointer: true } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "text"; type: "string" } + Property { name: "tooltip"; type: "string" } + Property { name: "iconSource"; type: "QUrl" } + Property { name: "iconName"; type: "string" } + Property { name: "__position"; type: "string" } + Property { name: "__iconOverriden"; type: "bool"; isReadonly: true } + Property { name: "__action"; type: "QQuickAction1"; isPointer: true } + Property { name: "__iconAction"; type: "QQuickAction1"; isReadonly: true; isPointer: true } + Property { name: "__behavior"; type: "QVariant" } + Property { name: "__effectivePressed"; type: "bool" } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Signal { name: "clicked" } + Method { name: "accessiblePressAction"; type: "QVariant" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/TreeView 1.4" + exports: ["QtQuick.Controls/TreeView 1.4"] + exportMetaObjectRevisions: [4] + isComposite: true + defaultProperty: "__columns" + Property { name: "model"; type: "QVariant" } + Property { name: "currentIndex"; type: "QVariant"; isReadonly: true } + Property { name: "selection"; type: "QItemSelectionModel"; isPointer: true } + Property { name: "rootIndex"; type: "QModelIndex" } + Signal { + name: "activated" + Parameter { name: "index"; type: "QVariant" } + } + Signal { + name: "clicked" + Parameter { name: "index"; type: "QVariant" } + } + Signal { + name: "doubleClicked" + Parameter { name: "index"; type: "QVariant" } + } + Signal { + name: "pressAndHold" + Parameter { name: "index"; type: "QVariant" } + } + Signal { + name: "expanded" + Parameter { name: "index"; type: "QVariant" } + } + Signal { + name: "collapsed" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "isExpanded" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "collapse" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "expand" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "indexAt" + type: "QVariant" + Parameter { name: "x"; type: "QVariant" } + Parameter { name: "y"; type: "QVariant" } + } + Property { name: "alternatingRowColors"; type: "bool" } + Property { name: "headerVisible"; type: "bool" } + Property { name: "itemDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "rowDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "headerDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "sortIndicatorColumn"; type: "int" } + Property { name: "sortIndicatorVisible"; type: "bool" } + Property { name: "sortIndicatorOrder"; type: "int" } + Property { name: "selectionMode"; type: "int" } + Property { name: "__viewTypeName"; type: "string" } + Property { name: "__isTreeView"; type: "bool"; isReadonly: true } + Property { name: "__itemDelegateLoader"; type: "QQmlComponent"; isPointer: true } + Property { name: "__model"; type: "QVariant" } + Property { name: "__activateItemOnSingleClick"; type: "bool" } + Property { name: "__mouseArea"; type: "QQuickItem"; isPointer: true } + Property { name: "backgroundVisible"; type: "bool" } + Property { name: "contentHeader"; type: "QQmlComponent"; isPointer: true } + Property { name: "contentFooter"; type: "QQmlComponent"; isPointer: true } + Property { name: "columnCount"; type: "int"; isReadonly: true } + Property { name: "section"; type: "QQuickViewSection"; isReadonly: true; isPointer: true } + Property { name: "__columns"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "__currentRowItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "__currentRow"; type: "int" } + Property { name: "__listView"; type: "QQuickListView"; isReadonly: true; isPointer: true } + Method { + name: "addColumn" + type: "QVariant" + Parameter { name: "column"; type: "QVariant" } + } + Method { + name: "insertColumn" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + Parameter { name: "column"; type: "QVariant" } + } + Method { + name: "removeColumn" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "moveColumn" + type: "QVariant" + Parameter { name: "from"; type: "QVariant" } + Parameter { name: "to"; type: "QVariant" } + } + Method { + name: "getColumn" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { name: "resizeColumnsToContents"; type: "QVariant" } + Property { name: "frameVisible"; type: "bool" } + Property { name: "highlightOnFocus"; type: "bool" } + Property { name: "contentItem"; type: "QQuickItem"; isPointer: true } + Property { name: "__scrollBarTopMargin"; type: "int" } + Property { name: "__viewTopMargin"; type: "int" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "Style_QMLTYPE_3"; isPointer: true } + Property { name: "horizontalScrollBarPolicy"; type: "int" } + Property { name: "verticalScrollBarPolicy"; type: "int" } + Property { name: "viewport"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "flickableItem"; type: "QQuickFlickable"; isReadonly: true; isPointer: true } + Property { + name: "__scroller" + type: "ScrollViewHelper_QMLTYPE_32" + isReadonly: true + isPointer: true + } + Property { name: "__verticalScrollbarOffset"; type: "int" } + Property { name: "__wheelAreaScrollSpeed"; type: "double" } + Property { + name: "__horizontalScrollBar" + type: "ScrollBar_QMLTYPE_28" + isReadonly: true + isPointer: true + } + Property { + name: "__verticalScrollBar" + type: "ScrollBar_QMLTYPE_28" + isReadonly: true + isPointer: true + } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Controls/TreeView 1.5" + exports: ["QtQuick.Controls/TreeView 1.5"] + exportMetaObjectRevisions: [5] + isComposite: true + defaultProperty: "__columns" + Property { name: "model"; type: "QVariant" } + Property { name: "currentIndex"; type: "QVariant"; isReadonly: true } + Property { name: "selection"; type: "QItemSelectionModel"; isPointer: true } + Property { name: "rootIndex"; type: "QModelIndex" } + Signal { + name: "activated" + Parameter { name: "index"; type: "QVariant" } + } + Signal { + name: "clicked" + Parameter { name: "index"; type: "QVariant" } + } + Signal { + name: "doubleClicked" + Parameter { name: "index"; type: "QVariant" } + } + Signal { + name: "pressAndHold" + Parameter { name: "index"; type: "QVariant" } + } + Signal { + name: "expanded" + Parameter { name: "index"; type: "QVariant" } + } + Signal { + name: "collapsed" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "isExpanded" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "collapse" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "expand" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "indexAt" + type: "QVariant" + Parameter { name: "x"; type: "QVariant" } + Parameter { name: "y"; type: "QVariant" } + } + Property { name: "alternatingRowColors"; type: "bool" } + Property { name: "headerVisible"; type: "bool" } + Property { name: "itemDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "rowDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "headerDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "sortIndicatorColumn"; type: "int" } + Property { name: "sortIndicatorVisible"; type: "bool" } + Property { name: "sortIndicatorOrder"; type: "int" } + Property { name: "selectionMode"; type: "int" } + Property { name: "__viewTypeName"; type: "string" } + Property { name: "__isTreeView"; type: "bool"; isReadonly: true } + Property { name: "__itemDelegateLoader"; type: "QQmlComponent"; isPointer: true } + Property { name: "__model"; type: "QVariant" } + Property { name: "__activateItemOnSingleClick"; type: "bool" } + Property { name: "__mouseArea"; type: "QQuickItem"; isPointer: true } + Property { name: "backgroundVisible"; type: "bool" } + Property { name: "contentHeader"; type: "QQmlComponent"; isPointer: true } + Property { name: "contentFooter"; type: "QQmlComponent"; isPointer: true } + Property { name: "columnCount"; type: "int"; isReadonly: true } + Property { name: "section"; type: "QQuickViewSection"; isReadonly: true; isPointer: true } + Property { name: "__columns"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "__currentRowItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "__currentRow"; type: "int" } + Property { name: "__listView"; type: "QQuickListView"; isReadonly: true; isPointer: true } + Method { + name: "addColumn" + type: "QVariant" + Parameter { name: "column"; type: "QVariant" } + } + Method { + name: "insertColumn" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + Parameter { name: "column"; type: "QVariant" } + } + Method { + name: "removeColumn" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "moveColumn" + type: "QVariant" + Parameter { name: "from"; type: "QVariant" } + Parameter { name: "to"; type: "QVariant" } + } + Method { + name: "getColumn" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { name: "resizeColumnsToContents"; type: "QVariant" } + Property { name: "frameVisible"; type: "bool" } + Property { name: "highlightOnFocus"; type: "bool" } + Property { name: "contentItem"; type: "QQuickItem"; isPointer: true } + Property { name: "__scrollBarTopMargin"; type: "int" } + Property { name: "__viewTopMargin"; type: "int" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "Style_QMLTYPE_3"; isPointer: true } + Property { name: "horizontalScrollBarPolicy"; type: "int" } + Property { name: "verticalScrollBarPolicy"; type: "int" } + Property { name: "viewport"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "flickableItem"; type: "QQuickFlickable"; isReadonly: true; isPointer: true } + Property { + name: "__scroller" + type: "ScrollViewHelper_QMLTYPE_32" + isReadonly: true + isPointer: true + } + Property { name: "__verticalScrollbarOffset"; type: "int" } + Property { name: "__wheelAreaScrollSpeed"; type: "double" } + Property { + name: "__horizontalScrollBar" + type: "ScrollBar_QMLTYPE_28" + isReadonly: true + isPointer: true + } + Property { + name: "__verticalScrollBar" + type: "ScrollBar_QMLTYPE_28" + isReadonly: true + isPointer: true + } + } + Component { + prototype: "QQuickAbstractStyle1" + name: "QtQuick.Controls.Styles/TreeViewStyle 1.4" + exports: ["QtQuick.Controls.Styles/TreeViewStyle 1.4"] + exportMetaObjectRevisions: [4] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "TreeView_QMLTYPE_350"; isReadonly: true; isPointer: true } + Property { name: "indentation"; type: "int" } + Property { name: "branchDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "textColor"; type: "QColor" } + Property { name: "backgroundColor"; type: "QColor" } + Property { name: "alternateBackgroundColor"; type: "QColor" } + Property { name: "highlightedTextColor"; type: "QColor" } + Property { name: "activateItemOnSingleClick"; type: "bool" } + Property { name: "headerDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "rowDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "itemDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "__branchDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "__indentation"; type: "int" } + Property { name: "corner"; type: "QQmlComponent"; isPointer: true } + Property { name: "scrollToClickedPosition"; type: "bool" } + Property { name: "transientScrollBars"; type: "bool" } + Property { name: "frame"; type: "QQmlComponent"; isPointer: true } + Property { name: "minimumHandleLength"; type: "int" } + Property { name: "handleOverlap"; type: "int" } + Property { name: "scrollBarBackground"; type: "QQmlComponent"; isPointer: true } + Property { name: "handle"; type: "QQmlComponent"; isPointer: true } + Property { name: "incrementControl"; type: "QQmlComponent"; isPointer: true } + Property { name: "decrementControl"; type: "QQmlComponent"; isPointer: true } + Property { name: "__scrollbar"; type: "QQmlComponent"; isPointer: true } + Property { name: "__externalScrollBars"; type: "bool" } + Property { name: "__scrollBarSpacing"; type: "int" } + Property { name: "__scrollBarFadeDelay"; type: "int" } + Property { name: "__scrollBarFadeDuration"; type: "int" } + Property { name: "__stickyScrollbars"; type: "bool" } + } + Component { + prototype: "QQuickAbstractStyle1" + name: "QtQuick.Controls.Styles/TumblerStyle 1.2" + exports: ["QtQuick.Controls.Styles/TumblerStyle 1.2"] + exportMetaObjectRevisions: [2] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "Tumbler_QMLTYPE_353"; isReadonly: true; isPointer: true } + Property { name: "spacing"; type: "double" } + Property { name: "visibleItemCount"; type: "int" } + Property { name: "__padding"; type: "double"; isReadonly: true } + Property { name: "__delegateHeight"; type: "double" } + Property { name: "__separatorWidth"; type: "double" } + Property { name: "background"; type: "QQmlComponent"; isPointer: true } + Property { name: "foreground"; type: "QQmlComponent"; isPointer: true } + Property { name: "separator"; type: "QQmlComponent"; isPointer: true } + Property { name: "columnForeground"; type: "QQmlComponent"; isPointer: true } + Property { name: "frame"; type: "QQmlComponent"; isPointer: true } + Property { name: "delegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "highlight"; type: "QQmlComponent"; isPointer: true } + Property { name: "panel"; type: "QQmlComponent"; isPointer: true } + } +} diff --git a/deployment_test/QtQuick/Controls/qmldir b/deployment_test/QtQuick/Controls/qmldir new file mode 100644 index 0000000000000000000000000000000000000000..6641de8652f7c411041905c157f781961ead24ab --- /dev/null +++ b/deployment_test/QtQuick/Controls/qmldir @@ -0,0 +1,8 @@ +module QtQuick.Controls +plugin qtquickcontrolsplugin +classname QtQuickControls1Plugin +typeinfo plugins.qmltypes +designersupported +depends QtQuick.Window 2.2 +depends QtQuick.Layouts 1.0 +depends QtQml 2.14 diff --git a/deployment_test/QtQuick/Controls/qtquickcontrolsplugin.dll b/deployment_test/QtQuick/Controls/qtquickcontrolsplugin.dll new file mode 100644 index 0000000000000000000000000000000000000000..5c70531449a61f0336f38ddc8b320b0b47c5df10 Binary files /dev/null and b/deployment_test/QtQuick/Controls/qtquickcontrolsplugin.dll differ diff --git a/deployment_test/QtQuick/Extras/CircularGauge.qml b/deployment_test/QtQuick/Extras/CircularGauge.qml new file mode 100644 index 0000000000000000000000000000000000000000..d42e17d5bb9bfd5abed5e791e78b2372204eefd8 --- /dev/null +++ b/deployment_test/QtQuick/Extras/CircularGauge.qml @@ -0,0 +1,160 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Extras module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +// Workaround for QTBUG-37751; we need this import for RangeModel, although we shouldn't. +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 +import QtQuick.Controls.Private 1.0 +import QtQuick.Extras.Private 1.0 + +/*! + \qmltype CircularGauge + \inqmlmodule QtQuick.Extras + \since 5.5 + \ingroup extras + \ingroup extras-non-interactive + \brief A gauge that displays a value within a range along an arc. + + \image circulargauge.png CircularGauge + + The CircularGauge is similar to traditional mechanical gauges that use a + needle to display a value from some input, such as the speed of a vehicle or + air pressure, for example. + + The minimum and maximum values displayable by the gauge can be set with the + \l minimumValue and \l maximumValue properties. The angle at which these + values are displayed can be set with the + \l {CircularGaugeStyle::}{minimumValueAngle} and + \l {CircularGaugeStyle::}{maximumValueAngle} properties of + \l {CircularGaugeStyle}. + + Example: + \code + CircularGauge { + value: accelerating ? maximumValue : 0 + anchors.centerIn: parent + + property bool accelerating: false + + Keys.onSpacePressed: accelerating = true + Keys.onReleased: { + if (event.key === Qt.Key_Space) { + accelerating = false; + event.accepted = true; + } + } + + Component.onCompleted: forceActiveFocus() + + Behavior on value { + NumberAnimation { + duration: 1000 + } + } + } + \endcode + + You can create a custom appearance for a CircularGauge by assigning a + \l {CircularGaugeStyle}. +*/ + +Control { + id: circularGauge + + style: Settings.styleComponent(Settings.style, "CircularGaugeStyle.qml", circularGauge) + + /*! + \qmlproperty real CircularGauge::minimumValue + + This property holds the smallest value displayed by the gauge. + */ + property alias minimumValue: range.minimumValue + + /*! + \qmlproperty real CircularGauge::maximumValue + + This property holds the largest value displayed by the gauge. + */ + property alias maximumValue: range.maximumValue + + /*! + This property holds the current value displayed by the gauge, which will + always be between \l minimumValue and \l maximumValue, inclusive. + */ + property alias value: range.value + + /*! + \qmlproperty real CircularGauge::stepSize + + This property holds the size of the value increments that the needle + displays. + + For example, when stepSize is \c 10 and value is \c 0, adding \c 5 to + \l value will have no visible effect on the needle, although \l value + will still be incremented. Adding an extra \c 5 to \l value will then + cause the needle to point to \c 10. + */ + property alias stepSize: range.stepSize + + /*! + This property determines whether or not the gauge displays tickmarks, + minor tickmarks, and labels. + + For more fine-grained control over what is displayed, the following + style components of + \l CircularGaugeStyle can be + used: + + \list + \li \l {CircularGaugeStyle::}{tickmark} + \li \l {CircularGaugeStyle::}{minorTickmark} + \li \l {CircularGaugeStyle::}{tickmarkLabel} + \endlist + */ + property bool tickmarksVisible: true + + RangeModel { + id: range + minimumValue: 0 + maximumValue: 100 + stepSize: 0 + value: minimumValue + } +} diff --git a/deployment_test/QtQuick/Extras/CircularGauge.qmlc b/deployment_test/QtQuick/Extras/CircularGauge.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..4879a7f3496304128fb21c4df82861aebd54e98d Binary files /dev/null and b/deployment_test/QtQuick/Extras/CircularGauge.qmlc differ diff --git a/deployment_test/QtQuick/Extras/DelayButton.qml b/deployment_test/QtQuick/Extras/DelayButton.qml new file mode 100644 index 0000000000000000000000000000000000000000..9a0c3a25531b8acd597217b37bfec0e9051248a1 --- /dev/null +++ b/deployment_test/QtQuick/Extras/DelayButton.qml @@ -0,0 +1,161 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Extras module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQml 2.14 as Qml +import QtQuick 2.2 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype DelayButton + \inherits QtQuickControls::Button + \inqmlmodule QtQuick.Extras + \since 5.5 + \ingroup extras + \ingroup extras-interactive + \brief A checkable button that triggers an action when held in long enough. + + \image delaybutton.png A DelayButton + + The DelayButton is a checkable button that incorporates a delay before + the button becomes checked and the \l activated signal is emitted. This + delay prevents accidental presses. + + The current progress is expressed as a decimal value between \c 0.0 and + \c 1.0. The time it takes for \l activated to be emitted is measured in + milliseconds, and can be set with the \l delay property. + + The progress is indicated by a progress indicator around the button. When + the indicator reaches completion, it flashes. + + \image delaybutton-progress.png A DelayButton being held down + A DelayButton being held down + \image delaybutton-activated.png A DelayButton after being activated + A DelayButton after being activated + + You can create a custom appearance for a DelayButton by assigning a + \l {DelayButtonStyle}. +*/ + +Button { + id: root + + style: Settings.styleComponent(Settings.style, "DelayButtonStyle.qml", root) + + /*! + \qmlproperty real DelayButton::progress + + This property holds the current progress as displayed by the progress + indicator, in the range \c 0.0 - \c 1.0. + */ + readonly property alias progress: root.__progress + + /*! + This property holds the time it takes (in milliseconds) for \l progress + to reach \c 1.0 and emit \l activated. + + The default value is \c 3000 ms. + */ + property int delay: 3000 + + /*! + This signal is emitted when \l progress reaches \c 1.0 and the button + becomes checked. + */ + signal activated + + + /*! \internal */ + property real __progress: 0.0 + + Behavior on __progress { + id: progressBehavior + + NumberAnimation { + id: numberAnimation + } + } + + Qml.Binding { + // Force checkable to false to get full control over the checked -property + target: root + property: "checkable" + value: false + restoreMode: Binding.RestoreBinding + } + + onProgressChanged: { + if (__progress === 1.0) { + checked = true; + activated(); + } + } + + onCheckedChanged: { + if (checked) { + if (__progress < 1) { + // Programmatically activated the button; don't animate. + progressBehavior.enabled = false; + __progress = 1; + progressBehavior.enabled = true; + } + } else { + // Unchecked the button after it was flashing; it should instantly stop + // flashing (with no reversed progress bar). + progressBehavior.enabled = false; + __progress = 0; + progressBehavior.enabled = true; + } + } + + onPressedChanged: { + if (checked) { + if (pressed) { + // Pressed the button to stop the activation. + checked = false; + } + } else { + var effectiveDelay = pressed ? delay : delay * 0.3; + // Not active. Either the button is being held down or let go. + numberAnimation.duration = Math.max(0, (pressed ? 1 - __progress : __progress) * effectiveDelay); + __progress = pressed ? 1 : 0; + } + } +} diff --git a/deployment_test/QtQuick/Extras/DelayButton.qmlc b/deployment_test/QtQuick/Extras/DelayButton.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..419644f8b1a30ccf85d753f6c3cd1eef47e6feda Binary files /dev/null and b/deployment_test/QtQuick/Extras/DelayButton.qmlc differ diff --git a/deployment_test/QtQuick/Extras/Dial.qml b/deployment_test/QtQuick/Extras/Dial.qml new file mode 100644 index 0000000000000000000000000000000000000000..688f13d9d1d4861bb6cfd1061a49f0dcd4301502 --- /dev/null +++ b/deployment_test/QtQuick/Extras/Dial.qml @@ -0,0 +1,229 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Extras module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 +import QtQuick.Controls.Private 1.0 +import QtQuick.Extras 1.4 +import QtQuick.Extras.Private 1.0 + +/*! + \qmltype Dial + \inqmlmodule QtQuick.Extras + \since 5.5 + \ingroup extras + \ingroup extras-interactive + \brief A circular dial that is rotated to set a value. + + \image dial.png A Dial + + The Dial is similar to a traditional dial knob that is found on devices + such as stereos or industrial equipment. It allows the user to specify a + value within a range. + + Like CircularGauge, Dial can display tickmarks to give an indication of + the current value. When a suitable stepSize is combined with + \l {DialStyle::}{tickmarkStepSize}, + the dial "snaps" to each tickmark. + + You can create a custom appearance for a Dial by assigning a + \l {DialStyle}. +*/ + +Control { + id: dial + + activeFocusOnTab: true + style: Settings.styleComponent(Settings.style, "DialStyle.qml", dial) + + /*! + \qmlproperty real Dial::value + + The angle of the handle along the dial, in the range of + \c 0.0 to \c 1.0. + + The default value is \c{0.0}. + */ + property alias value: range.value + + /*! + \qmlproperty real Dial::minimumValue + + The smallest value allowed by the dial. + + The default value is \c{0.0}. + + \sa value, maximumValue + */ + property alias minimumValue: range.minimumValue + + /*! + \qmlproperty real Dial::maximumValue + + The largest value allowed by the dial. + + The default value is \c{1.0}. + + \sa value, minimumValue + */ + property alias maximumValue: range.maximumValue + + /*! + \qmlproperty real Dial::hovered + + This property holds whether the button is being hovered. + */ + readonly property alias hovered: mouseArea.containsMouse + + /*! + \qmlproperty real Dial::stepSize + + The default value is \c{0.0}. + */ + property alias stepSize: range.stepSize + + /*! + \internal + Determines whether the dial can be freely rotated past the zero marker. + + The default value is \c false. + */ + property bool __wrap: false + + /*! + This property specifies whether the dial should gain active focus when + pressed. + + The default value is \c false. + + \sa pressed + */ + property bool activeFocusOnPress: false + + /*! + \qmlproperty bool Dial::pressed + + Returns \c true if the dial is pressed. + + \sa activeFocusOnPress + */ + readonly property alias pressed: mouseArea.pressed + + /*! + This property determines whether or not the dial displays tickmarks, + minor tickmarks, and labels. + + For more fine-grained control over what is displayed, the following + style components of + \l {DialStyle} can be used: + + \list + \li \l {DialStyle::}{tickmark} + \li \l {DialStyle::}{minorTickmark} + \li \l {DialStyle::}{tickmarkLabel} + \endlist + + The default value is \c true. + */ + property bool tickmarksVisible: true + + Keys.onLeftPressed: value -= stepSize + Keys.onDownPressed: value -= stepSize + Keys.onRightPressed: value += stepSize + Keys.onUpPressed: value += stepSize + Keys.onPressed: { + if (event.key === Qt.Key_Home) { + value = minimumValue; + event.accepted = true; + } else if (event.key === Qt.Key_End) { + value = maximumValue; + event.accepted = true; + } + } + + RangeModel { + id: range + minimumValue: 0.0 + maximumValue: 1.0 + stepSize: 0 + value: 0 + } + + MouseArea { + id: mouseArea + hoverEnabled: true + parent: __panel.background.parent + anchors.fill: parent + + onPositionChanged: { + if (pressed) { + value = valueFromPoint(mouseX, mouseY); + } + } + onPressed: { + if (!__style.__dragToSet) + value = valueFromPoint(mouseX, mouseY); + + if (activeFocusOnPress) + dial.forceActiveFocus(); + } + + function bound(val) { return Math.max(minimumValue, Math.min(maximumValue, val)); } + + function valueFromPoint(x, y) + { + var yy = height / 2.0 - y; + var xx = x - width / 2.0; + var angle = (xx || yy) ? Math.atan2(yy, xx) : 0; + + if (angle < Math.PI/ -2) + angle = angle + Math.PI * 2; + + var range = maximumValue - minimumValue; + var value; + if (__wrap) + value = (minimumValue + range * (Math.PI * 3 / 2 - angle) / (2 * Math.PI)); + else + value = (minimumValue + range * (Math.PI * 4 / 3 - angle) / (Math.PI * 10 / 6)); + + return bound(value) + } + } +} diff --git a/deployment_test/QtQuick/Extras/Dial.qmlc b/deployment_test/QtQuick/Extras/Dial.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..40778d4d04e72ac6ad4b0f980d546e442b9c45e2 Binary files /dev/null and b/deployment_test/QtQuick/Extras/Dial.qmlc differ diff --git a/deployment_test/QtQuick/Extras/Gauge.qml b/deployment_test/QtQuick/Extras/Gauge.qml new file mode 100644 index 0000000000000000000000000000000000000000..276cc1257c75de6161776e5864a4e93bc6abf569 --- /dev/null +++ b/deployment_test/QtQuick/Extras/Gauge.qml @@ -0,0 +1,210 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Extras module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 +import QtQuick.Controls.Private 1.0 +import QtQuick.Extras 1.4 +import QtQuick.Extras.Private 1.0 + +/*! + \qmltype Gauge + \inqmlmodule QtQuick.Extras + \since 5.5 + \ingroup extras + \ingroup extras-non-interactive + \brief A straight gauge that displays a value within a range. + + \image gauge.png Gauge + + The Gauge control displays a value within some range along a horizontal or + vertical axis. It can be thought of as an extension of ProgressBar, + providing tickmarks and labels to provide a visual measurement of the + progress. + + The minimum and maximum values displayable by the gauge can be set with the + \l minimumValue and \l maximumValue properties. + + Example: + \code + Gauge { + minimumValue: 0 + value: 50 + maximumValue: 100 + anchors.centerIn: parent + } + \endcode + + You can create a custom appearance for a Gauge by assigning a + \l {GaugeStyle}. +*/ + +Control { + id: gauge + + style: Settings.styleComponent(Settings.style, "GaugeStyle.qml", gauge) + + /*! + This property holds the smallest value displayed by the gauge. + + The default value is \c 0. + */ + property alias minimumValue: range.minimumValue + + /*! + This property holds the value displayed by the gauge. + + The default value is \c 0. + */ + property alias value: range.value + + /*! + This property holds the largest value displayed by the gauge. + + The default value is \c 100. + */ + property alias maximumValue: range.maximumValue + + /*! + This property determines the orientation of the gauge. + + The default value is \c Qt.Vertical. + */ + property int orientation: Qt.Vertical + + /*! + This property determines the alignment of each tickmark within the + gauge. When \l orientation is \c Qt.Vertical, the valid values are: + + \list + \li Qt.AlignLeft + \li Qt.AlignRight + \endlist + + Any other value will cause \c Qt.AlignLeft to be used, which is also the + default value for this orientation. + + When \l orientation is \c Qt.Horizontal, the valid values are: + + \list + \li Qt.AlignTop + \li Qt.AlignBottom + \endlist + + Any other value will cause \c Qt.AlignBottom to be used, which is also + the default value for this orientation. + */ + property int tickmarkAlignment: orientation == Qt.Vertical ? Qt.AlignLeft : Qt.AlignBottom + property int __tickmarkAlignment: { + if (orientation == Qt.Vertical) { + return (tickmarkAlignment == Qt.AlignLeft || tickmarkAlignment == Qt.AlignRight) ? tickmarkAlignment : Qt.AlignLeft; + } + + return (tickmarkAlignment == Qt.AlignTop || tickmarkAlignment == Qt.AlignBottom) ? tickmarkAlignment : Qt.AlignBottom; + } + + /*! + \internal + + TODO: finish this + + This property determines whether or not the tickmarks and their labels + are drawn inside (over) the gauge. The value of this property affects + \l tickmarkAlignment. + */ + property bool __tickmarksInside: false + + /*! + This property determines the rate at which tickmarks are drawn on the + gauge. The lower the value, the more often tickmarks are drawn. + + The default value is \c 10. + */ + property real tickmarkStepSize: 10 + + /*! + This property determines the amount of minor tickmarks drawn between + each regular tickmark. + + The default value is \c 4. + */ + property int minorTickmarkCount: 4 + + /*! + \qmlproperty font Gauge::font + + The font to use for the tickmark text. + */ + property alias font: hiddenText.font + + /*! + This property accepts a function that formats the given \a value for + display in + \l {GaugeStyle::}{tickmarkLabel}. + + For example, to provide a custom format that displays all values with 3 + decimal places: + + \code + formatValue: function(value) { + return value.toFixed(3); + } + \endcode + + The default function does no formatting. + */ + property var formatValue: function(value) { + return value; + } + + property alias __hiddenText: hiddenText + Text { + id: hiddenText + text: formatValue(maximumValue) + visible: false + } + + RangeModel { + id: range + minimumValue: 0 + value: 0 + maximumValue: 100 + } +} diff --git a/deployment_test/QtQuick/Extras/Gauge.qmlc b/deployment_test/QtQuick/Extras/Gauge.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..ca7aa59ba837e48bc8fedabca9262cd3682a7d46 Binary files /dev/null and b/deployment_test/QtQuick/Extras/Gauge.qmlc differ diff --git a/deployment_test/QtQuick/Extras/PieMenu.qml b/deployment_test/QtQuick/Extras/PieMenu.qml new file mode 100644 index 0000000000000000000000000000000000000000..cfaaecbe7fc58e5d88d5d4a5d4c5db3b33d93106 --- /dev/null +++ b/deployment_test/QtQuick/Extras/PieMenu.qml @@ -0,0 +1,738 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Extras module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 +import QtQuick.Controls.Private 1.0 +import QtQuick.Extras 1.4 +import QtQuick.Extras.Private 1.0 +import QtQuick.Extras.Private.CppUtils 1.0 as CppUtils + +/*! + \qmltype PieMenu + \inqmlmodule QtQuick.Extras + \since 5.5 + \ingroup extras + \ingroup extras-interactive + \brief A popup menu that displays several menu items along an arc. + + \image piemenu.png A PieMenu + + The PieMenu provides a radial context menu as an alternative to a + traditional menu. All of the items in a PieMenu are an equal distance + from the center of the control. + + \section2 Populating the Menu + + To create a menu, define at least one MenuItem as a child of it: + \code + PieMenu { + id: pieMenu + + MenuItem { + text: "Action 1" + onTriggered: print("Action 1") + } + MenuItem { + text: "Action 2" + onTriggered: print("Action 2") + } + MenuItem { + text: "Action 3" + onTriggered: print("Action 3") + } + } + \endcode + + By default, only the currently selected item's text is displayed above the + menu. To provide text that is always visible when there is no current item, + set the \l title property. + + \section2 Displaying the Menu + + The typical use case for a menu is to open at the point of the mouse + cursor after a right click occurs. To do that, define a MouseArea that + covers the region upon which clicks should open the menu. When the + MouseArea is right-clicked, call the popup() function: + \code + MouseArea { + anchors.fill: parent + acceptedButtons: Qt.RightButton + + onClicked: pieMenu.popup(mouseX, mouseY) + } + \endcode + + If the menu is opened in a position where some of its menu items would be + outside of \l boundingItem, it is automatically moved to a position where + they will not be hidden. By default, the boundingItem is set to the parent + of the menu. It can also be set to \c null to prevent this behavior. + + PieMenu can be displayed at any position on the screen. With a traditional + context menu, the menu would be positioned with its top left corner at the + position of the right click, but since PieMenu is radial, we position it + centered over the position of the right click. + + To create a PieMenu that opens after a long press and selects items upon + releasing, you can combine ActivationMode.ActivateOnRelease with a + MouseArea using a Timer: + \code + MouseArea { + id: touchArea + anchors.fill: parent + + Timer { + id: pressAndHoldTimer + interval: 300 + onTriggered: pieMenu.popup(touchArea.mouseX, touchArea.mouseY); + } + + onPressed: pressAndHoldTimer.start() + onReleased: pressAndHoldTimer.stop(); + } + + PieMenu { + id: pieMenu + + triggerMode: TriggerMode.TriggerOnRelease + + MenuItem { + text: "Action 1" + onTriggered: print("Action 1") + } + MenuItem { + text: "Action 2" + onTriggered: print("Action 2") + } + MenuItem { + text: "Action 3" + onTriggered: print("Action 3") + } + } + \endcode + + You can hide individual menu items by setting their visible property to + \c false. Hiding items does not affect the + \l {PieMenuStyle::}{startAngle} or + \l {PieMenuStyle::}{endAngle}; the + remaining items will grow to consume the available space. + + You can create a custom appearance for a PieMenu by assigning a \l {PieMenuStyle} +*/ + +Control { + id: pieMenu + visible: false + + style: Settings.styleComponent(Settings.style, "PieMenuStyle.qml", pieMenu) + + /*! + This property reflects the angle (in radians) created by the imaginary + line from the center of the menu to the position of the cursor. + + Its value is undefined when the menu is not visible. + */ + readonly property real selectionAngle: { + var centerX = width / 2; + var centerY = height / 2; + var targetX = __protectedScope.selectionPos.x; + var targetY = __protectedScope.selectionPos.y; + + var xDistance = centerX - targetX; + var yDistance = centerY - targetY; + + var angleToTarget = Math.atan2(xDistance, yDistance) * -1; + angleToTarget; + } + + /*! + \qmlproperty enumeration PieMenu::activationMode + + This property determines the method for selecting items in the menu. + + \list + \li An activationMode of \a ActivationMode.ActivateOnPress means that menu + items will only be selected when a mouse press event occurs over them. + + \li An activationMode of \a ActivationMode.ActivateOnRelease means that menu + items will only be selected when a mouse release event occurs over them. + This means that the user must keep the mouse button down after opening + the menu and release the mouse over the item they wish to select. + + \li An activationMode of \a ActivationMode.ActivateOnClick means that menu + items will only be selected when the user clicks once over them. + \endlist + + \warning Changing the activationMode while the menu is visible will + result in undefined behavior. + + \deprecated Use triggerMode instead. + */ + property alias activationMode: pieMenu.triggerMode + + /*! + \qmlproperty enumeration PieMenu::triggerMode + + This property determines the method for selecting items in the menu. + + \list + \li A triggerMode of \a TriggerMode.TriggerOnPress means that menu + items will only be selected when a mouse press event occurs over them. + + \li A triggerMode of \a TriggerMode.TriggerOnRelease means that menu + items will only be selected when a mouse release event occurs over them. + This means that the user must keep the mouse button down after opening + the menu and release the mouse over the item they wish to select. + + \li A triggerMode of \a TriggerMode.TriggerOnClick means that menu + items will only be selected when the user clicks once over them. + \endlist + + \warning Changing the triggerMode while the menu is visible will + result in undefined behavior. + */ + property int triggerMode: TriggerMode.TriggerOnClick + + /*! + \qmlproperty list<MenuItem> menuItems + + The list of menu items displayed by this menu. + + You can assign menu items by declaring them as children of PieMenu: + \code + PieMenu { + MenuItem { + text: "Action 1" + onTriggered: function() { print("Action 1"); } + } + MenuItem { + text: "Action 2" + onTriggered: function() { print("Action 2"); } + } + MenuItem { + text: "Action 3" + onTriggered: function() { print("Action 3"); } + } + } + \endcode + */ + default property alias menuItems: defaultPropertyHack.menuItems + + QtObject { + // Can't specify a list as a default property (QTBUG-10822) + id: defaultPropertyHack + property list<MenuItem> menuItems + } + + /*! + \qmlproperty int PieMenu::currentIndex + + The index of the the menu item that is currently under the mouse, + or \c -1 if there is no such item. + */ + readonly property alias currentIndex: protectedScope.currentIndex + + /*! + \qmlproperty int PieMenu::currentItem + + The menu item that is currently under the mouse, or \c null if there is + no such item. + */ + readonly property alias currentItem: protectedScope.currentItem + + /*! + This property defines the text that is shown above the menu when + there is no current menu item (currentIndex is \c -1). + + The default value is \c "" (an empty string). + */ + property string title: "" + + /*! + The item which the menu must stay within. + + A typical use case for PieMenu involves: + + \list + \li A MouseArea that determines the clickable area within which the + menu can be opened. + \li The bounds that the menu must not go outside of. + \endlist + + Although they sound similar, they have different purposes. Consider the + example below: + + \image piemenu-boundingItem-example.png Canvas boundingItem example + + The user can only open the menu within the inner rectangle. In this + case, they've opened the menu on the edge of the MouseArea, but there + would not be enough room to display the entire menu centered at the + cursor position, so it was moved to the left. + + If for some reason we didn't want this restriction, we can set + boundingItem to \c null: + + \image piemenu-boundingItem-null-example.png Canvas null boundingItem example + + By default, the menu's \l {Item::}{parent} is the boundingItem. + */ + property Item boundingItem: parent + + /*! + \qmlmethod void popup(real x, real y) + + Opens the menu at coordinates \a x, \a y. + */ + function popup(x, y) { + if (x !== undefined) + pieMenu.x = x - pieMenu.width / 2; + if (y !== undefined) + pieMenu.y = y - pieMenu.height / 2; + + pieMenu.visible = true; + } + + /*! + \qmlmethod void addItem(string text) + + Adds a \a text item to the end of the menu items. + + Equivalent to passing calling \c insertItem(menuItems.length, text). + + Returns the newly added item. + */ + function addItem(text) { + return insertItem(menuItems.length, text); + } + + /*! + \qmlmethod void insertItem(int before, string text) + + Inserts a MenuItem with \a text before the index at \a before. + + To insert an item at the end, pass \c menuItems.length. + + Returns the newly inserted item, or \c null if \a before is invalid. + */ + function insertItem(before, text) { + if (before < 0 || before > menuItems.length) { + return null; + } + + var newItems = __protectedScope.copyItemsToJsArray(); + var newItem = Qt.createQmlObject("import QtQuick.Controls 1.1; MenuItem {}", pieMenu, ""); + newItem.text = text; + newItems.splice(before, 0, newItem); + + menuItems = newItems; + return newItem; + } + + /*! + \qmlmethod void removeItem(item) + + Removes \a item from the menu. + */ + function removeItem(item) { + for (var i = 0; i < menuItems.length; ++i) { + if (menuItems[i] === item) { + var newItems = __protectedScope.copyItemsToJsArray(); + + newItems.splice(i, 1); + menuItems = newItems; + break; + } + } + } + + MouseArea { + id: mouseArea + anchors.fill: parent + hoverEnabled: !Settings.hasTouchScreen && triggerMode !== TriggerMode.TriggerOnRelease + acceptedButtons: Qt.LeftButton | Qt.RightButton + onContainsMouseChanged: if (!containsMouse) __protectedScope.currentIndex = -1 + objectName: "PieMenu internal MouseArea" + + // The mouse thief also updates the selectionPos, so we can't bind to + // this mouseArea's mouseX/mouseY. + onPositionChanged: { + __protectedScope.selectionPos = Qt.point(mouseX, mouseY) + } + } + + /*! \internal */ + property alias __mouseThief: mouseThief + + CppUtils.MouseThief { + id: mouseThief + + onPressed: { + __protectedScope.selectionPos = Qt.point(mouseX, mouseY); + if (__protectedScope.handleEvent(ActivationMode.ActivateOnPress)) { + mouseThief.acceptCurrentEvent(); + // We handled the press event, so we can reset this now. + mouseThief.receivedPressEvent = false; + } + } + onReleased: { + __protectedScope.selectionPos = Qt.point(mouseX, mouseY); + if (__protectedScope.handleEvent(ActivationMode.ActivateOnRelease)) { + mouseThief.acceptCurrentEvent(); + // We handled the press event, so we can reset this now. + mouseThief.receivedPressEvent = false; + } + __protectedScope.pressedIndex = -1; + } + onClicked: { + __protectedScope.selectionPos = Qt.point(mouseX, mouseY); + if (__protectedScope.handleEvent(ActivationMode.ActivateOnClick)) { + mouseThief.acceptCurrentEvent(); + } + + // Clicked is the last stage in a click event (press, release, click), + // so we can safely set this to false now. + mouseThief.receivedPressEvent = false; + } + onTouchUpdate: __protectedScope.selectionPos = Qt.point(mouseX, mouseY) + } + + onVisibleChanged: { + // parent check is for when it's created without a parent, + // which we do in the tests, for example. + if (parent) { + if (visible) { + if (boundingItem) + __protectedScope.moveWithinBounds(); + + // We need to grab the mouse so that we can detect released() + // (which is only emitted after pressed(), which our MouseArea can't + // emit as it didn't have focus until we were made visible). + mouseThief.grabMouse(mouseArea); + } else { + mouseThief.ungrabMouse(); + __protectedScope.selectionPos = Qt.point(width / 2, height / 2); + } + } + } + onSelectionAngleChanged: __protectedScope.checkForCurrentItem() + + /*! \internal */ + property QtObject __protectedScope: QtObject { + id: protectedScope + + property int currentIndex: -1 + property MenuItem currentItem: currentIndex != -1 ? visibleItems[currentIndex] : null + property point selectionPos: Qt.point(width / 2, height / 2) + property int pressedIndex: -1 + readonly property var localRect: mapFromItem(mouseArea, mouseArea.mouseX, mouseArea.mouseY) + readonly property var visibleItems: { + var items = []; + for (var i = 0; i < menuItems.length; ++i) { + if (menuItems[i].visible) { + items.push(menuItems[i]); + } + } + return items; + } + + onSelectionPosChanged: __protectedScope.checkForCurrentItem() + + // Can't bind directly, because the menu sets this to (0, 0) on closing. + onLocalRectChanged: { + if (visible) + selectionPos = Qt.point(localRect.x, localRect.y); + } + + function copyItemsToJsArray() { + var newItems = []; + for (var j = 0; j < menuItems.length; ++j) { + newItems.push(menuItems[j]); + } + return newItems; + } + + /*! + Returns \c true if the mouse is over the section at \a itemIndex. + */ + function isMouseOver(itemIndex) { + if (__style == null) + return false; + + // Our mouse angle's origin is north naturally, but the section angles need to be + // altered to have their origin north, so we need to remove the alteration here in order to compare properly. + // For example, section 0 will start at -1.57, whereas we want it to start at 0. + var sectionStart = __protectedScope.sectionStartAngle(itemIndex) + Math.PI / 2; + var sectionEnd = __protectedScope.sectionEndAngle(itemIndex) + Math.PI / 2; + + var selAngle = selectionAngle; + var isWithinOurAngle = false; + + if (sectionStart > CppUtils.MathUtils.pi2) { + sectionStart %= CppUtils.MathUtils.pi2; + } else if (sectionStart < -CppUtils.MathUtils.pi2) { + sectionStart %= -CppUtils.MathUtils.pi2; + } + + if (sectionEnd > CppUtils.MathUtils.pi2) { + sectionEnd %= CppUtils.MathUtils.pi2; + } else if (sectionEnd < -CppUtils.MathUtils.pi2) { + sectionEnd %= -CppUtils.MathUtils.pi2; + } + + // If the section crosses the -180 => 180 wrap-around point (from atan2), + // temporarily rotate the section so it doesn't. + if (sectionStart > Math.PI) { + var difference = sectionStart - Math.PI; + selAngle -= difference; + sectionStart -= difference; + sectionEnd -= difference; + } else if (sectionStart < -Math.PI) { + difference = Math.abs(sectionStart - (-Math.PI)); + selAngle += difference; + sectionStart += difference; + sectionEnd += difference; + } + + if (sectionEnd > Math.PI) { + difference = sectionEnd - Math.PI; + selAngle -= difference; + sectionStart -= difference; + sectionEnd -= difference; + } else if (sectionEnd < -Math.PI) { + difference = Math.abs(sectionEnd - (-Math.PI)); + selAngle += difference; + sectionStart += difference; + sectionEnd += difference; + } + + // If we moved the mouse past -180 or 180, we need to move it back within, + // without changing its actual direction. + if (selAngle > Math.PI) { + selAngle = selAngle - CppUtils.MathUtils.pi2; + } else if (selAngle < -Math.PI) { + selAngle += CppUtils.MathUtils.pi2; + } + + if (sectionStart > sectionEnd) { + isWithinOurAngle = selAngle >= sectionEnd && selAngle < sectionStart; + } else { + isWithinOurAngle = selAngle >= sectionStart && selAngle < sectionEnd; + } + + var x1 = width / 2; + var y1 = height / 2; + var x2 = __protectedScope.selectionPos.x; + var y2 = __protectedScope.selectionPos.y; + var distanceFromCenter = Math.pow(x1 - x2, 2) + Math.pow(y1 - y2, 2); + var cancelRadiusSquared = __style.cancelRadius * __style.cancelRadius; + var styleRadiusSquared = __style.radius * __style.radius; + var isWithinOurRadius = distanceFromCenter >= cancelRadiusSquared + && distanceFromCenter < styleRadiusSquared; + return isWithinOurAngle && isWithinOurRadius; + } + + readonly property real arcRange: endAngleRadians - startAngleRadians + + /*! + The size of one section in radians. + */ + readonly property real sectionSize: arcRange / visibleItems.length + readonly property real startAngleRadians: CppUtils.MathUtils.degToRadOffset(__style.startAngle) + readonly property real endAngleRadians: CppUtils.MathUtils.degToRadOffset(__style.endAngle) + + readonly property real circumferenceOfFullRange: 2 * Math.PI * __style.radius + readonly property real percentageOfFullRange: (arcRange / (Math.PI * 2)) + readonly property real circumferenceOfSection: (sectionSize / arcRange) * (percentageOfFullRange * circumferenceOfFullRange) + + function sectionStartAngle(section) { + var start = startAngleRadians + section * sectionSize; + return start; + } + + function sectionCenterAngle(section) { + return (sectionStartAngle(section) + sectionEndAngle(section)) / 2; + } + + function sectionEndAngle(section) { + var end = startAngleRadians + section * sectionSize + sectionSize; + return end; + } + + function handleEvent(eventType) { + if (!visible) + return false; + + checkForCurrentItem(); + + if (eventType === TriggerMode.TriggerOnPress) + pressedIndex = currentIndex; + + if (eventType === TriggerMode.TriggerOnPress && triggerMode === TriggerMode.TriggerOnClick) { + // We *MUST* accept press events if we plan on also accepting the release + // (aka click, since we create that ourselves) event. If we don't, the + // external mouse area gets the press event but not the release event, + // and won't open until a release event is received, which means until the + // user taps twice on the external mouse area. + // Usually, we accept the current event in the onX MouseThief event handlers above, + // but there we set receivedPressEvent to false if this function says it handled + // the event, which we don't want, since TriggerOnClick is expecting to have + // received a press event. So, we ensure that receivedPressEvent stays true + // by saying we didn't handle the event, even though we actually do. + mouseThief.acceptCurrentEvent(); + return false; + } + + if (triggerMode === eventType) { + if (eventType === TriggerMode.TriggerOnClick && !mouseThief.receivedPressEvent) { + // When the trigger mode is TriggerOnClick, we can't + // act on a click event if we didn't receive the press. + return false; + } + + // Setting visible to false resets the selectionPos to the center + // of the menu, which in turn causes the currentItem check to be re-evaluated, + // which sees that there's no current item because the selectionPos is centered. + // To avoid all of that, we store these variables before setting visible to false. + var currentItemBeforeClosing = currentItem; + var selectionPosBeforeClosing = selectionPos; + var currentIndexBeforeClosing = currentIndex; + + // If the cursor was over an item; trigger it. If it wasn't, + // close our menu regardless. We do this first so that it's + // possible to keep the menu open by setting visible to true in onTriggered. + visible = false; + + if (currentItemBeforeClosing) { + currentItemBeforeClosing.trigger(); + } + + if (visible && !Settings.hasTouchScreen && !Settings.isMobile) { + // The user kept the menu open in onTriggered, so restore the hover stuff. + selectionPos = selectionPosBeforeClosing; + currentIndex = currentIndexBeforeClosing; + } + + // If the trigger mode and event are Release, we should ensure + // that we received a press event beforehand. If we didn't, we shouldn't steal + // the event in MouseThief's event filter. + return mouseThief.receivedPressEvent; + } + return false; + } + + function checkForCurrentItem() { + // Use a temporary varibable because setting currentIndex to -1 here + // will trigger onCurrentIndexChanged. + if (!!visibleItems) { + var hoveredIndex = -1; + for (var i = 0; i < visibleItems.length; ++i) { + if (isMouseOver(i)) { + hoveredIndex = i; + break; + } + } + currentIndex = hoveredIndex; + } + } + + function simplifyAngle(angle) { + var simplified = angle % 360; + if (simplified < 0) + simplified += 360; + return simplified; + } + + function isWithinBottomEdge() { + var start = simplifyAngle(pieMenu.__style.startAngle); + var end = simplifyAngle(pieMenu.__style.endAngle); + return start >= 270 && end <= 90 && ((start < 360 && end <= 360) || (start >= 0 && end > 0)); + } + + function isWithinTopEdge() { + var start = simplifyAngle(pieMenu.__style.startAngle); + var end = simplifyAngle(pieMenu.__style.endAngle); + return start >= 90 && start < 270 && end > 90 && end <= 270; + } + + function isWithinLeftEdge() { + var start = simplifyAngle(pieMenu.__style.startAngle); + var end = simplifyAngle(pieMenu.__style.endAngle); + return (start === 360 || start >= 0) && start < 180 && end > 0 && end <= 180; + } + + function isWithinRightEdge() { + var start = simplifyAngle(pieMenu.__style.startAngle); + var end = simplifyAngle(pieMenu.__style.endAngle); + return start >= 180 && start < 360 && end > 180 && (end === 360 || end === 0); + } + + /*! + Moves the menu if it would open with parts outside of \a rootParent. + */ + function moveWithinBounds() { + // Find the bounding rect of the bounding item in the parent's referential. + var topLeft = boundingItem.mapToItem(pieMenu.parent, 0, 0); + var topRight = boundingItem.mapToItem(pieMenu.parent, boundingItem.width, 0); + var bottomLeft = boundingItem.mapToItem(pieMenu.parent, 0, boundingItem.height); + var bottomRight = boundingItem.mapToItem(pieMenu.parent, boundingItem.width, boundingItem.height); + + // If the boundingItem is rotated, normalize the bounding rect. + topLeft.x = Math.min(topLeft.x, topRight.x, bottomLeft.x, bottomRight.x); + topLeft.y = Math.min(topLeft.y, topRight.y, bottomLeft.y, bottomRight.y); + bottomRight.x = Math.max(topLeft.x, topRight.x, bottomLeft.x, bottomRight.x); + bottomRight.y = Math.max(topLeft.y, topRight.y, bottomLeft.y, bottomRight.y); + + if (pieMenu.x < topLeft.x && !isWithinLeftEdge()) { + // The width and height of the menu is always that of a full circle, + // so the menu is not always outside an edge when it's outside the edge - + // it depends on the start and end angles. + pieMenu.x = topLeft.x; + } else if (pieMenu.x + pieMenu.width > bottomRight.x && !isWithinRightEdge()) { + pieMenu.x = bottomRight.x - pieMenu.width; + } + + if (pieMenu.y < topLeft.y && !isWithinTopEdge()) { + pieMenu.y = topLeft.y; + } else if (pieMenu.y + pieMenu.height > bottomRight.y && !isWithinBottomEdge()) { + pieMenu.y = bottomRight.y - pieMenu.height; + } + } + } +} diff --git a/deployment_test/QtQuick/Extras/PieMenu.qmlc b/deployment_test/QtQuick/Extras/PieMenu.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..ab5d09757c1d0eaf887531968ebeeeca7afaabf2 Binary files /dev/null and b/deployment_test/QtQuick/Extras/PieMenu.qmlc differ diff --git a/deployment_test/QtQuick/Extras/Private/CircularButton.qml b/deployment_test/QtQuick/Extras/Private/CircularButton.qml new file mode 100644 index 0000000000000000000000000000000000000000..6a147ebf070f794cb67c463f18251559b229576d --- /dev/null +++ b/deployment_test/QtQuick/Extras/Private/CircularButton.qml @@ -0,0 +1,51 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Extras module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 +import QtQuick.Controls.Private 1.0 + +/*! + \internal +*/ +Button { + id: button + style: Settings.styleComponent(Settings.style, "CircularButtonStyle.qml", button) +} diff --git a/deployment_test/QtQuick/Extras/Private/CircularButton.qmlc b/deployment_test/QtQuick/Extras/Private/CircularButton.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..9d9185627114a26b3ce3762576cbc9f3140dba24 Binary files /dev/null and b/deployment_test/QtQuick/Extras/Private/CircularButton.qmlc differ diff --git a/deployment_test/QtQuick/Extras/Private/CircularButtonStyleHelper.qml b/deployment_test/QtQuick/Extras/Private/CircularButtonStyleHelper.qml new file mode 100644 index 0000000000000000000000000000000000000000..713d727fd9c92abfd489bb2490656a50c55d87c8 --- /dev/null +++ b/deployment_test/QtQuick/Extras/Private/CircularButtonStyleHelper.qml @@ -0,0 +1,136 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Extras module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Extras 1.4 +import QtQuick.Extras.Private 1.0 + +QtObject { + id: circularButtonStyleHelper + + property Item control + + property color buttonColorUpTop: "#e3e3e3" + property color buttonColorUpBottom: "#b3b3b3" + property color buttonColorDownTop: "#d3d3d3" + property color buttonColorDownBottom: "#939393" + property color outerArcColorTop: "#9c9c9c" + property color outerArcColorBottom: Qt.rgba(0.941, 0.941, 0.941, 0.29) + property color innerArcColorTop: "#e3e3e3" + property color innerArcColorBottom: "#acacac" + property real innerArcColorBottomStop: 0.4 + property color shineColor: Qt.rgba(1, 1, 1, 0.29) + property real smallestAxis: control ? Math.min(control.width, control.height) : 0 + property real outerArcLineWidth: smallestAxis * 0.04 + property real innerArcLineWidth: Math.max(1, outerArcLineWidth * 0.1) + property real shineArcLineWidth: Math.max(1, outerArcLineWidth * 0.1) + property real implicitWidth: Math.round(TextSingleton.implicitHeight * 8) + property real implicitHeight: Math.round(TextSingleton.implicitHeight * 8) + + property color textColorUp: "#4e4e4e" + property color textColorDown: "#303030" + property color textRaisedColorUp: "#ffffff" + property color textRaisedColorDown: "#e3e3e3" + + property real radius: (smallestAxis * 0.5) - outerArcLineWidth - innerArcLineWidth + property real halfRadius: radius / 2 + property real outerArcRadius: innerArcRadius + outerArcLineWidth / 2 + property real innerArcRadius: radius + innerArcLineWidth / 2 + property real shineArcRadius: outerArcRadius + outerArcLineWidth / 2 - shineArcLineWidth / 2 + property real zeroAngle: Math.PI * 0.5 + + property color buttonColorTop: control && control.pressed ? buttonColorDownTop : buttonColorUpTop + property color buttonColorBottom: control && control.pressed ? buttonColorDownBottom : buttonColorUpBottom + + function toPixels(percentageOfSmallestAxis) { + return percentageOfSmallestAxis * smallestAxis; + } + + function paintBackground(ctx) { + ctx.reset(); + + if (outerArcRadius < 0 || radius < 0) + return; + + var xCenter = ctx.canvas.width / 2; + var yCenter = ctx.canvas.height / 2; + + /* Draw outer arc */ + ctx.beginPath(); + ctx.lineWidth = outerArcLineWidth; + ctx.arc(xCenter, yCenter, outerArcRadius, 0, Math.PI * 2, false); + var gradient = ctx.createRadialGradient(xCenter, yCenter - halfRadius, + 0, xCenter, yCenter - halfRadius, radius * 1.5); + gradient.addColorStop(0, outerArcColorTop); + gradient.addColorStop(1, outerArcColorBottom); + ctx.strokeStyle = gradient; + ctx.stroke(); + + /* Draw the shine along the bottom */ + ctx.beginPath(); + ctx.lineWidth = shineArcLineWidth; + ctx.arc(xCenter, yCenter, shineArcRadius, 0, Math.PI, false); + gradient = ctx.createLinearGradient(xCenter, yCenter + radius, xCenter, yCenter); + gradient.addColorStop(0, shineColor); + gradient.addColorStop(0.5, "rgba(255, 255, 255, 0)"); + ctx.strokeStyle = gradient; + ctx.stroke(); + + /* Draw inner arc */ + ctx.beginPath(); + ctx.lineWidth = innerArcLineWidth + 1; + ctx.arc(xCenter, yCenter, innerArcRadius, 0, Math.PI * 2, false); + gradient = ctx.createLinearGradient(xCenter, yCenter - halfRadius, + xCenter, yCenter + halfRadius); + gradient.addColorStop(0, innerArcColorTop); + gradient.addColorStop(innerArcColorBottomStop, innerArcColorBottom); + ctx.strokeStyle = gradient; + ctx.stroke(); + + /* Draw the button's body */ + ctx.beginPath(); + ctx.ellipse(xCenter - radius, yCenter - radius, radius * 2, radius * 2); + gradient = ctx.createRadialGradient(xCenter, yCenter + radius * 0.85, 0, + xCenter, yCenter + radius * 0.85, radius * (0.85 * 2)); + gradient.addColorStop(1, buttonColorTop); + gradient.addColorStop(0, buttonColorBottom); + ctx.fillStyle = gradient; + ctx.fill(); + } +} diff --git a/deployment_test/QtQuick/Extras/Private/CircularButtonStyleHelper.qmlc b/deployment_test/QtQuick/Extras/Private/CircularButtonStyleHelper.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..c9d5a931584eb5eb5e0470ff9ed8e491655faddd Binary files /dev/null and b/deployment_test/QtQuick/Extras/Private/CircularButtonStyleHelper.qmlc differ diff --git a/deployment_test/QtQuick/Extras/Private/CircularTickmarkLabel.qml b/deployment_test/QtQuick/Extras/Private/CircularTickmarkLabel.qml new file mode 100644 index 0000000000000000000000000000000000000000..997a784b8d4f0975d5b5431e9466e964a296c40e --- /dev/null +++ b/deployment_test/QtQuick/Extras/Private/CircularTickmarkLabel.qml @@ -0,0 +1,145 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Extras module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +// Workaround for QTBUG-37751; we need this import for RangeModel, although we shouldn't. +import QtQuick.Controls 1.1 +import QtQuick.Controls.Private 1.0 +import QtQuick.Extras 1.4 +import QtQuick.Extras.Private 1.0 + +Control { + id: label + style: Settings.styleComponent(Settings.style, "CircularTickmarkLabelStyle.qml", label) + + property alias minimumValue: range.minimumValue + + property alias maximumValue: range.maximumValue + + property alias stepSize: range.stepSize + + RangeModel { + id: range + minimumValue: 0 + maximumValue: 100 + stepSize: 0 + // Not used. + value: minimumValue + } + + /*! + This property determines the angle at which the first tickmark is drawn. + */ + property real minimumValueAngle: -145 + + /*! + This property determines the angle at which the last tickmark is drawn. + */ + property real maximumValueAngle: 145 + + /*! + The range between \l minimumValueAngle and \l maximumValueAngle, in + degrees. + */ + readonly property real angleRange: maximumValueAngle - minimumValueAngle + + /*! + The interval at which tickmarks are displayed. + */ + property real tickmarkStepSize: 10 + + /*! + The distance in pixels from the outside of the control (outerRadius) at + which the outermost point of the tickmark line is drawn. + */ + property real tickmarkInset: 0.0 + + /*! + The amount of tickmarks displayed. + */ + readonly property int tickmarkCount: __tickmarkCount + + /*! + The amount of minor tickmarks between each tickmark. + */ + property int minorTickmarkCount: 4 + + /*! + The distance in pixels from the outside of the control (outerRadius) at + which the outermost point of the minor tickmark line is drawn. + */ + property real minorTickmarkInset: 0.0 + + /*! + The distance in pixels from the outside of the control (outerRadius) at + which the center of the value marker text is drawn. + */ + property real labelInset: __style.__protectedScope.toPixels(0.19) + + /*! + The interval at which tickmark labels are displayed. + */ + property real labelStepSize: tickmarkStepSize + + /*! + The amount of tickmark labels displayed. + */ + readonly property int labelCount: (maximumValue - minimumValue) / labelStepSize + 1 + + /*! \internal */ + readonly property real __tickmarkCount: tickmarkStepSize > 0 ? (maximumValue - minimumValue) / tickmarkStepSize + 1 : 0 + + /*! + This property determines whether or not the control displays tickmarks, + minor tickmarks, and labels. + */ + property bool tickmarksVisible: true + + /*! + Returns \a value as an angle in degrees. + + For example, if minimumValueAngle is set to \c 270 and maximumValueAngle + is set to \c 90, this function will return \c 270 when passed + minimumValue and \c 90 when passed maximumValue. + */ + function valueToAngle(value) { + var normalised = (value - minimumValue) / (maximumValue - minimumValue); + return (maximumValueAngle - minimumValueAngle) * normalised + minimumValueAngle; + } +} diff --git a/deployment_test/QtQuick/Extras/Private/CircularTickmarkLabel.qmlc b/deployment_test/QtQuick/Extras/Private/CircularTickmarkLabel.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..1df42fb73bdd7ea03773418b298c8e52f3f3bad1 Binary files /dev/null and b/deployment_test/QtQuick/Extras/Private/CircularTickmarkLabel.qmlc differ diff --git a/deployment_test/QtQuick/Extras/Private/Handle.qml b/deployment_test/QtQuick/Extras/Private/Handle.qml new file mode 100644 index 0000000000000000000000000000000000000000..6c3fdaa60913380318324b6eb4cc21e82710cdac --- /dev/null +++ b/deployment_test/QtQuick/Extras/Private/Handle.qml @@ -0,0 +1,123 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Extras module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 +import QtGraphicalEffects 1.0 +import QtQuick.Controls.Styles 1.4 +import QtQuick.Controls.Private 1.0 +import QtQuick.Extras.Private 1.1 +import QtQuick.Extras.Private.CppUtils 1.0 + +Control { + id: root + x: handleArea.centerOfHandle.x - width / 2 + y: handleArea.centerOfHandle.y - height / 2 + + style: Settings.styleComponent(Settings.style, "HandleStyle.qml", root) + + /*! + The angle of the handle along the circumference of \l rotationRadius in + radians, scaled to be in the range of 0.0 to 1.0. + */ + property alias value: range.value + + RangeModel { + id: range + minimumValue: 0.0 + maximumValue: 1.0 + stepSize: 0 + value: minimumValue + } + + /*! + The angle in radians where the dial starts. + */ + property real zeroAngle: 0 + + /*! + The radius of the rotation of this handle. + */ + property real rotationRadius: 50 + + /*! + The center of the dial. This is the origin point for the handle's + rotation. + */ + property real dialXCenter: 0 + property real dialYCenter: 0 + + /*! + This property holds the amount of extra room added to each side of + the handle to make it easier to drag on touch devices. + */ + property real allowance: Math.max(width, height) * 1.5 + + /* + The function used to determine the handle's value from the position of + the mouse. + + Can be set to provide custom value calculation. It expects these + parameters: \c mouseX, \c mouseY, \c xCenter, \c yCenter, \c zeroAngle + */ + property var valueFromMouse: handleArea.valueFromMouse + + property alias handleArea: handleArea + + MouseArea { + id: handleArea + // Respond to value changes by calculating the new center of the handle. + property point centerOfHandle: MathUtils.centerAlongCircle(dialXCenter, dialYCenter, + 0, 0, MathUtils.valueToAngle(value, 1, zeroAngle), rotationRadius); + + anchors.fill: parent + anchors.margins: -allowance + + onPositionChanged: { + // Whenever the handle is moved with the mouse, update the value. + value = root.valueFromMouse(mouse.x + centerOfHandle.x - allowance, + mouse.y + centerOfHandle.y - allowance, dialXCenter, dialYCenter, zeroAngle); + } + + // A helper function for onPositionChanged. + function valueFromMouse(mouseX, mouseY, xCenter, yCenter, zeroAngle) { + return MathUtils.angleToValue( + MathUtils.halfPi - Math.atan2(mouseX - xCenter, mouseY - yCenter), 1, zeroAngle); + } + } +} diff --git a/deployment_test/QtQuick/Extras/Private/Handle.qmlc b/deployment_test/QtQuick/Extras/Private/Handle.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..1c10e4e44979e92b7a502ba08598e7dcaa6e4872 Binary files /dev/null and b/deployment_test/QtQuick/Extras/Private/Handle.qmlc differ diff --git a/deployment_test/QtQuick/Extras/Private/PieMenuIcon.qml b/deployment_test/QtQuick/Extras/Private/PieMenuIcon.qml new file mode 100644 index 0000000000000000000000000000000000000000..7cb57e0273e41139873f2d98cfe2ff2a8d573865 --- /dev/null +++ b/deployment_test/QtQuick/Extras/Private/PieMenuIcon.qml @@ -0,0 +1,102 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Extras module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.3 +import QtQuick.Extras 1.4 +import QtQuick.Extras.Private 1.0 +import QtQuick.Extras.Private.CppUtils 1.0 + +Loader { + id: iconLoader + active: iconSource != "" + + property PieMenu control: null + property QtObject styleData: null + + readonly property string iconSource: styleData && styleData.index < control.__protectedScope.visibleItems.length + ? control.__protectedScope.visibleItems[styleData.index].iconSource + : "" + + sourceComponent: Image { + id: iconImage + source: iconSource + x: pos.x + y: pos.y + scale: scaleFactor + + readonly property point pos: MathUtils.centerAlongCircle( + iconLoader.parent.width / 2, iconLoader.parent.height / 2, width, height, + MathUtils.degToRadOffset(sectionCenterAngle(styleData.index)), control.__style.__iconOffset) + + /* + The icons should scale with the menu at some point, so that they + stay within the bounds of each section. We down-scale the image by + whichever of the following amounts are larger: + + a) The amount by which the largest dimension's diagonal size exceeds + the "selectable" radius. The selectable radius is the distance in pixels + between lines A and B in the incredibly visually appealing image below: + + __________ + - B - + / \ + / ____ \ + | / A \ | + --------| |-------- + + b) The amount by which the diagonal exceeds the circumference of + one section. + */ + readonly property real scaleFactor: { + var largestDimension = Math.max(iconImage.sourceSize.width, iconImage.sourceSize.height) * Math.sqrt(2); + // TODO: add padding + var radiusDifference = largestDimension - control.__style.__selectableRadius; + var circumferenceDifference = largestDimension - Math.abs(control.__protectedScope.circumferenceOfSection); + if (circumferenceDifference > 0 || radiusDifference > 0) { + // We need to down-scale. + if (radiusDifference > circumferenceDifference) { + return control.__style.__selectableRadius / largestDimension; + } else { + return Math.abs(control.__protectedScope.circumferenceOfSection) / largestDimension; + } + } + return 1; + } + } +} diff --git a/deployment_test/QtQuick/Extras/Private/PieMenuIcon.qmlc b/deployment_test/QtQuick/Extras/Private/PieMenuIcon.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..66415ac7e083afd3804608b84221b732af5c9241 Binary files /dev/null and b/deployment_test/QtQuick/Extras/Private/PieMenuIcon.qmlc differ diff --git a/deployment_test/QtQuick/Extras/Private/TextSingleton.qml b/deployment_test/QtQuick/Extras/Private/TextSingleton.qml new file mode 100644 index 0000000000000000000000000000000000000000..78e9003d246eab873587d3587a555d118d65f4b2 --- /dev/null +++ b/deployment_test/QtQuick/Extras/Private/TextSingleton.qml @@ -0,0 +1,44 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Extras module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +pragma Singleton +import QtQuick 2.1 + +Text { +} diff --git a/deployment_test/QtQuick/Extras/Private/TextSingleton.qmlc b/deployment_test/QtQuick/Extras/Private/TextSingleton.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..f5dc33de9ab3f191613477463515f45615928c43 Binary files /dev/null and b/deployment_test/QtQuick/Extras/Private/TextSingleton.qmlc differ diff --git a/deployment_test/QtQuick/Extras/Private/qmldir b/deployment_test/QtQuick/Extras/Private/qmldir new file mode 100644 index 0000000000000000000000000000000000000000..3b115bba6334d79d3658a26e5ec1e3cb3d5baf40 --- /dev/null +++ b/deployment_test/QtQuick/Extras/Private/qmldir @@ -0,0 +1 @@ +module QtQuick.Extras.Private diff --git a/deployment_test/QtQuick/Extras/StatusIndicator.qml b/deployment_test/QtQuick/Extras/StatusIndicator.qml new file mode 100644 index 0000000000000000000000000000000000000000..aee171c40ba2c4826429f6e6b24c555ccd2b816a --- /dev/null +++ b/deployment_test/QtQuick/Extras/StatusIndicator.qml @@ -0,0 +1,119 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Extras module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 +import QtQuick.Controls.Private 1.0 +import QtQuick.Extras 1.4 +import QtQuick.Extras.Private 1.0 + +/*! + \qmltype StatusIndicator + \inqmlmodule QtQuick.Extras + \since 5.5 + \ingroup extras + \ingroup extras-non-interactive + \brief An indicator that displays active or inactive states. + + \image statusindicator-active.png A StatusIndicator in the active state + A StatusIndicator in the active state. + \image statusindicator-inactive.png A StatusIndicator in the inactive state + A StatusIndicator in the inactive state. + + The StatusIndicator displays active or inactive states. By using different + colors via the \l color property, StatusIndicator can provide extra + context to these states. For example: + + \table + \row + \li QML + \li Result + \row + \li + \code + import QtQuick 2.2 + import QtQuick.Extras 1.4 + + Rectangle { + width: 100 + height: 100 + color: "#cccccc" + + StatusIndicator { + anchors.centerIn: parent + color: "green" + } + } + \endcode + \li \image statusindicator-green.png "Green StatusIndicator" + \endtable + + You can create a custom appearance for a StatusIndicator by assigning a + \l {StatusIndicatorStyle}. +*/ + +Control { + id: statusIndicator + + style: Settings.styleComponent(Settings.style, "StatusIndicatorStyle.qml", statusIndicator) + + /*! + This property specifies whether the indicator is active or inactive. + + The default value is \c false (off). + + \deprecated Use active instead. + */ + property alias on: statusIndicator.active + + /*! + This property specifies whether the indicator is active or inactive. + + The default value is \c false (inactive). + */ + property bool active: false + + /*! + This property specifies the color of the indicator when it is active. + + The default value is \c "red". + */ + property color color: __style.color +} diff --git a/deployment_test/QtQuick/Extras/StatusIndicator.qmlc b/deployment_test/QtQuick/Extras/StatusIndicator.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..4469a0b7c08a92657785e832a934a601976a4bf1 Binary files /dev/null and b/deployment_test/QtQuick/Extras/StatusIndicator.qmlc differ diff --git a/deployment_test/QtQuick/Extras/ToggleButton.qml b/deployment_test/QtQuick/Extras/ToggleButton.qml new file mode 100644 index 0000000000000000000000000000000000000000..9a66741326838eca5cacce4e635276422293081b --- /dev/null +++ b/deployment_test/QtQuick/Extras/ToggleButton.qml @@ -0,0 +1,71 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Extras module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype ToggleButton + \inqmlmodule QtQuick.Extras + \since 5.5 + \ingroup extras + \ingroup extras-interactive + \brief A push button that toggles between two states. + + \image togglebutton-unchecked.png An unchecked ToggleButton + An unchecked ToggleButton. + \image togglebutton-checked.png A checked ToggleButton + A checked ToggleButton. + + The ToggleButton is a simple extension of Qt Quick Controls' Button, using + the checked property to toggle between two states: \e checked and + \e unchecked. It enhances the visibility of a checkable button's state by + placing color-coded indicators around the button. + + You can create a custom appearance for a ToggleButton by assigning a + \l {ToggleButtonStyle}. +*/ + +Button { + id: button + checkable: true + style: Settings.styleComponent(Settings.style, "ToggleButtonStyle.qml", button) +} diff --git a/deployment_test/QtQuick/Extras/ToggleButton.qmlc b/deployment_test/QtQuick/Extras/ToggleButton.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..4170602c12618a78ec3ca2b37383681cb42131d5 Binary files /dev/null and b/deployment_test/QtQuick/Extras/ToggleButton.qmlc differ diff --git a/deployment_test/QtQuick/Extras/Tumbler.qml b/deployment_test/QtQuick/Extras/Tumbler.qml new file mode 100644 index 0000000000000000000000000000000000000000..355d676b811c7de57bdeb94903215731c70376ad --- /dev/null +++ b/deployment_test/QtQuick/Extras/Tumbler.qml @@ -0,0 +1,478 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Extras module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQml 2.14 as Qml +import QtQuick 2.2 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Styles 1.4 +import QtQuick.Controls.Private 1.0 +import QtQuick.Extras 1.4 +import QtQuick.Extras.Private 1.0 +import QtQuick.Layouts 1.0 + +/*! + \qmltype Tumbler + \inqmlmodule QtQuick.Extras + \since 5.5 + \ingroup extras + \ingroup extras-interactive + \brief A control that can have several spinnable wheels, each with items + that can be selected. + + \image tumbler.png A Tumbler + + \note Tumbler requires Qt 5.5.0 or later. + + The Tumbler control is used with one or more TumblerColumn items, which + define the content of each column: + + \code + Tumbler { + TumblerColumn { + model: 5 + } + TumblerColumn { + model: [0, 1, 2, 3, 4] + } + TumblerColumn { + model: ["A", "B", "C", "D", "E"] + } + } + \endcode + + You can also use a traditional model with roles: + + \code + Rectangle { + width: 220 + height: 350 + color: "#494d53" + + ListModel { + id: listModel + + ListElement { + foo: "A" + bar: "B" + baz: "C" + } + ListElement { + foo: "A" + bar: "B" + baz: "C" + } + ListElement { + foo: "A" + bar: "B" + baz: "C" + } + } + + Tumbler { + anchors.centerIn: parent + + TumblerColumn { + model: listModel + role: "foo" + } + TumblerColumn { + model: listModel + role: "bar" + } + TumblerColumn { + model: listModel + role: "baz" + } + } + } + \endcode + + \section1 Limitations + + For technical reasons, the model count must be equal to or greater than + \l {TumblerStyle::}{visibleItemCount} + plus one. The + \l {TumblerStyle::}{visibleItemCount} + must also be an odd number. + + You can create a custom appearance for a Tumbler by assigning a + \l {TumblerStyle}. To style + individual columns, use the \l {TumblerColumn::delegate}{delegate} and + \l {TumblerColumn::highlight}{highlight} properties of TumblerColumn. +*/ + +Control { + id: tumbler + + /* + \qmlproperty Component Tumbler::style + + The style Component for this control. + */ + style: Settings.styleComponent(Settings.style, "TumblerStyle.qml", tumbler) + + ListModel { + id: columnModel + } + + /*! + \qmlproperty int Tumbler::columnCount + + The number of columns in the Tumbler. + */ + readonly property alias columnCount: columnModel.count + + /*! \internal */ + function __isValidColumnIndex(index) { + return index >= 0 && index < columnCount/* && columnRepeater.children.length === columnCount*/; + } + + /*! \internal */ + function __isValidColumnAndItemIndex(columnIndex, itemIndex) { + return __isValidColumnIndex(columnIndex) && itemIndex >= 0 && itemIndex < __viewAt(columnIndex).count; + } + + /*! + \qmlmethod int Tumbler::currentIndexAt(int columnIndex) + Returns the current index of the column at \a columnIndex, or \c null + if \a columnIndex is invalid. + */ + function currentIndexAt(columnIndex) { + if (!__isValidColumnIndex(columnIndex)) + return -1; + + return columnModel.get(columnIndex).columnObject.currentIndex; + } + + /*! + \qmlmethod void Tumbler::setCurrentIndexAt(int columnIndex, int itemIndex, int interval) + Sets the current index of the column at \a columnIndex to \a itemIndex. The animation + length can be set with \a interval, which defaults to \c 0. + + Does nothing if \a columnIndex or \a itemIndex are invalid. + */ + function setCurrentIndexAt(columnIndex, itemIndex, interval) { + if (!__isValidColumnAndItemIndex(columnIndex, itemIndex)) + return; + + var view = columnRepeater.itemAt(columnIndex).view; + if (view.currentIndex !== itemIndex) { + view.highlightMoveDuration = typeof interval !== 'undefined' ? interval : 0; + view.currentIndex = itemIndex; + view.highlightMoveDuration = Qt.binding(function(){ return __highlightMoveDuration; }); + } + } + + /*! + \qmlmethod TumblerColumn Tumbler::getColumn(int columnIndex) + Returns the column at \a columnIndex or \c null if the index is + invalid. + */ + function getColumn(columnIndex) { + if (!__isValidColumnIndex(columnIndex)) + return null; + + return columnModel.get(columnIndex).columnObject; + } + + /*! + \qmlmethod TumblerColumn Tumbler::addColumn(TumblerColumn column) + Adds a \a column and returns the added column. + + The \a column argument can be an instance of TumblerColumn, + or a \l Component. The component has to contain a TumblerColumn. + Otherwise \c null is returned. + */ + function addColumn(column) { + return insertColumn(columnCount, column); + } + + /*! + \qmlmethod TumblerColumn Tumbler::insertColumn(int index, TumblerColumn column) + Inserts a \a column at the given \a index and returns the inserted column. + + The \a column argument can be an instance of TumblerColumn, + or a \l Component. The component has to contain a TumblerColumn. + Otherwise, \c null is returned. + */ + function insertColumn(index, column) { + var object = column; + if (typeof column["createObject"] === "function") { + object = column.createObject(root); + } else if (object.__tumbler) { + console.warn("Tumbler::insertColumn(): you cannot add a column to multiple Tumblers") + return null; + } + if (index >= 0 && index <= columnCount && object.accessibleRole === Accessible.ColumnHeader) { + object.__tumbler = tumbler; + object.__index = index; + columnModel.insert(index, { columnObject: object }); + return object; + } + + if (object !== column) + object.destroy(); + console.warn("Tumbler::insertColumn(): invalid argument"); + return null; + } + + /* + Try making one selection bar by invisible highlight item hack, so that bars go across separators + */ + + Component.onCompleted: { + for (var i = 0; i < data.length; ++i) { + var column = data[i]; + if (column.accessibleRole === Accessible.ColumnHeader) + addColumn(column); + } + } + + /*! \internal */ + readonly property alias __columnRow: columnRow + /*! \internal */ + property int __highlightMoveDuration: 300 + + /*! \internal */ + function __viewAt(index) { + if (!__isValidColumnIndex(index)) + return null; + + return columnRepeater.itemAt(index).view; + } + + /*! \internal */ + readonly property alias __movementDelayTimer: movementDelayTimer + + // When the up/down arrow keys are held down on a PathView, + // the movement of the items is limited to the highlightMoveDuration, + // but there is no built-in guard against trying to move the items at + // the speed of the auto-repeat key presses. This results in sluggish + // movement, so we enforce a delay with a timer to avoid this. + Timer { + id: movementDelayTimer + interval: __highlightMoveDuration + } + + Loader { + id: backgroundLoader + sourceComponent: __style.background + anchors.fill: columnRow + } + + Loader { + id: frameLoader + sourceComponent: __style.frame + anchors.fill: columnRow + anchors.leftMargin: -__style.padding.left + anchors.rightMargin: -__style.padding.right + anchors.topMargin: -__style.padding.top + anchors.bottomMargin: -__style.padding.bottom + } + + Row { + id: columnRow + x: __style.padding.left + y: __style.padding.top + + Repeater { + id: columnRepeater + model: columnModel + delegate: Item { + id: columnItem + width: columnPathView.width + separatorDelegateLoader.width + height: columnPathView.height + + readonly property int __columnIndex: index + // For index-related functions and tests. + readonly property alias view: columnPathView + readonly property alias separator: separatorDelegateLoader.item + + PathView { + id: columnPathView + width: columnObject.width + height: tumbler.height - tumbler.__style.padding.top - tumbler.__style.padding.bottom + visible: columnObject.visible + clip: true + + Qml.Binding { + target: columnObject + property: "__currentIndex" + value: columnPathView.currentIndex + restoreMode: Binding.RestoreBinding + } + + // We add one here so that the delegate's don't just appear in the view instantly, + // but rather come from the top/bottom. To account for this adjustment elsewhere, + // we extend the path height by half an item's height at the top and bottom. + pathItemCount: tumbler.__style.visibleItemCount + 1 + preferredHighlightBegin: 0.5 + preferredHighlightEnd: 0.5 + highlightMoveDuration: tumbler.__highlightMoveDuration + highlight: Loader { + id: highlightLoader + objectName: "highlightLoader" + sourceComponent: columnObject.highlight ? columnObject.highlight : __style.highlight + width: columnPathView.width + + readonly property int __index: index + + property QtObject styleData: QtObject { + readonly property alias index: highlightLoader.__index + readonly property int column: columnItem.__columnIndex + readonly property bool activeFocus: columnPathView.activeFocus + } + } + dragMargin: width / 2 + + activeFocusOnTab: true + Keys.onDownPressed: { + if (!movementDelayTimer.running) { + columnPathView.incrementCurrentIndex(); + movementDelayTimer.start(); + } + } + Keys.onUpPressed: { + if (!movementDelayTimer.running) { + columnPathView.decrementCurrentIndex(); + movementDelayTimer.start(); + } + } + + path: Path { + startX: columnPathView.width / 2 + startY: -tumbler.__style.__delegateHeight / 2 + PathLine { + x: columnPathView.width / 2 + y: columnPathView.pathItemCount * tumbler.__style.__delegateHeight - tumbler.__style.__delegateHeight / 2 + } + } + + model: columnObject.model + + delegate: Item { + id: delegateRootItem + property var itemModel: model + + implicitWidth: itemDelegateLoader.width + implicitHeight: itemDelegateLoader.height + + Loader { + id: itemDelegateLoader + sourceComponent: columnObject.delegate ? columnObject.delegate : __style.delegate + width: columnObject.width + + onHeightChanged: tumbler.__style.__delegateHeight = height; + + property var model: itemModel + + readonly property var __modelData: modelData + readonly property int __columnDelegateIndex: index + property QtObject styleData: QtObject { + readonly property var modelData: itemDelegateLoader.__modelData + readonly property alias index: itemDelegateLoader.__columnDelegateIndex + readonly property int column: columnItem.__columnIndex + readonly property bool activeFocus: columnPathView.activeFocus + readonly property real displacement: { + var count = delegateRootItem.PathView.view.count; + var offset = delegateRootItem.PathView.view.offset; + + var d = count - index - offset; + var halfVisibleItems = Math.floor(tumbler.__style.visibleItemCount / 2) + 1; + if (d > halfVisibleItems) + d -= count; + else if (d < -halfVisibleItems) + d += count; + return d; + } + readonly property bool current: delegateRootItem.PathView.isCurrentItem + readonly property string role: columnObject.role + readonly property var value: (itemModel && itemModel.hasOwnProperty(role)) + ? itemModel[role] // Qml ListModel and QAbstractItemModel + : modelData && modelData.hasOwnProperty(role) + ? modelData[role] // QObjectList/QObject + : modelData != undefined ? modelData : "" // Models without role + } + } + } + } + + Loader { + anchors.fill: columnPathView + sourceComponent: columnObject.columnForeground ? columnObject.columnForeground : __style.columnForeground + + property QtObject styleData: QtObject { + readonly property int column: columnItem.__columnIndex + readonly property bool activeFocus: columnPathView.activeFocus + } + } + + Loader { + id: separatorDelegateLoader + objectName: "separatorDelegateLoader" + sourceComponent: __style.separator + // Don't need a separator after the last delegate. + active: __columnIndex < tumbler.columnCount - 1 + anchors.left: columnPathView.right + anchors.top: parent.top + anchors.bottom: parent.bottom + visible: columnObject.visible + + // Use the width of the first separator to help us + // determine the default separator width. + onWidthChanged: { + if (__columnIndex == 0) { + tumbler.__style.__separatorWidth = width; + } + } + + property QtObject styleData: QtObject { + readonly property int index: __columnIndex + } + } + } + } + } + + Loader { + id: foregroundLoader + sourceComponent: __style.foreground + anchors.fill: backgroundLoader + } +} diff --git a/deployment_test/QtQuick/Extras/Tumbler.qmlc b/deployment_test/QtQuick/Extras/Tumbler.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..f4629eb7e8e5ddf601c96cb1729b31557d5904af Binary files /dev/null and b/deployment_test/QtQuick/Extras/Tumbler.qmlc differ diff --git a/deployment_test/QtQuick/Extras/TumblerColumn.qml b/deployment_test/QtQuick/Extras/TumblerColumn.qml new file mode 100644 index 0000000000000000000000000000000000000000..f630a228ac0a325eaacf1811a3dfe364f5df3470 --- /dev/null +++ b/deployment_test/QtQuick/Extras/TumblerColumn.qml @@ -0,0 +1,171 @@ +/**************************************************************************** +** +** Copyright (C) 2016 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Quick Extras module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** 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 Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 3 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL3 included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 3 requirements +** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 2.0 or (at your option) the GNU General +** Public license version 3 or 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.GPL2 and 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-2.0.html and +** https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.2 +import QtQuick.Controls 1.4 +import QtQuick.Controls.Private 1.0 + +/*! + \qmltype TumblerColumn + \inqmlmodule QtQuick.Extras + \since 5.5 + \ingroup extras + \brief A column within a tumbler. + + TumblerColumn represents a column within a tumbler, providing the interface + to define the items and width of each column. + + \code + Tumbler { + TumblerColumn { + model: [1, 2, 3] + } + + TumblerColumn { + model: ["A", "B", "C"] + visible: false + } + } + \endcode + + You can create a custom appearance for a Tumbler by assigning a + \l {TumblerStyle}. +*/ + +QtObject { + id: tumblerColumn + + /*! \internal */ + property Item __tumbler: null + + /*! + \internal + + The index of this column within the tumbler. + */ + property int __index: -1 + + /*! + \internal + + The index of the current item, if the PathView has items instantiated, + or the last current index if it doesn't. + */ + property int __currentIndex: -1 + + property int accessibleRole: Accessible.ColumnHeader + + /*! + \qmlproperty int TumblerColumn::currentIndex + + This read-only property holds the index of the current item for this + column. If the model count is reduced, the current index will be + reduced to the new count minus one. + + \sa {Tumbler::currentIndexAt}, {Tumbler::setCurrentIndexAt} + */ + readonly property alias currentIndex: tumblerColumn.__currentIndex + + /*! + This property holds the model that provides data for this column. + */ + property var model: null + + /*! + This property holds the model role of this column. + */ + property string role: "" + + /*! + The item delegate for this column. + + If set, this delegate will be used to display items in this column, + instead of the + \l {TumblerStyle::}{delegate} + property in \l {TumblerStyle}. + + The \l {Item::implicitHeight}{implicitHeight} property must be set, + and it must be the same for each delegate. + */ + property Component delegate + + /*! + The highlight delegate for this column. + + If set, this highlight will be used to display the highlight in this + column, instead of the + \l {TumblerStyle::}{highlight} + property in \l {TumblerStyle}. + */ + property Component highlight + + /*! + The foreground of this column. + + If set, this component will be used to display the foreground in this + column, instead of the + \l {TumblerStyle::}{columnForeground} + property in \l {TumblerStyle}. + */ + property Component columnForeground + + /*! + This property holds the visibility of this column. + */ + property bool visible: true + + /*! + This read-only property indicates whether the item has active focus. + + See Item's \l {Item::activeFocus}{activeFocus} property for more + information. + */ + readonly property bool activeFocus: { + if (__tumbler === null) + return null; + + var view = __tumbler.__viewAt(__index); + return view && view.activeFocus ? true : false; + } + + /*! + This property holds the width of this column. + */ + property real width: TextSingleton.implicitHeight * 4 +} diff --git a/deployment_test/QtQuick/Extras/TumblerColumn.qmlc b/deployment_test/QtQuick/Extras/TumblerColumn.qmlc new file mode 100644 index 0000000000000000000000000000000000000000..c922b77cf2669b4776af2b3d0afa993bcb52acd7 Binary files /dev/null and b/deployment_test/QtQuick/Extras/TumblerColumn.qmlc differ diff --git a/deployment_test/QtQuick/Extras/plugins.qmltypes b/deployment_test/QtQuick/Extras/plugins.qmltypes new file mode 100644 index 0000000000000000000000000000000000000000..f16f0b5cf8adbd6f096732f64b3f3590118af147 --- /dev/null +++ b/deployment_test/QtQuick/Extras/plugins.qmltypes @@ -0,0 +1,657 @@ +import QtQuick.tooling 1.2 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. +// +// This file was auto-generated by: +// 'qmlplugindump -nonrelocatable QtQuick.Extras 1.4' + +Module { + dependencies: [ + "QtGraphicalEffects 1.12", + "QtQml 2.14", + "QtQml.Models 2.2", + "QtQuick 2.9", + "QtQuick.Controls 1.5", + "QtQuick.Controls.Styles 1.4", + "QtQuick.Layouts 1.1", + "QtQuick.Window 2.2" + ] + Component { + name: "QQuickActivationMode" + exports: ["QtQuick.Extras/ActivationMode 1.0"] + isCreatable: false + exportMetaObjectRevisions: [0] + Enum { + name: "ActivationMode" + values: { + "ActivateOnPress": 0, + "ActivateOnRelease": 1, + "ActivateOnClick": 2 + } + } + } + Component { + name: "QQuickCircularProgressBar" + defaultProperty: "data" + prototype: "QQuickPaintedItem" + exports: ["QtQuick.Extras.Private.CppUtils/CircularProgressBar 1.1"] + exportMetaObjectRevisions: [0] + Property { name: "progress"; type: "double" } + Property { name: "barWidth"; type: "double" } + Property { name: "inset"; type: "double" } + Property { name: "minimumValueAngle"; type: "double" } + Property { name: "maximumValueAngle"; type: "double" } + Property { name: "backgroundColor"; type: "QColor" } + Signal { + name: "progressChanged" + Parameter { name: "progress"; type: "double" } + } + Signal { + name: "barWidthChanged" + Parameter { name: "barWidth"; type: "double" } + } + Signal { + name: "insetChanged" + Parameter { name: "inset"; type: "double" } + } + Signal { + name: "minimumValueAngleChanged" + Parameter { name: "minimumValueAngle"; type: "double" } + } + Signal { + name: "maximumValueAngleChanged" + Parameter { name: "maximumValueAngle"; type: "double" } + } + Signal { + name: "backgroundColorChanged" + Parameter { name: "backgroundColor"; type: "QColor" } + } + Method { name: "clearStops" } + Method { + name: "addStop" + Parameter { name: "position"; type: "double" } + Parameter { name: "color"; type: "QColor" } + } + Method { name: "redraw" } + } + Component { + name: "QQuickFlatProgressBar" + defaultProperty: "data" + prototype: "QQuickPaintedItem" + exports: ["QtQuick.Extras.Private.CppUtils/FlatProgressBar 1.1"] + exportMetaObjectRevisions: [0] + Property { name: "stripeOffset"; type: "double" } + Property { name: "progress"; type: "double" } + Property { name: "indeterminate"; type: "bool" } + Signal { + name: "stripeOffsetChanged" + Parameter { name: "stripeOffset"; type: "double" } + } + Signal { + name: "progressChanged" + Parameter { name: "progress"; type: "double" } + } + Signal { + name: "indeterminateChanged" + Parameter { name: "indeterminate"; type: "bool" } + } + Method { name: "repaint" } + Method { name: "restartAnimation" } + Method { name: "onVisibleChanged" } + Method { name: "onWidthChanged" } + Method { name: "onHeightChanged" } + } + Component { + name: "QQuickMathUtils" + prototype: "QObject" + exports: ["QtQuick.Extras.Private.CppUtils/MathUtils 1.0"] + isCreatable: false + isSingleton: true + exportMetaObjectRevisions: [0] + Property { name: "pi2"; type: "double"; isReadonly: true } + Method { + name: "degToRad" + type: "double" + Parameter { name: "degrees"; type: "double" } + } + Method { + name: "degToRadOffset" + type: "double" + Parameter { name: "degrees"; type: "double" } + } + Method { + name: "radToDeg" + type: "double" + Parameter { name: "radians"; type: "double" } + } + Method { + name: "radToDegOffset" + type: "double" + Parameter { name: "radians"; type: "double" } + } + Method { + name: "centerAlongCircle" + type: "QPointF" + Parameter { name: "xCenter"; type: "double" } + Parameter { name: "yCenter"; type: "double" } + Parameter { name: "width"; type: "double" } + Parameter { name: "height"; type: "double" } + Parameter { name: "angleOnCircle"; type: "double" } + Parameter { name: "distanceAlongRadius"; type: "double" } + } + Method { + name: "roundEven" + type: "double" + Parameter { name: "number"; type: "double" } + } + } + Component { + name: "QQuickMouseThief" + prototype: "QObject" + exports: ["QtQuick.Extras.Private.CppUtils/MouseThief 1.0"] + exportMetaObjectRevisions: [0] + Property { name: "receivedPressEvent"; type: "bool" } + Signal { + name: "pressed" + Parameter { name: "mouseX"; type: "int" } + Parameter { name: "mouseY"; type: "int" } + } + Signal { + name: "released" + Parameter { name: "mouseX"; type: "int" } + Parameter { name: "mouseY"; type: "int" } + } + Signal { + name: "clicked" + Parameter { name: "mouseX"; type: "int" } + Parameter { name: "mouseY"; type: "int" } + } + Signal { + name: "touchUpdate" + Parameter { name: "mouseX"; type: "int" } + Parameter { name: "mouseY"; type: "int" } + } + Signal { name: "handledEventChanged" } + Method { + name: "grabMouse" + Parameter { name: "item"; type: "QQuickItem"; isPointer: true } + } + Method { name: "ungrabMouse" } + Method { name: "acceptCurrentEvent" } + } + Component { + name: "QQuickPicture" + defaultProperty: "data" + prototype: "QQuickPaintedItem" + exports: ["QtQuick.Extras/Picture 1.4"] + exportMetaObjectRevisions: [0] + Property { name: "source"; type: "QUrl" } + Property { name: "color"; type: "QColor" } + } + Component { + name: "QQuickTriggerMode" + exports: ["QtQuick.Extras/TriggerMode 1.3"] + isCreatable: false + exportMetaObjectRevisions: [0] + Enum { + name: "TriggerMode" + values: { + "TriggerOnPress": 0, + "TriggerOnRelease": 1, + "TriggerOnClick": 2 + } + } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Extras.Private/CircularButton 1.0" + exports: ["QtQuick.Extras.Private/CircularButton 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "isDefault"; type: "bool" } + Property { name: "menu"; type: "Menu_QMLTYPE_38"; isPointer: true } + Property { name: "checkable"; type: "bool" } + Property { name: "checked"; type: "bool" } + Property { name: "exclusiveGroup"; type: "QQuickExclusiveGroup1"; isPointer: true } + Property { name: "action"; type: "QQuickAction1"; isPointer: true } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "text"; type: "string" } + Property { name: "tooltip"; type: "string" } + Property { name: "iconSource"; type: "QUrl" } + Property { name: "iconName"; type: "string" } + Property { name: "__position"; type: "string" } + Property { name: "__iconOverriden"; type: "bool"; isReadonly: true } + Property { name: "__action"; type: "QQuickAction1"; isPointer: true } + Property { name: "__iconAction"; type: "QQuickAction1"; isReadonly: true; isPointer: true } + Property { name: "__behavior"; type: "QVariant" } + Property { name: "__effectivePressed"; type: "bool" } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Signal { name: "clicked" } + Method { name: "accessiblePressAction"; type: "QVariant" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QObject" + name: "QtQuick.Extras.Private/CircularButtonStyleHelper 1.0" + exports: ["QtQuick.Extras.Private/CircularButtonStyleHelper 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + Property { name: "control"; type: "QQuickItem"; isPointer: true } + Property { name: "buttonColorUpTop"; type: "QColor" } + Property { name: "buttonColorUpBottom"; type: "QColor" } + Property { name: "buttonColorDownTop"; type: "QColor" } + Property { name: "buttonColorDownBottom"; type: "QColor" } + Property { name: "outerArcColorTop"; type: "QColor" } + Property { name: "outerArcColorBottom"; type: "QColor" } + Property { name: "innerArcColorTop"; type: "QColor" } + Property { name: "innerArcColorBottom"; type: "QColor" } + Property { name: "innerArcColorBottomStop"; type: "double" } + Property { name: "shineColor"; type: "QColor" } + Property { name: "smallestAxis"; type: "double" } + Property { name: "outerArcLineWidth"; type: "double" } + Property { name: "innerArcLineWidth"; type: "double" } + Property { name: "shineArcLineWidth"; type: "double" } + Property { name: "implicitWidth"; type: "double" } + Property { name: "implicitHeight"; type: "double" } + Property { name: "textColorUp"; type: "QColor" } + Property { name: "textColorDown"; type: "QColor" } + Property { name: "textRaisedColorUp"; type: "QColor" } + Property { name: "textRaisedColorDown"; type: "QColor" } + Property { name: "radius"; type: "double" } + Property { name: "halfRadius"; type: "double" } + Property { name: "outerArcRadius"; type: "double" } + Property { name: "innerArcRadius"; type: "double" } + Property { name: "shineArcRadius"; type: "double" } + Property { name: "zeroAngle"; type: "double" } + Property { name: "buttonColorTop"; type: "QColor" } + Property { name: "buttonColorBottom"; type: "QColor" } + Method { + name: "toPixels" + type: "QVariant" + Parameter { name: "percentageOfSmallestAxis"; type: "QVariant" } + } + Method { + name: "paintBackground" + type: "QVariant" + Parameter { name: "ctx"; type: "QVariant" } + } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Extras/CircularGauge 1.0" + exports: ["QtQuick.Extras/CircularGauge 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "tickmarksVisible"; type: "bool" } + Property { name: "minimumValue"; type: "double" } + Property { name: "maximumValue"; type: "double" } + Property { name: "value"; type: "double" } + Property { name: "stepSize"; type: "double" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Extras.Private/CircularTickmarkLabel 1.0" + exports: ["QtQuick.Extras.Private/CircularTickmarkLabel 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "minimumValueAngle"; type: "double" } + Property { name: "maximumValueAngle"; type: "double" } + Property { name: "angleRange"; type: "double"; isReadonly: true } + Property { name: "tickmarkStepSize"; type: "double" } + Property { name: "tickmarkInset"; type: "double" } + Property { name: "tickmarkCount"; type: "int"; isReadonly: true } + Property { name: "minorTickmarkCount"; type: "int" } + Property { name: "minorTickmarkInset"; type: "double" } + Property { name: "labelInset"; type: "double" } + Property { name: "labelStepSize"; type: "double" } + Property { name: "labelCount"; type: "int"; isReadonly: true } + Property { name: "__tickmarkCount"; type: "double"; isReadonly: true } + Property { name: "tickmarksVisible"; type: "bool" } + Property { name: "minimumValue"; type: "double" } + Property { name: "maximumValue"; type: "double" } + Property { name: "stepSize"; type: "double" } + Method { + name: "valueToAngle" + type: "QVariant" + Parameter { name: "value"; type: "QVariant" } + } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Extras/DelayButton 1.0" + exports: ["QtQuick.Extras/DelayButton 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "delay"; type: "int" } + Property { name: "__progress"; type: "double" } + Property { name: "progress"; type: "double"; isReadonly: true } + Signal { name: "activated" } + Property { name: "isDefault"; type: "bool" } + Property { name: "menu"; type: "Menu_QMLTYPE_38"; isPointer: true } + Property { name: "checkable"; type: "bool" } + Property { name: "checked"; type: "bool" } + Property { name: "exclusiveGroup"; type: "QQuickExclusiveGroup1"; isPointer: true } + Property { name: "action"; type: "QQuickAction1"; isPointer: true } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "text"; type: "string" } + Property { name: "tooltip"; type: "string" } + Property { name: "iconSource"; type: "QUrl" } + Property { name: "iconName"; type: "string" } + Property { name: "__position"; type: "string" } + Property { name: "__iconOverriden"; type: "bool"; isReadonly: true } + Property { name: "__action"; type: "QQuickAction1"; isPointer: true } + Property { name: "__iconAction"; type: "QQuickAction1"; isReadonly: true; isPointer: true } + Property { name: "__behavior"; type: "QVariant" } + Property { name: "__effectivePressed"; type: "bool" } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Signal { name: "clicked" } + Method { name: "accessiblePressAction"; type: "QVariant" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Extras/Dial 1.0" + exports: ["QtQuick.Extras/Dial 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "__wrap"; type: "bool" } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "tickmarksVisible"; type: "bool" } + Property { name: "value"; type: "double" } + Property { name: "minimumValue"; type: "double" } + Property { name: "maximumValue"; type: "double" } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Property { name: "stepSize"; type: "double" } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Extras/Dial 1.1" + exports: ["QtQuick.Extras/Dial 1.1"] + exportMetaObjectRevisions: [1] + isComposite: true + defaultProperty: "data" + Property { name: "__wrap"; type: "bool" } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "tickmarksVisible"; type: "bool" } + Property { name: "value"; type: "double" } + Property { name: "minimumValue"; type: "double" } + Property { name: "maximumValue"; type: "double" } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Property { name: "stepSize"; type: "double" } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Extras/Gauge 1.0" + exports: ["QtQuick.Extras/Gauge 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "orientation"; type: "int" } + Property { name: "tickmarkAlignment"; type: "int" } + Property { name: "__tickmarkAlignment"; type: "int" } + Property { name: "__tickmarksInside"; type: "bool" } + Property { name: "tickmarkStepSize"; type: "double" } + Property { name: "minorTickmarkCount"; type: "int" } + Property { name: "formatValue"; type: "QVariant" } + Property { name: "minimumValue"; type: "double" } + Property { name: "value"; type: "double" } + Property { name: "maximumValue"; type: "double" } + Property { name: "font"; type: "QFont" } + Property { name: "__hiddenText"; type: "QQuickText"; isReadonly: true; isPointer: true } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Extras/PieMenu 1.0" + exports: ["QtQuick.Extras/PieMenu 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "menuItems" + Property { name: "selectionAngle"; type: "double"; isReadonly: true } + Property { name: "triggerMode"; type: "int" } + Property { name: "title"; type: "string" } + Property { name: "boundingItem"; type: "QQuickItem"; isPointer: true } + Property { name: "__protectedScope"; type: "QObject"; isPointer: true } + Property { name: "activationMode"; type: "int" } + Property { name: "menuItems"; type: "QQuickMenuItem1"; isList: true; isReadonly: true } + Property { name: "currentIndex"; type: "int"; isReadonly: true } + Property { name: "currentItem"; type: "QQuickMenuItem1"; isReadonly: true; isPointer: true } + Property { name: "__mouseThief"; type: "QQuickMouseThief"; isReadonly: true; isPointer: true } + Method { + name: "popup" + type: "QVariant" + Parameter { name: "x"; type: "QVariant" } + Parameter { name: "y"; type: "QVariant" } + } + Method { + name: "addItem" + type: "QVariant" + Parameter { name: "text"; type: "QVariant" } + } + Method { + name: "insertItem" + type: "QVariant" + Parameter { name: "before"; type: "QVariant" } + Parameter { name: "text"; type: "QVariant" } + } + Method { + name: "removeItem" + type: "QVariant" + Parameter { name: "item"; type: "QVariant" } + } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickLoader" + name: "QtQuick.Extras.Private/PieMenuIcon 1.0" + exports: ["QtQuick.Extras.Private/PieMenuIcon 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "control"; type: "PieMenu_QMLTYPE_98"; isPointer: true } + Property { name: "styleData"; type: "QObject"; isPointer: true } + Property { name: "iconSource"; type: "string"; isReadonly: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Extras/StatusIndicator 1.0" + exports: ["QtQuick.Extras/StatusIndicator 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "active"; type: "bool" } + Property { name: "color"; type: "QColor" } + Property { name: "on"; type: "bool" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Extras/StatusIndicator 1.1" + exports: ["QtQuick.Extras/StatusIndicator 1.1"] + exportMetaObjectRevisions: [1] + isComposite: true + defaultProperty: "data" + Property { name: "active"; type: "bool" } + Property { name: "color"; type: "QColor" } + Property { name: "on"; type: "bool" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickText" + name: "QtQuick.Extras.Private/TextSingleton 1.0" + exports: ["QtQuick.Extras.Private/TextSingleton 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + isCreatable: false + isSingleton: true + defaultProperty: "data" + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Extras/ToggleButton 1.0" + exports: ["QtQuick.Extras/ToggleButton 1.0"] + exportMetaObjectRevisions: [0] + isComposite: true + defaultProperty: "data" + Property { name: "isDefault"; type: "bool" } + Property { name: "menu"; type: "Menu_QMLTYPE_38"; isPointer: true } + Property { name: "checkable"; type: "bool" } + Property { name: "checked"; type: "bool" } + Property { name: "exclusiveGroup"; type: "QQuickExclusiveGroup1"; isPointer: true } + Property { name: "action"; type: "QQuickAction1"; isPointer: true } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "text"; type: "string" } + Property { name: "tooltip"; type: "string" } + Property { name: "iconSource"; type: "QUrl" } + Property { name: "iconName"; type: "string" } + Property { name: "__position"; type: "string" } + Property { name: "__iconOverriden"; type: "bool"; isReadonly: true } + Property { name: "__action"; type: "QQuickAction1"; isPointer: true } + Property { name: "__iconAction"; type: "QQuickAction1"; isReadonly: true; isPointer: true } + Property { name: "__behavior"; type: "QVariant" } + Property { name: "__effectivePressed"; type: "bool" } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Signal { name: "clicked" } + Method { name: "accessiblePressAction"; type: "QVariant" } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QQuickFocusScope" + name: "QtQuick.Extras/Tumbler 1.2" + exports: ["QtQuick.Extras/Tumbler 1.2"] + exportMetaObjectRevisions: [2] + isComposite: true + defaultProperty: "data" + Property { name: "__highlightMoveDuration"; type: "int" } + Property { name: "columnCount"; type: "int"; isReadonly: true } + Property { name: "__columnRow"; type: "QQuickRow"; isReadonly: true; isPointer: true } + Property { name: "__movementDelayTimer"; type: "QQmlTimer"; isReadonly: true; isPointer: true } + Method { + name: "__isValidColumnIndex" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Method { + name: "__isValidColumnAndItemIndex" + type: "QVariant" + Parameter { name: "columnIndex"; type: "QVariant" } + Parameter { name: "itemIndex"; type: "QVariant" } + } + Method { + name: "currentIndexAt" + type: "QVariant" + Parameter { name: "columnIndex"; type: "QVariant" } + } + Method { + name: "setCurrentIndexAt" + type: "QVariant" + Parameter { name: "columnIndex"; type: "QVariant" } + Parameter { name: "itemIndex"; type: "QVariant" } + Parameter { name: "interval"; type: "QVariant" } + } + Method { + name: "getColumn" + type: "QVariant" + Parameter { name: "columnIndex"; type: "QVariant" } + } + Method { + name: "addColumn" + type: "QVariant" + Parameter { name: "column"; type: "QVariant" } + } + Method { + name: "insertColumn" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + Parameter { name: "column"; type: "QVariant" } + } + Method { + name: "__viewAt" + type: "QVariant" + Parameter { name: "index"; type: "QVariant" } + } + Property { name: "style"; type: "QQmlComponent"; isPointer: true } + Property { name: "__style"; type: "QObject"; isPointer: true } + Property { name: "__panel"; type: "QQuickItem"; isPointer: true } + Property { name: "styleHints"; type: "QVariant" } + Property { name: "__styleData"; type: "QObject"; isPointer: true } + } + Component { + prototype: "QObject" + name: "QtQuick.Extras/TumblerColumn 1.2" + exports: ["QtQuick.Extras/TumblerColumn 1.2"] + exportMetaObjectRevisions: [2] + isComposite: true + Property { name: "__tumbler"; type: "QQuickItem"; isPointer: true } + Property { name: "__index"; type: "int" } + Property { name: "__currentIndex"; type: "int" } + Property { name: "model"; type: "QVariant" } + Property { name: "role"; type: "string" } + Property { name: "delegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "highlight"; type: "QQmlComponent"; isPointer: true } + Property { name: "columnForeground"; type: "QQmlComponent"; isPointer: true } + Property { name: "visible"; type: "bool" } + Property { name: "activeFocus"; type: "bool"; isReadonly: true } + Property { name: "width"; type: "double" } + Property { name: "currentIndex"; type: "int"; isReadonly: true } + } +} diff --git a/deployment_test/QtQuick/Extras/qmldir b/deployment_test/QtQuick/Extras/qmldir new file mode 100644 index 0000000000000000000000000000000000000000..0cac6a550d5ce1b412eb0606953a5b7b6a46b04f --- /dev/null +++ b/deployment_test/QtQuick/Extras/qmldir @@ -0,0 +1,7 @@ +module QtQuick.Extras +plugin qtquickextrasplugin +classname QtQuickExtrasPlugin +#typeinfo plugins.qmltypes + +depends QtGraphicalEffects 1.0 +depends QtQml 2.14 diff --git a/deployment_test/QtQuick/Extras/qtquickextrasplugin.dll b/deployment_test/QtQuick/Extras/qtquickextrasplugin.dll new file mode 100644 index 0000000000000000000000000000000000000000..94e067aac6de682d951408f60f8d8f4e2aa1cffd Binary files /dev/null and b/deployment_test/QtQuick/Extras/qtquickextrasplugin.dll differ diff --git a/deployment_test/QtQuick/Layouts/plugins.qmltypes b/deployment_test/QtQuick/Layouts/plugins.qmltypes new file mode 100644 index 0000000000000000000000000000000000000000..d3f778d2ea161726fdc7f1c44c75c1ba7616be32 --- /dev/null +++ b/deployment_test/QtQuick/Layouts/plugins.qmltypes @@ -0,0 +1,130 @@ +import QtQuick.tooling 1.2 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. +// +// This file was auto-generated by qmltyperegistrar. + +Module { + dependencies: ["QtQuick 2.0"] + Component { + file: "qquicklinearlayout_p.h" + name: "QQuickColumnLayout" + prototype: "QQuickLinearLayout" + exports: [ + "QtQuick.Layouts/ColumnLayout 1.0", + "QtQuick.Layouts/ColumnLayout 1.1", + "QtQuick.Layouts/ColumnLayout 1.11", + "QtQuick.Layouts/ColumnLayout 1.4", + "QtQuick.Layouts/ColumnLayout 1.7" + ] + exportMetaObjectRevisions: [0, 1, 11, 4, 7] + } + Component { + file: "qquicklinearlayout_p.h" + name: "QQuickGridLayout" + prototype: "QQuickGridLayoutBase" + exports: [ + "QtQuick.Layouts/GridLayout 1.0", + "QtQuick.Layouts/GridLayout 1.1", + "QtQuick.Layouts/GridLayout 1.11", + "QtQuick.Layouts/GridLayout 1.4", + "QtQuick.Layouts/GridLayout 1.7" + ] + exportMetaObjectRevisions: [0, 1, 11, 4, 7] + Enum { + name: "Flow" + values: ["LeftToRight", "TopToBottom"] + } + Property { name: "columnSpacing"; type: "double" } + Property { name: "rowSpacing"; type: "double" } + Property { name: "columns"; type: "int" } + Property { name: "rows"; type: "int" } + Property { name: "flow"; type: "Flow" } + } + Component { + file: "qquicklinearlayout_p.h" + name: "QQuickGridLayoutBase" + prototype: "QQuickLayout" + Property { name: "layoutDirection"; revision: 1; type: "Qt::LayoutDirection" } + Signal { name: "layoutDirectionChanged"; revision: 1 } + } + Component { + file: "qquicklayout_p.h" + name: "QQuickLayout" + defaultProperty: "data" + prototype: "QQuickItem" + exports: [ + "QtQuick.Layouts/Layout 1.0", + "QtQuick.Layouts/Layout 1.1", + "QtQuick.Layouts/Layout 1.11", + "QtQuick.Layouts/Layout 1.4", + "QtQuick.Layouts/Layout 1.7" + ] + isCreatable: false + exportMetaObjectRevisions: [0, 1, 11, 4, 7] + attachedType: "QQuickLayoutAttached" + Method { name: "invalidateSenderItem" } + Method { name: "_q_dumpLayoutTree" } + } + Component { + name: "QQuickLayoutAttached" + prototype: "QObject" + Property { name: "minimumWidth"; type: "double" } + Property { name: "minimumHeight"; type: "double" } + Property { name: "preferredWidth"; type: "double" } + Property { name: "preferredHeight"; type: "double" } + Property { name: "maximumWidth"; type: "double" } + Property { name: "maximumHeight"; type: "double" } + Property { name: "fillHeight"; type: "bool" } + Property { name: "fillWidth"; type: "bool" } + Property { name: "row"; type: "int" } + Property { name: "column"; type: "int" } + Property { name: "rowSpan"; type: "int" } + Property { name: "columnSpan"; type: "int" } + Property { name: "alignment"; type: "Qt::Alignment" } + Property { name: "margins"; type: "double" } + Property { name: "leftMargin"; type: "double" } + Property { name: "topMargin"; type: "double" } + Property { name: "rightMargin"; type: "double" } + Property { name: "bottomMargin"; type: "double" } + } + Component { + file: "qquicklinearlayout_p.h" + name: "QQuickLinearLayout" + prototype: "QQuickGridLayoutBase" + Property { name: "spacing"; type: "double" } + } + Component { + file: "qquicklinearlayout_p.h" + name: "QQuickRowLayout" + prototype: "QQuickLinearLayout" + exports: [ + "QtQuick.Layouts/RowLayout 1.0", + "QtQuick.Layouts/RowLayout 1.1", + "QtQuick.Layouts/RowLayout 1.11", + "QtQuick.Layouts/RowLayout 1.4", + "QtQuick.Layouts/RowLayout 1.7" + ] + exportMetaObjectRevisions: [0, 1, 11, 4, 7] + } + Component { + file: "qquickstacklayout_p.h" + name: "QQuickStackLayout" + prototype: "QQuickLayout" + exports: [ + "QtQuick.Layouts/StackLayout 1.11", + "QtQuick.Layouts/StackLayout 1.3", + "QtQuick.Layouts/StackLayout 1.4", + "QtQuick.Layouts/StackLayout 1.7" + ] + exportMetaObjectRevisions: [11, 3, 4, 7] + Property { name: "count"; type: "int"; isReadonly: true } + Property { name: "currentIndex"; type: "int" } + Method { + name: "itemAt" + type: "QQuickItem*" + Parameter { name: "index"; type: "int" } + } + } +} diff --git a/deployment_test/QtQuick/Layouts/qmldir b/deployment_test/QtQuick/Layouts/qmldir new file mode 100644 index 0000000000000000000000000000000000000000..00f85f7d64bc964d117bc3cb2f77bca248ee33ac --- /dev/null +++ b/deployment_test/QtQuick/Layouts/qmldir @@ -0,0 +1,5 @@ +module QtQuick.Layouts +plugin qquicklayoutsplugin +classname QtQuickLayoutsPlugin +typeinfo plugins.qmltypes +designersupported diff --git a/deployment_test/QtQuick/Layouts/qquicklayoutsplugin.dll b/deployment_test/QtQuick/Layouts/qquicklayoutsplugin.dll new file mode 100644 index 0000000000000000000000000000000000000000..19010b5444c27224a4bdf9ae23013dcb5ff70a1c Binary files /dev/null and b/deployment_test/QtQuick/Layouts/qquicklayoutsplugin.dll differ diff --git a/deployment_test/QtQuick/Templates.2/plugins.qmltypes b/deployment_test/QtQuick/Templates.2/plugins.qmltypes new file mode 100644 index 0000000000000000000000000000000000000000..42c04c801f4c4930e7756b7ae26e2be4958f56d7 --- /dev/null +++ b/deployment_test/QtQuick/Templates.2/plugins.qmltypes @@ -0,0 +1,3122 @@ +import QtQuick.tooling 1.2 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. +// +// This file was auto-generated by: +// 'qmlplugindump -nonrelocatable -dependencies dependencies.json QtQuick.Templates 2.15' + +Module { + dependencies: ["QtQuick 2.9", "QtQuick.Window 2.2"] + Component { + name: "QQuickAbstractButton" + defaultProperty: "data" + prototype: "QQuickControl" + exports: [ + "QtQuick.Templates/AbstractButton 2.0", + "QtQuick.Templates/AbstractButton 2.2", + "QtQuick.Templates/AbstractButton 2.3", + "QtQuick.Templates/AbstractButton 2.4", + "QtQuick.Templates/AbstractButton 2.5" + ] + exportMetaObjectRevisions: [0, 2, 3, 4, 5] + Enum { + name: "Display" + values: { + "IconOnly": 0, + "TextOnly": 1, + "TextBesideIcon": 2, + "TextUnderIcon": 3 + } + } + Property { name: "text"; type: "string" } + Property { name: "down"; type: "bool" } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "checked"; type: "bool" } + Property { name: "checkable"; type: "bool" } + Property { name: "autoExclusive"; type: "bool" } + Property { name: "autoRepeat"; type: "bool" } + Property { name: "indicator"; type: "QQuickItem"; isPointer: true } + Property { name: "icon"; revision: 3; type: "QQuickIcon" } + Property { name: "display"; revision: 3; type: "Display" } + Property { name: "action"; revision: 3; type: "QQuickAction"; isPointer: true } + Property { name: "autoRepeatDelay"; revision: 4; type: "int" } + Property { name: "autoRepeatInterval"; revision: 4; type: "int" } + Property { name: "pressX"; revision: 4; type: "double"; isReadonly: true } + Property { name: "pressY"; revision: 4; type: "double"; isReadonly: true } + Property { name: "implicitIndicatorWidth"; revision: 5; type: "double"; isReadonly: true } + Property { name: "implicitIndicatorHeight"; revision: 5; type: "double"; isReadonly: true } + Signal { name: "pressed" } + Signal { name: "released" } + Signal { name: "canceled" } + Signal { name: "clicked" } + Signal { name: "pressAndHold" } + Signal { name: "doubleClicked" } + Signal { name: "toggled"; revision: 2 } + Signal { name: "iconChanged"; revision: 3 } + Signal { name: "displayChanged"; revision: 3 } + Signal { name: "actionChanged"; revision: 3 } + Signal { name: "autoRepeatDelayChanged"; revision: 4 } + Signal { name: "autoRepeatIntervalChanged"; revision: 4 } + Signal { name: "pressXChanged"; revision: 4 } + Signal { name: "pressYChanged"; revision: 4 } + Signal { name: "implicitIndicatorWidthChanged"; revision: 5 } + Signal { name: "implicitIndicatorHeightChanged"; revision: 5 } + Method { name: "toggle" } + } + Component { + name: "QQuickAction" + prototype: "QObject" + exports: ["QtQuick.Templates/Action 2.3"] + exportMetaObjectRevisions: [0] + Property { name: "text"; type: "string" } + Property { name: "icon"; type: "QQuickIcon" } + Property { name: "enabled"; type: "bool" } + Property { name: "checked"; type: "bool" } + Property { name: "checkable"; type: "bool" } + Property { name: "shortcut"; type: "QVariant" } + Signal { + name: "textChanged" + Parameter { name: "text"; type: "string" } + } + Signal { + name: "iconChanged" + Parameter { name: "icon"; type: "QQuickIcon" } + } + Signal { + name: "enabledChanged" + Parameter { name: "enabled"; type: "bool" } + } + Signal { + name: "checkedChanged" + Parameter { name: "checked"; type: "bool" } + } + Signal { + name: "checkableChanged" + Parameter { name: "checkable"; type: "bool" } + } + Signal { + name: "shortcutChanged" + Parameter { name: "shortcut"; type: "QKeySequence" } + } + Signal { + name: "toggled" + Parameter { name: "source"; type: "QObject"; isPointer: true } + } + Signal { name: "toggled" } + Signal { + name: "triggered" + Parameter { name: "source"; type: "QObject"; isPointer: true } + } + Signal { name: "triggered" } + Method { + name: "toggle" + Parameter { name: "source"; type: "QObject"; isPointer: true } + } + Method { name: "toggle" } + Method { + name: "trigger" + Parameter { name: "source"; type: "QObject"; isPointer: true } + } + Method { name: "trigger" } + } + Component { + name: "QQuickActionGroup" + defaultProperty: "actions" + prototype: "QObject" + exports: ["QtQuick.Templates/ActionGroup 2.3"] + exportMetaObjectRevisions: [0] + attachedType: "QQuickActionGroupAttached" + Property { name: "checkedAction"; type: "QQuickAction"; isPointer: true } + Property { name: "actions"; type: "QQuickAction"; isList: true; isReadonly: true } + Property { name: "exclusive"; type: "bool" } + Property { name: "enabled"; type: "bool" } + Signal { + name: "triggered" + Parameter { name: "action"; type: "QQuickAction"; isPointer: true } + } + Method { + name: "addAction" + Parameter { name: "action"; type: "QQuickAction"; isPointer: true } + } + Method { + name: "removeAction" + Parameter { name: "action"; type: "QQuickAction"; isPointer: true } + } + } + Component { + name: "QQuickActionGroupAttached" + prototype: "QObject" + Property { name: "group"; type: "QQuickActionGroup"; isPointer: true } + } + Component { + name: "QQuickApplicationWindow" + defaultProperty: "contentData" + prototype: "QQuickWindowQmlImpl" + exports: [ + "QtQuick.Templates/ApplicationWindow 2.0", + "QtQuick.Templates/ApplicationWindow 2.3" + ] + exportMetaObjectRevisions: [0, 3] + attachedType: "QQuickApplicationWindowAttached" + Property { name: "background"; type: "QQuickItem"; isPointer: true } + Property { name: "contentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "contentData"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "activeFocusControl"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "header"; type: "QQuickItem"; isPointer: true } + Property { name: "footer"; type: "QQuickItem"; isPointer: true } + Property { name: "overlay"; type: "QQuickOverlay"; isReadonly: true; isPointer: true } + Property { name: "font"; type: "QFont" } + Property { name: "locale"; type: "QLocale" } + Property { name: "palette"; revision: 3; type: "QPalette" } + Property { name: "menuBar"; revision: 3; type: "QQuickItem"; isPointer: true } + Signal { name: "paletteChanged"; revision: 3 } + Signal { name: "menuBarChanged"; revision: 3 } + } + Component { + name: "QQuickApplicationWindowAttached" + prototype: "QObject" + Property { name: "window"; type: "QQuickApplicationWindow"; isReadonly: true; isPointer: true } + Property { name: "contentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "activeFocusControl"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "header"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "footer"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "overlay"; type: "QQuickOverlay"; isReadonly: true; isPointer: true } + Property { name: "menuBar"; type: "QQuickItem"; isReadonly: true; isPointer: true } + } + Component { + name: "QQuickBusyIndicator" + defaultProperty: "data" + prototype: "QQuickControl" + exports: ["QtQuick.Templates/BusyIndicator 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "running"; type: "bool" } + } + Component { + name: "QQuickButton" + defaultProperty: "data" + prototype: "QQuickAbstractButton" + exports: ["QtQuick.Templates/Button 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "highlighted"; type: "bool" } + Property { name: "flat"; type: "bool" } + } + Component { + name: "QQuickButtonGroup" + prototype: "QObject" + exports: [ + "QtQuick.Templates/ButtonGroup 2.0", + "QtQuick.Templates/ButtonGroup 2.1", + "QtQuick.Templates/ButtonGroup 2.3", + "QtQuick.Templates/ButtonGroup 2.4" + ] + exportMetaObjectRevisions: [0, 1, 3, 4] + attachedType: "QQuickButtonGroupAttached" + Property { name: "checkedButton"; type: "QQuickAbstractButton"; isPointer: true } + Property { name: "buttons"; type: "QQuickAbstractButton"; isList: true; isReadonly: true } + Property { name: "exclusive"; revision: 3; type: "bool" } + Property { name: "checkState"; revision: 4; type: "Qt::CheckState" } + Signal { + name: "clicked" + revision: 1 + Parameter { name: "button"; type: "QQuickAbstractButton"; isPointer: true } + } + Signal { name: "exclusiveChanged"; revision: 3 } + Signal { name: "checkStateChanged"; revision: 4 } + Method { + name: "addButton" + Parameter { name: "button"; type: "QQuickAbstractButton"; isPointer: true } + } + Method { + name: "removeButton" + Parameter { name: "button"; type: "QQuickAbstractButton"; isPointer: true } + } + } + Component { + name: "QQuickButtonGroupAttached" + prototype: "QObject" + Property { name: "group"; type: "QQuickButtonGroup"; isPointer: true } + } + Component { + name: "QQuickCheckBox" + defaultProperty: "data" + prototype: "QQuickAbstractButton" + exports: [ + "QtQuick.Templates/CheckBox 2.0", + "QtQuick.Templates/CheckBox 2.4" + ] + exportMetaObjectRevisions: [0, 4] + Property { name: "tristate"; type: "bool" } + Property { name: "checkState"; type: "Qt::CheckState" } + Property { name: "nextCheckState"; revision: 4; type: "QJSValue" } + Signal { name: "nextCheckStateChanged"; revision: 4 } + } + Component { + name: "QQuickCheckDelegate" + defaultProperty: "data" + prototype: "QQuickItemDelegate" + exports: [ + "QtQuick.Templates/CheckDelegate 2.0", + "QtQuick.Templates/CheckDelegate 2.4" + ] + exportMetaObjectRevisions: [0, 4] + Property { name: "tristate"; type: "bool" } + Property { name: "checkState"; type: "Qt::CheckState" } + Property { name: "nextCheckState"; revision: 4; type: "QJSValue" } + Signal { name: "nextCheckStateChanged"; revision: 4 } + } + Component { + name: "QQuickComboBox" + defaultProperty: "data" + prototype: "QQuickControl" + exports: [ + "QtQuick.Templates/ComboBox 2.0", + "QtQuick.Templates/ComboBox 2.1", + "QtQuick.Templates/ComboBox 2.14", + "QtQuick.Templates/ComboBox 2.15", + "QtQuick.Templates/ComboBox 2.2", + "QtQuick.Templates/ComboBox 2.5" + ] + exportMetaObjectRevisions: [0, 1, 14, 15, 2, 5] + Property { name: "count"; type: "int"; isReadonly: true } + Property { name: "model"; type: "QVariant" } + Property { name: "delegateModel"; type: "QQmlInstanceModel"; isReadonly: true; isPointer: true } + Property { name: "pressed"; type: "bool" } + Property { name: "highlightedIndex"; type: "int"; isReadonly: true } + Property { name: "currentIndex"; type: "int" } + Property { name: "currentText"; type: "string"; isReadonly: true } + Property { name: "displayText"; type: "string" } + Property { name: "textRole"; type: "string" } + Property { name: "delegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "indicator"; type: "QQuickItem"; isPointer: true } + Property { name: "popup"; type: "QQuickPopup"; isPointer: true } + Property { name: "flat"; revision: 1; type: "bool" } + Property { name: "down"; revision: 2; type: "bool" } + Property { name: "editable"; revision: 2; type: "bool" } + Property { name: "editText"; revision: 2; type: "string" } + Property { name: "validator"; revision: 2; type: "QValidator"; isPointer: true } + Property { name: "inputMethodHints"; revision: 2; type: "Qt::InputMethodHints" } + Property { name: "inputMethodComposing"; revision: 2; type: "bool"; isReadonly: true } + Property { name: "acceptableInput"; revision: 2; type: "bool"; isReadonly: true } + Property { name: "implicitIndicatorWidth"; revision: 5; type: "double"; isReadonly: true } + Property { name: "implicitIndicatorHeight"; revision: 5; type: "double"; isReadonly: true } + Property { name: "currentValue"; revision: 14; type: "QVariant"; isReadonly: true } + Property { name: "valueRole"; revision: 14; type: "string" } + Property { name: "selectTextByMouse"; revision: 15; type: "bool" } + Signal { + name: "activated" + Parameter { name: "index"; type: "int" } + } + Signal { + name: "highlighted" + Parameter { name: "index"; type: "int" } + } + Signal { name: "flatChanged"; revision: 1 } + Signal { name: "accepted"; revision: 2 } + Signal { name: "downChanged"; revision: 2 } + Signal { name: "editableChanged"; revision: 2 } + Signal { name: "editTextChanged"; revision: 2 } + Signal { name: "validatorChanged"; revision: 2 } + Signal { name: "inputMethodHintsChanged"; revision: 2 } + Signal { name: "inputMethodComposingChanged"; revision: 2 } + Signal { name: "acceptableInputChanged"; revision: 2 } + Signal { name: "implicitIndicatorWidthChanged"; revision: 5 } + Signal { name: "implicitIndicatorHeightChanged"; revision: 5 } + Signal { name: "valueRoleChanged"; revision: 14 } + Signal { name: "currentValueChanged"; revision: 14 } + Signal { name: "selectTextByMouseChanged"; revision: 15 } + Method { name: "incrementCurrentIndex" } + Method { name: "decrementCurrentIndex" } + Method { name: "selectAll"; revision: 2 } + Method { + name: "textAt" + type: "string" + Parameter { name: "index"; type: "int" } + } + Method { + name: "find" + type: "int" + Parameter { name: "text"; type: "string" } + Parameter { name: "flags"; type: "Qt::MatchFlags" } + } + Method { + name: "find" + type: "int" + Parameter { name: "text"; type: "string" } + } + Method { + name: "valueAt" + revision: 14 + type: "QVariant" + Parameter { name: "index"; type: "int" } + } + Method { + name: "indexOfValue" + revision: 14 + type: "int" + Parameter { name: "value"; type: "QVariant" } + } + } + Component { + name: "QQuickContainer" + defaultProperty: "contentData" + prototype: "QQuickControl" + exports: [ + "QtQuick.Templates/Container 2.0", + "QtQuick.Templates/Container 2.1", + "QtQuick.Templates/Container 2.3", + "QtQuick.Templates/Container 2.5" + ] + exportMetaObjectRevisions: [0, 1, 3, 5] + Property { name: "count"; type: "int"; isReadonly: true } + Property { name: "contentModel"; type: "QVariant"; isReadonly: true } + Property { name: "contentData"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "contentChildren"; type: "QQuickItem"; isList: true; isReadonly: true } + Property { name: "currentIndex"; type: "int" } + Property { name: "currentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "contentWidth"; revision: 5; type: "double" } + Property { name: "contentHeight"; revision: 5; type: "double" } + Signal { name: "contentWidthChanged"; revision: 5 } + Signal { name: "contentHeightChanged"; revision: 5 } + Method { + name: "setCurrentIndex" + Parameter { name: "index"; type: "int" } + } + Method { name: "incrementCurrentIndex"; revision: 1 } + Method { name: "decrementCurrentIndex"; revision: 1 } + Method { + name: "itemAt" + type: "QQuickItem*" + Parameter { name: "index"; type: "int" } + } + Method { + name: "addItem" + Parameter { name: "item"; type: "QQuickItem"; isPointer: true } + } + Method { + name: "insertItem" + Parameter { name: "index"; type: "int" } + Parameter { name: "item"; type: "QQuickItem"; isPointer: true } + } + Method { + name: "moveItem" + Parameter { name: "from"; type: "int" } + Parameter { name: "to"; type: "int" } + } + Method { + name: "removeItem" + Parameter { name: "item"; type: "QVariant" } + } + Method { + name: "takeItem" + revision: 3 + type: "QQuickItem*" + Parameter { name: "index"; type: "int" } + } + } + Component { name: "QQuickContentItem"; defaultProperty: "data"; prototype: "QQuickItem" } + Component { + name: "QQuickControl" + defaultProperty: "data" + prototype: "QQuickItem" + exports: [ + "QtQuick.Templates/Control 2.0", + "QtQuick.Templates/Control 2.3", + "QtQuick.Templates/Control 2.5" + ] + exportMetaObjectRevisions: [0, 3, 5] + Property { name: "font"; type: "QFont" } + Property { name: "availableWidth"; type: "double"; isReadonly: true } + Property { name: "availableHeight"; type: "double"; isReadonly: true } + Property { name: "padding"; type: "double" } + Property { name: "topPadding"; type: "double" } + Property { name: "leftPadding"; type: "double" } + Property { name: "rightPadding"; type: "double" } + Property { name: "bottomPadding"; type: "double" } + Property { name: "spacing"; type: "double" } + Property { name: "locale"; type: "QLocale" } + Property { name: "mirrored"; type: "bool"; isReadonly: true } + Property { name: "focusPolicy"; type: "Qt::FocusPolicy" } + Property { name: "focusReason"; type: "Qt::FocusReason" } + Property { name: "visualFocus"; type: "bool"; isReadonly: true } + Property { name: "hovered"; type: "bool"; isReadonly: true } + Property { name: "hoverEnabled"; type: "bool" } + Property { name: "wheelEnabled"; type: "bool" } + Property { name: "background"; type: "QQuickItem"; isPointer: true } + Property { name: "contentItem"; type: "QQuickItem"; isPointer: true } + Property { name: "baselineOffset"; type: "double" } + Property { name: "palette"; revision: 3; type: "QPalette" } + Property { name: "horizontalPadding"; revision: 5; type: "double" } + Property { name: "verticalPadding"; revision: 5; type: "double" } + Property { name: "implicitContentWidth"; revision: 5; type: "double"; isReadonly: true } + Property { name: "implicitContentHeight"; revision: 5; type: "double"; isReadonly: true } + Property { name: "implicitBackgroundWidth"; revision: 5; type: "double"; isReadonly: true } + Property { name: "implicitBackgroundHeight"; revision: 5; type: "double"; isReadonly: true } + Property { name: "topInset"; revision: 5; type: "double" } + Property { name: "leftInset"; revision: 5; type: "double" } + Property { name: "rightInset"; revision: 5; type: "double" } + Property { name: "bottomInset"; revision: 5; type: "double" } + Signal { name: "paletteChanged"; revision: 3 } + Signal { name: "horizontalPaddingChanged"; revision: 5 } + Signal { name: "verticalPaddingChanged"; revision: 5 } + Signal { name: "implicitContentWidthChanged"; revision: 5 } + Signal { name: "implicitContentHeightChanged"; revision: 5 } + Signal { name: "implicitBackgroundWidthChanged"; revision: 5 } + Signal { name: "implicitBackgroundHeightChanged"; revision: 5 } + Signal { name: "topInsetChanged"; revision: 5 } + Signal { name: "leftInsetChanged"; revision: 5 } + Signal { name: "rightInsetChanged"; revision: 5 } + Signal { name: "bottomInsetChanged"; revision: 5 } + } + Component { + name: "QQuickDelayButton" + defaultProperty: "data" + prototype: "QQuickAbstractButton" + exports: ["QtQuick.Templates/DelayButton 2.2"] + exportMetaObjectRevisions: [0] + Property { name: "delay"; type: "int" } + Property { name: "progress"; type: "double" } + Property { name: "transition"; type: "QQuickTransition"; isPointer: true } + Signal { name: "activated" } + } + Component { + name: "QQuickDial" + defaultProperty: "data" + prototype: "QQuickControl" + exports: [ + "QtQuick.Templates/Dial 2.0", + "QtQuick.Templates/Dial 2.2", + "QtQuick.Templates/Dial 2.5" + ] + exportMetaObjectRevisions: [0, 2, 5] + Enum { + name: "SnapMode" + values: { + "NoSnap": 0, + "SnapAlways": 1, + "SnapOnRelease": 2 + } + } + Enum { + name: "InputMode" + values: { + "Circular": 0, + "Horizontal": 1, + "Vertical": 2 + } + } + Property { name: "from"; type: "double" } + Property { name: "to"; type: "double" } + Property { name: "value"; type: "double" } + Property { name: "position"; type: "double"; isReadonly: true } + Property { name: "angle"; type: "double"; isReadonly: true } + Property { name: "stepSize"; type: "double" } + Property { name: "snapMode"; type: "SnapMode" } + Property { name: "wrap"; type: "bool" } + Property { name: "pressed"; type: "bool"; isReadonly: true } + Property { name: "handle"; type: "QQuickItem"; isPointer: true } + Property { name: "live"; revision: 2; type: "bool" } + Property { name: "inputMode"; revision: 5; type: "InputMode" } + Signal { name: "moved"; revision: 2 } + Signal { name: "liveChanged"; revision: 2 } + Signal { name: "inputModeChanged"; revision: 5 } + Method { name: "increase" } + Method { name: "decrease" } + } + Component { + name: "QQuickDialog" + defaultProperty: "contentData" + prototype: "QQuickPopup" + exports: [ + "QtQuick.Templates/Dialog 2.1", + "QtQuick.Templates/Dialog 2.3", + "QtQuick.Templates/Dialog 2.5" + ] + exportMetaObjectRevisions: [0, 3, 5] + Enum { + name: "StandardCode" + values: { + "Rejected": 0, + "Accepted": 1 + } + } + Property { name: "title"; type: "string" } + Property { name: "header"; type: "QQuickItem"; isPointer: true } + Property { name: "footer"; type: "QQuickItem"; isPointer: true } + Property { name: "standardButtons"; type: "QPlatformDialogHelper::StandardButtons" } + Property { name: "result"; revision: 3; type: "int" } + Property { name: "implicitHeaderWidth"; revision: 5; type: "double"; isReadonly: true } + Property { name: "implicitHeaderHeight"; revision: 5; type: "double"; isReadonly: true } + Property { name: "implicitFooterWidth"; revision: 5; type: "double"; isReadonly: true } + Property { name: "implicitFooterHeight"; revision: 5; type: "double"; isReadonly: true } + Signal { name: "accepted" } + Signal { name: "rejected" } + Signal { name: "applied"; revision: 3 } + Signal { name: "reset"; revision: 3 } + Signal { name: "discarded"; revision: 3 } + Signal { name: "helpRequested"; revision: 3 } + Signal { name: "resultChanged"; revision: 3 } + Method { name: "accept" } + Method { name: "reject" } + Method { + name: "done" + Parameter { name: "result"; type: "int" } + } + Method { + name: "standardButton" + revision: 3 + type: "QQuickAbstractButton*" + Parameter { name: "button"; type: "QPlatformDialogHelper::StandardButton" } + } + } + Component { + name: "QQuickDialogButtonBox" + defaultProperty: "contentData" + prototype: "QQuickContainer" + exports: [ + "QtQuick.Templates/DialogButtonBox 2.1", + "QtQuick.Templates/DialogButtonBox 2.3", + "QtQuick.Templates/DialogButtonBox 2.5" + ] + exportMetaObjectRevisions: [0, 3, 5] + attachedType: "QQuickDialogButtonBoxAttached" + Enum { + name: "Position" + values: { + "Header": 0, + "Footer": 1 + } + } + Property { name: "position"; type: "Position" } + Property { name: "alignment"; type: "Qt::Alignment" } + Property { name: "standardButtons"; type: "QPlatformDialogHelper::StandardButtons" } + Property { name: "delegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "buttonLayout"; revision: 5; type: "QPlatformDialogHelper::ButtonLayout" } + Signal { name: "accepted" } + Signal { name: "rejected" } + Signal { name: "helpRequested" } + Signal { + name: "clicked" + Parameter { name: "button"; type: "QQuickAbstractButton"; isPointer: true } + } + Signal { name: "applied"; revision: 3 } + Signal { name: "reset"; revision: 3 } + Signal { name: "discarded"; revision: 3 } + Signal { name: "buttonLayoutChanged"; revision: 5 } + Method { + name: "standardButton" + type: "QQuickAbstractButton*" + Parameter { name: "button"; type: "QPlatformDialogHelper::StandardButton" } + } + } + Component { + name: "QQuickDialogButtonBoxAttached" + prototype: "QObject" + Property { name: "buttonBox"; type: "QQuickDialogButtonBox"; isReadonly: true; isPointer: true } + Property { name: "buttonRole"; type: "QPlatformDialogHelper::ButtonRole" } + } + Component { + name: "QQuickDrawer" + defaultProperty: "contentData" + prototype: "QQuickPopup" + exports: [ + "QtQuick.Templates/Drawer 2.0", + "QtQuick.Templates/Drawer 2.2" + ] + exportMetaObjectRevisions: [0, 2] + Property { name: "edge"; type: "Qt::Edge" } + Property { name: "position"; type: "double" } + Property { name: "dragMargin"; type: "double" } + Property { name: "interactive"; revision: 2; type: "bool" } + Signal { name: "interactiveChanged"; revision: 2 } + } + Component { + name: "QQuickFrame" + defaultProperty: "contentData" + prototype: "QQuickPane" + exports: ["QtQuick.Templates/Frame 2.0"] + exportMetaObjectRevisions: [0] + } + Component { + name: "QQuickGroupBox" + defaultProperty: "contentData" + prototype: "QQuickFrame" + exports: [ + "QtQuick.Templates/GroupBox 2.0", + "QtQuick.Templates/GroupBox 2.5" + ] + exportMetaObjectRevisions: [0, 5] + Property { name: "title"; type: "string" } + Property { name: "label"; type: "QQuickItem"; isPointer: true } + Property { name: "implicitLabelWidth"; revision: 5; type: "double"; isReadonly: true } + Property { name: "implicitLabelHeight"; revision: 5; type: "double"; isReadonly: true } + Signal { name: "implicitLabelWidthChanged"; revision: 5 } + Signal { name: "implicitLabelHeightChanged"; revision: 5 } + } + Component { + name: "QQuickHeaderViewBase" + defaultProperty: "flickableData" + prototype: "QQuickTableView" + Property { name: "textRole"; type: "string" } + } + Component { + name: "QQuickHorizontalHeaderView" + defaultProperty: "flickableData" + prototype: "QQuickHeaderViewBase" + exports: ["QtQuick.Templates/HorizontalHeaderView 2.15"] + exportMetaObjectRevisions: [0] + attachedType: "QQuickTableViewAttached" + } + Component { + name: "QQuickIcon" + Property { name: "name"; type: "string" } + Property { name: "source"; type: "QUrl" } + Property { name: "width"; type: "int" } + Property { name: "height"; type: "int" } + Property { name: "color"; type: "QColor" } + Property { name: "cache"; type: "bool" } + } + Component { + name: "QQuickImplicitSizeItem" + defaultProperty: "data" + prototype: "QQuickItem" + Property { name: "implicitWidth"; type: "double"; isReadonly: true } + Property { name: "implicitHeight"; type: "double"; isReadonly: true } + } + Component { + name: "QQuickItem" + defaultProperty: "data" + prototype: "QObject" + Enum { + name: "Flags" + values: { + "ItemClipsChildrenToShape": 1, + "ItemAcceptsInputMethod": 2, + "ItemIsFocusScope": 4, + "ItemHasContents": 8, + "ItemAcceptsDrops": 16 + } + } + Enum { + name: "TransformOrigin" + values: { + "TopLeft": 0, + "Top": 1, + "TopRight": 2, + "Left": 3, + "Center": 4, + "Right": 5, + "BottomLeft": 6, + "Bottom": 7, + "BottomRight": 8 + } + } + Property { name: "parent"; type: "QQuickItem"; isPointer: true } + Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "resources"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "children"; type: "QQuickItem"; isList: true; isReadonly: true } + Property { name: "x"; type: "double" } + Property { name: "y"; type: "double" } + Property { name: "z"; type: "double" } + Property { name: "width"; type: "double" } + Property { name: "height"; type: "double" } + Property { name: "opacity"; type: "double" } + Property { name: "enabled"; type: "bool" } + Property { name: "visible"; type: "bool" } + Property { name: "visibleChildren"; type: "QQuickItem"; isList: true; isReadonly: true } + Property { name: "states"; type: "QQuickState"; isList: true; isReadonly: true } + Property { name: "transitions"; type: "QQuickTransition"; isList: true; isReadonly: true } + Property { name: "state"; type: "string" } + Property { name: "childrenRect"; type: "QRectF"; isReadonly: true } + Property { name: "anchors"; type: "QQuickAnchors"; isReadonly: true; isPointer: true } + Property { name: "left"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "right"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "horizontalCenter"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "top"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "bottom"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "verticalCenter"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "baseline"; type: "QQuickAnchorLine"; isReadonly: true } + Property { name: "baselineOffset"; type: "double" } + Property { name: "clip"; type: "bool" } + Property { name: "focus"; type: "bool" } + Property { name: "activeFocus"; type: "bool"; isReadonly: true } + Property { name: "activeFocusOnTab"; revision: 1; type: "bool" } + Property { name: "rotation"; type: "double" } + Property { name: "scale"; type: "double" } + Property { name: "transformOrigin"; type: "TransformOrigin" } + Property { name: "transformOriginPoint"; type: "QPointF"; isReadonly: true } + Property { name: "transform"; type: "QQuickTransform"; isList: true; isReadonly: true } + Property { name: "smooth"; type: "bool" } + Property { name: "antialiasing"; type: "bool" } + Property { name: "implicitWidth"; type: "double" } + Property { name: "implicitHeight"; type: "double" } + Property { name: "containmentMask"; revision: 11; type: "QObject"; isPointer: true } + Property { name: "layer"; type: "QQuickItemLayer"; isReadonly: true; isPointer: true } + Signal { + name: "childrenRectChanged" + Parameter { type: "QRectF" } + } + Signal { + name: "baselineOffsetChanged" + Parameter { type: "double" } + } + Signal { + name: "stateChanged" + Parameter { type: "string" } + } + Signal { + name: "focusChanged" + Parameter { type: "bool" } + } + Signal { + name: "activeFocusChanged" + Parameter { type: "bool" } + } + Signal { + name: "activeFocusOnTabChanged" + revision: 1 + Parameter { type: "bool" } + } + Signal { + name: "parentChanged" + Parameter { type: "QQuickItem"; isPointer: true } + } + Signal { + name: "transformOriginChanged" + Parameter { type: "TransformOrigin" } + } + Signal { + name: "smoothChanged" + Parameter { type: "bool" } + } + Signal { + name: "antialiasingChanged" + Parameter { type: "bool" } + } + Signal { + name: "clipChanged" + Parameter { type: "bool" } + } + Signal { + name: "windowChanged" + revision: 1 + Parameter { name: "window"; type: "QQuickWindow"; isPointer: true } + } + Signal { name: "containmentMaskChanged"; revision: 11 } + Method { name: "update" } + Method { + name: "grabToImage" + revision: 4 + type: "bool" + Parameter { name: "callback"; type: "QJSValue" } + Parameter { name: "targetSize"; type: "QSize" } + } + Method { + name: "grabToImage" + revision: 4 + type: "bool" + Parameter { name: "callback"; type: "QJSValue" } + } + Method { + name: "contains" + type: "bool" + Parameter { name: "point"; type: "QPointF" } + } + Method { + name: "mapFromItem" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "mapToItem" + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "mapFromGlobal" + revision: 7 + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "mapToGlobal" + revision: 7 + Parameter { type: "QQmlV4Function"; isPointer: true } + } + Method { name: "forceActiveFocus" } + Method { + name: "forceActiveFocus" + Parameter { name: "reason"; type: "Qt::FocusReason" } + } + Method { + name: "nextItemInFocusChain" + revision: 1 + type: "QQuickItem*" + Parameter { name: "forward"; type: "bool" } + } + Method { name: "nextItemInFocusChain"; revision: 1; type: "QQuickItem*" } + Method { + name: "childAt" + type: "QQuickItem*" + Parameter { name: "x"; type: "double" } + Parameter { name: "y"; type: "double" } + } + } + Component { + name: "QQuickItemDelegate" + defaultProperty: "data" + prototype: "QQuickAbstractButton" + exports: ["QtQuick.Templates/ItemDelegate 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "highlighted"; type: "bool" } + } + Component { + name: "QQuickLabel" + defaultProperty: "data" + prototype: "QQuickText" + exports: [ + "QtQuick.Templates/Label 2.0", + "QtQuick.Templates/Label 2.3", + "QtQuick.Templates/Label 2.5" + ] + exportMetaObjectRevisions: [0, 3, 5] + Property { name: "font"; type: "QFont" } + Property { name: "background"; type: "QQuickItem"; isPointer: true } + Property { name: "palette"; revision: 3; type: "QPalette" } + Property { name: "implicitBackgroundWidth"; revision: 5; type: "double"; isReadonly: true } + Property { name: "implicitBackgroundHeight"; revision: 5; type: "double"; isReadonly: true } + Property { name: "topInset"; revision: 5; type: "double" } + Property { name: "leftInset"; revision: 5; type: "double" } + Property { name: "rightInset"; revision: 5; type: "double" } + Property { name: "bottomInset"; revision: 5; type: "double" } + Signal { name: "paletteChanged"; revision: 3 } + Signal { name: "implicitBackgroundWidthChanged"; revision: 5 } + Signal { name: "implicitBackgroundHeightChanged"; revision: 5 } + Signal { name: "topInsetChanged"; revision: 5 } + Signal { name: "leftInsetChanged"; revision: 5 } + Signal { name: "rightInsetChanged"; revision: 5 } + Signal { name: "bottomInsetChanged"; revision: 5 } + } + Component { + name: "QQuickMenu" + defaultProperty: "contentData" + prototype: "QQuickPopup" + exports: ["QtQuick.Templates/Menu 2.0", "QtQuick.Templates/Menu 2.3"] + exportMetaObjectRevisions: [0, 3] + Property { name: "contentModel"; type: "QVariant"; isReadonly: true } + Property { name: "contentData"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "title"; type: "string" } + Property { name: "count"; revision: 3; type: "int"; isReadonly: true } + Property { name: "cascade"; revision: 3; type: "bool" } + Property { name: "overlap"; revision: 3; type: "double" } + Property { name: "delegate"; revision: 3; type: "QQmlComponent"; isPointer: true } + Property { name: "currentIndex"; revision: 3; type: "int" } + Signal { + name: "titleChanged" + Parameter { name: "title"; type: "string" } + } + Signal { name: "countChanged"; revision: 3 } + Signal { + name: "cascadeChanged" + revision: 3 + Parameter { name: "cascade"; type: "bool" } + } + Signal { name: "overlapChanged"; revision: 3 } + Signal { name: "delegateChanged"; revision: 3 } + Signal { name: "currentIndexChanged"; revision: 3 } + Method { + name: "itemAt" + type: "QQuickItem*" + Parameter { name: "index"; type: "int" } + } + Method { + name: "addItem" + Parameter { name: "item"; type: "QQuickItem"; isPointer: true } + } + Method { + name: "insertItem" + Parameter { name: "index"; type: "int" } + Parameter { name: "item"; type: "QQuickItem"; isPointer: true } + } + Method { + name: "moveItem" + Parameter { name: "from"; type: "int" } + Parameter { name: "to"; type: "int" } + } + Method { + name: "removeItem" + Parameter { name: "item"; type: "QVariant" } + } + Method { + name: "takeItem" + revision: 3 + type: "QQuickItem*" + Parameter { name: "index"; type: "int" } + } + Method { + name: "menuAt" + revision: 3 + type: "QQuickMenu*" + Parameter { name: "index"; type: "int" } + } + Method { + name: "addMenu" + revision: 3 + Parameter { name: "menu"; type: "QQuickMenu"; isPointer: true } + } + Method { + name: "insertMenu" + revision: 3 + Parameter { name: "index"; type: "int" } + Parameter { name: "menu"; type: "QQuickMenu"; isPointer: true } + } + Method { + name: "removeMenu" + revision: 3 + Parameter { name: "menu"; type: "QQuickMenu"; isPointer: true } + } + Method { + name: "takeMenu" + revision: 3 + type: "QQuickMenu*" + Parameter { name: "index"; type: "int" } + } + Method { + name: "actionAt" + revision: 3 + type: "QQuickAction*" + Parameter { name: "index"; type: "int" } + } + Method { + name: "addAction" + revision: 3 + Parameter { name: "action"; type: "QQuickAction"; isPointer: true } + } + Method { + name: "insertAction" + revision: 3 + Parameter { name: "index"; type: "int" } + Parameter { name: "action"; type: "QQuickAction"; isPointer: true } + } + Method { + name: "removeAction" + revision: 3 + Parameter { name: "action"; type: "QQuickAction"; isPointer: true } + } + Method { + name: "takeAction" + revision: 3 + type: "QQuickAction*" + Parameter { name: "index"; type: "int" } + } + Method { + name: "popup" + revision: 3 + Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true } + } + Method { name: "dismiss"; revision: 3 } + } + Component { + name: "QQuickMenuBar" + defaultProperty: "contentData" + prototype: "QQuickContainer" + exports: ["QtQuick.Templates/MenuBar 2.3"] + exportMetaObjectRevisions: [0] + Property { name: "delegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "contentWidth"; type: "double" } + Property { name: "contentHeight"; type: "double" } + Property { name: "menus"; type: "QQuickMenu"; isList: true; isReadonly: true } + Property { name: "contentData"; type: "QObject"; isList: true; isReadonly: true } + Method { + name: "menuAt" + type: "QQuickMenu*" + Parameter { name: "index"; type: "int" } + } + Method { + name: "addMenu" + Parameter { name: "menu"; type: "QQuickMenu"; isPointer: true } + } + Method { + name: "insertMenu" + Parameter { name: "index"; type: "int" } + Parameter { name: "menu"; type: "QQuickMenu"; isPointer: true } + } + Method { + name: "removeMenu" + Parameter { name: "menu"; type: "QQuickMenu"; isPointer: true } + } + Method { + name: "takeMenu" + type: "QQuickMenu*" + Parameter { name: "index"; type: "int" } + } + } + Component { + name: "QQuickMenuBarItem" + defaultProperty: "data" + prototype: "QQuickAbstractButton" + exports: ["QtQuick.Templates/MenuBarItem 2.3"] + exportMetaObjectRevisions: [0] + Property { name: "menuBar"; type: "QQuickMenuBar"; isReadonly: true; isPointer: true } + Property { name: "menu"; type: "QQuickMenu"; isPointer: true } + Property { name: "highlighted"; type: "bool" } + Signal { name: "triggered" } + } + Component { + name: "QQuickMenuItem" + defaultProperty: "data" + prototype: "QQuickAbstractButton" + exports: [ + "QtQuick.Templates/MenuItem 2.0", + "QtQuick.Templates/MenuItem 2.3" + ] + exportMetaObjectRevisions: [0, 3] + Property { name: "highlighted"; type: "bool" } + Property { name: "arrow"; revision: 3; type: "QQuickItem"; isPointer: true } + Property { name: "menu"; revision: 3; type: "QQuickMenu"; isReadonly: true; isPointer: true } + Property { name: "subMenu"; revision: 3; type: "QQuickMenu"; isReadonly: true; isPointer: true } + Signal { name: "triggered" } + Signal { name: "arrowChanged"; revision: 3 } + Signal { name: "menuChanged"; revision: 3 } + Signal { name: "subMenuChanged"; revision: 3 } + } + Component { + name: "QQuickMenuSeparator" + defaultProperty: "data" + prototype: "QQuickControl" + exports: ["QtQuick.Templates/MenuSeparator 2.1"] + exportMetaObjectRevisions: [0] + } + Component { + name: "QQuickOverlay" + defaultProperty: "data" + prototype: "QQuickItem" + exports: ["QtQuick.Templates/Overlay 2.3"] + isCreatable: false + exportMetaObjectRevisions: [0] + attachedType: "QQuickOverlayAttached" + Property { name: "modal"; type: "QQmlComponent"; isPointer: true } + Property { name: "modeless"; type: "QQmlComponent"; isPointer: true } + Signal { name: "pressed" } + Signal { name: "released" } + } + Component { + name: "QQuickOverlayAttached" + prototype: "QObject" + Property { name: "overlay"; type: "QQuickOverlay"; isReadonly: true; isPointer: true } + Property { name: "modal"; type: "QQmlComponent"; isPointer: true } + Property { name: "modeless"; type: "QQmlComponent"; isPointer: true } + Signal { name: "pressed" } + Signal { name: "released" } + } + Component { + name: "QQuickPage" + defaultProperty: "contentData" + prototype: "QQuickPane" + exports: [ + "QtQuick.Templates/Page 2.0", + "QtQuick.Templates/Page 2.1", + "QtQuick.Templates/Page 2.5" + ] + exportMetaObjectRevisions: [0, 1, 5] + Property { name: "title"; type: "string" } + Property { name: "header"; type: "QQuickItem"; isPointer: true } + Property { name: "footer"; type: "QQuickItem"; isPointer: true } + Property { name: "contentWidth"; revision: 1; type: "double" } + Property { name: "contentHeight"; revision: 1; type: "double" } + Property { name: "implicitHeaderWidth"; revision: 5; type: "double"; isReadonly: true } + Property { name: "implicitHeaderHeight"; revision: 5; type: "double"; isReadonly: true } + Property { name: "implicitFooterWidth"; revision: 5; type: "double"; isReadonly: true } + Property { name: "implicitFooterHeight"; revision: 5; type: "double"; isReadonly: true } + } + Component { + name: "QQuickPageIndicator" + defaultProperty: "data" + prototype: "QQuickControl" + exports: ["QtQuick.Templates/PageIndicator 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "count"; type: "int" } + Property { name: "currentIndex"; type: "int" } + Property { name: "interactive"; type: "bool" } + Property { name: "delegate"; type: "QQmlComponent"; isPointer: true } + } + Component { + name: "QQuickPane" + defaultProperty: "contentData" + prototype: "QQuickControl" + exports: ["QtQuick.Templates/Pane 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "contentWidth"; type: "double" } + Property { name: "contentHeight"; type: "double" } + Property { name: "contentData"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "contentChildren"; type: "QQuickItem"; isList: true; isReadonly: true } + } + Component { + name: "QQuickPopup" + defaultProperty: "contentData" + prototype: "QObject" + exports: [ + "QtQuick.Templates/Popup 2.0", + "QtQuick.Templates/Popup 2.1", + "QtQuick.Templates/Popup 2.3", + "QtQuick.Templates/Popup 2.5" + ] + exportMetaObjectRevisions: [0, 1, 3, 5] + Enum { + name: "ClosePolicy" + values: { + "NoAutoClose": 0, + "CloseOnPressOutside": 1, + "CloseOnPressOutsideParent": 2, + "CloseOnReleaseOutside": 4, + "CloseOnReleaseOutsideParent": 8, + "CloseOnEscape": 16 + } + } + Enum { + name: "TransformOrigin" + values: { + "TopLeft": 0, + "Top": 1, + "TopRight": 2, + "Left": 3, + "Center": 4, + "Right": 5, + "BottomLeft": 6, + "Bottom": 7, + "BottomRight": 8 + } + } + Property { name: "x"; type: "double" } + Property { name: "y"; type: "double" } + Property { name: "z"; type: "double" } + Property { name: "width"; type: "double" } + Property { name: "height"; type: "double" } + Property { name: "implicitWidth"; type: "double" } + Property { name: "implicitHeight"; type: "double" } + Property { name: "contentWidth"; type: "double" } + Property { name: "contentHeight"; type: "double" } + Property { name: "availableWidth"; type: "double"; isReadonly: true } + Property { name: "availableHeight"; type: "double"; isReadonly: true } + Property { name: "margins"; type: "double" } + Property { name: "topMargin"; type: "double" } + Property { name: "leftMargin"; type: "double" } + Property { name: "rightMargin"; type: "double" } + Property { name: "bottomMargin"; type: "double" } + Property { name: "padding"; type: "double" } + Property { name: "topPadding"; type: "double" } + Property { name: "leftPadding"; type: "double" } + Property { name: "rightPadding"; type: "double" } + Property { name: "bottomPadding"; type: "double" } + Property { name: "locale"; type: "QLocale" } + Property { name: "font"; type: "QFont" } + Property { name: "parent"; type: "QQuickItem"; isPointer: true } + Property { name: "background"; type: "QQuickItem"; isPointer: true } + Property { name: "contentItem"; type: "QQuickItem"; isPointer: true } + Property { name: "contentData"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "contentChildren"; type: "QQuickItem"; isList: true; isReadonly: true } + Property { name: "clip"; type: "bool" } + Property { name: "focus"; type: "bool" } + Property { name: "activeFocus"; type: "bool"; isReadonly: true } + Property { name: "modal"; type: "bool" } + Property { name: "dim"; type: "bool" } + Property { name: "visible"; type: "bool" } + Property { name: "opacity"; type: "double" } + Property { name: "scale"; type: "double" } + Property { name: "closePolicy"; type: "ClosePolicy" } + Property { name: "transformOrigin"; type: "TransformOrigin" } + Property { name: "enter"; type: "QQuickTransition"; isPointer: true } + Property { name: "exit"; type: "QQuickTransition"; isPointer: true } + Property { name: "spacing"; revision: 1; type: "double" } + Property { name: "opened"; revision: 3; type: "bool"; isReadonly: true } + Property { name: "mirrored"; revision: 3; type: "bool"; isReadonly: true } + Property { name: "enabled"; revision: 3; type: "bool" } + Property { name: "palette"; revision: 3; type: "QPalette" } + Property { name: "horizontalPadding"; type: "double" } + Property { name: "verticalPadding"; type: "double" } + Property { + name: "anchors" + revision: 5 + type: "QQuickPopupAnchors" + isReadonly: true + isPointer: true + } + Property { name: "implicitContentWidth"; revision: 5; type: "double"; isReadonly: true } + Property { name: "implicitContentHeight"; revision: 5; type: "double"; isReadonly: true } + Property { name: "implicitBackgroundWidth"; revision: 5; type: "double"; isReadonly: true } + Property { name: "implicitBackgroundHeight"; revision: 5; type: "double"; isReadonly: true } + Property { name: "topInset"; revision: 5; type: "double" } + Property { name: "leftInset"; revision: 5; type: "double" } + Property { name: "rightInset"; revision: 5; type: "double" } + Property { name: "bottomInset"; revision: 5; type: "double" } + Signal { name: "opened" } + Signal { name: "closed" } + Signal { name: "aboutToShow" } + Signal { name: "aboutToHide" } + Signal { + name: "windowChanged" + Parameter { name: "window"; type: "QQuickWindow"; isPointer: true } + } + Signal { name: "spacingChanged"; revision: 1 } + Signal { name: "openedChanged"; revision: 3 } + Signal { name: "mirroredChanged"; revision: 3 } + Signal { name: "enabledChanged"; revision: 3 } + Signal { name: "paletteChanged"; revision: 3 } + Signal { name: "horizontalPaddingChanged"; revision: 5 } + Signal { name: "verticalPaddingChanged"; revision: 5 } + Signal { name: "implicitContentWidthChanged"; revision: 5 } + Signal { name: "implicitContentHeightChanged"; revision: 5 } + Signal { name: "implicitBackgroundWidthChanged"; revision: 5 } + Signal { name: "implicitBackgroundHeightChanged"; revision: 5 } + Signal { name: "topInsetChanged"; revision: 5 } + Signal { name: "leftInsetChanged"; revision: 5 } + Signal { name: "rightInsetChanged"; revision: 5 } + Signal { name: "bottomInsetChanged"; revision: 5 } + Method { name: "open" } + Method { name: "close" } + Method { + name: "forceActiveFocus" + Parameter { name: "reason"; type: "Qt::FocusReason" } + } + Method { name: "forceActiveFocus" } + } + Component { + name: "QQuickPopupAnchors" + prototype: "QObject" + Property { name: "centerIn"; type: "QQuickItem"; isPointer: true } + } + Component { + name: "QQuickProgressBar" + defaultProperty: "data" + prototype: "QQuickControl" + exports: ["QtQuick.Templates/ProgressBar 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "from"; type: "double" } + Property { name: "to"; type: "double" } + Property { name: "value"; type: "double" } + Property { name: "position"; type: "double"; isReadonly: true } + Property { name: "visualPosition"; type: "double"; isReadonly: true } + Property { name: "indeterminate"; type: "bool" } + } + Component { + name: "QQuickRadioButton" + defaultProperty: "data" + prototype: "QQuickAbstractButton" + exports: ["QtQuick.Templates/RadioButton 2.0"] + exportMetaObjectRevisions: [0] + } + Component { + name: "QQuickRadioDelegate" + defaultProperty: "data" + prototype: "QQuickItemDelegate" + exports: ["QtQuick.Templates/RadioDelegate 2.0"] + exportMetaObjectRevisions: [0] + } + Component { + name: "QQuickRangeSlider" + defaultProperty: "data" + prototype: "QQuickControl" + exports: [ + "QtQuick.Templates/RangeSlider 2.0", + "QtQuick.Templates/RangeSlider 2.1", + "QtQuick.Templates/RangeSlider 2.2", + "QtQuick.Templates/RangeSlider 2.3", + "QtQuick.Templates/RangeSlider 2.5" + ] + exportMetaObjectRevisions: [0, 1, 2, 3, 5] + Enum { + name: "SnapMode" + values: { + "NoSnap": 0, + "SnapAlways": 1, + "SnapOnRelease": 2 + } + } + Property { name: "from"; type: "double" } + Property { name: "to"; type: "double" } + Property { name: "first"; type: "QQuickRangeSliderNode"; isReadonly: true; isPointer: true } + Property { name: "second"; type: "QQuickRangeSliderNode"; isReadonly: true; isPointer: true } + Property { name: "stepSize"; type: "double" } + Property { name: "snapMode"; type: "SnapMode" } + Property { name: "orientation"; type: "Qt::Orientation" } + Property { name: "live"; revision: 2; type: "bool" } + Property { name: "horizontal"; revision: 3; type: "bool"; isReadonly: true } + Property { name: "vertical"; revision: 3; type: "bool"; isReadonly: true } + Property { name: "touchDragThreshold"; revision: 5; type: "double" } + Signal { name: "liveChanged"; revision: 2 } + Signal { name: "touchDragThresholdChanged"; revision: 5 } + Method { + name: "setValues" + Parameter { name: "firstValue"; type: "double" } + Parameter { name: "secondValue"; type: "double" } + } + Method { + name: "valueAt" + revision: 5 + type: "double" + Parameter { name: "position"; type: "double" } + } + } + Component { + name: "QQuickRangeSliderNode" + prototype: "QObject" + Property { name: "value"; type: "double" } + Property { name: "position"; type: "double"; isReadonly: true } + Property { name: "visualPosition"; type: "double"; isReadonly: true } + Property { name: "handle"; type: "QQuickItem"; isPointer: true } + Property { name: "pressed"; type: "bool" } + Property { name: "hovered"; revision: 1; type: "bool" } + Property { name: "implicitHandleWidth"; revision: 5; type: "double"; isReadonly: true } + Property { name: "implicitHandleHeight"; revision: 5; type: "double"; isReadonly: true } + Signal { name: "hoveredChanged"; revision: 1 } + Signal { name: "moved" } + Method { name: "increase" } + Method { name: "decrease" } + } + Component { + name: "QQuickRoundButton" + defaultProperty: "data" + prototype: "QQuickButton" + exports: ["QtQuick.Templates/RoundButton 2.1"] + exportMetaObjectRevisions: [0] + Property { name: "radius"; type: "double" } + } + Component { + name: "QQuickScrollBar" + defaultProperty: "data" + prototype: "QQuickControl" + exports: [ + "QtQuick.Templates/ScrollBar 2.0", + "QtQuick.Templates/ScrollBar 2.2", + "QtQuick.Templates/ScrollBar 2.3", + "QtQuick.Templates/ScrollBar 2.4" + ] + exportMetaObjectRevisions: [0, 2, 3, 4] + attachedType: "QQuickScrollBarAttached" + Enum { + name: "SnapMode" + values: { + "NoSnap": 0, + "SnapAlways": 1, + "SnapOnRelease": 2 + } + } + Enum { + name: "Policy" + values: { + "AsNeeded": 0, + "AlwaysOff": 1, + "AlwaysOn": 2 + } + } + Property { name: "size"; type: "double" } + Property { name: "position"; type: "double" } + Property { name: "stepSize"; type: "double" } + Property { name: "active"; type: "bool" } + Property { name: "pressed"; type: "bool" } + Property { name: "orientation"; type: "Qt::Orientation" } + Property { name: "snapMode"; revision: 2; type: "SnapMode" } + Property { name: "interactive"; revision: 2; type: "bool" } + Property { name: "policy"; revision: 2; type: "Policy" } + Property { name: "horizontal"; revision: 3; type: "bool"; isReadonly: true } + Property { name: "vertical"; revision: 3; type: "bool"; isReadonly: true } + Property { name: "minimumSize"; revision: 4; type: "double" } + Property { name: "visualSize"; revision: 4; type: "double"; isReadonly: true } + Property { name: "visualPosition"; revision: 4; type: "double"; isReadonly: true } + Signal { name: "snapModeChanged"; revision: 2 } + Signal { name: "interactiveChanged"; revision: 2 } + Signal { name: "policyChanged"; revision: 2 } + Signal { name: "minimumSizeChanged"; revision: 4 } + Signal { name: "visualSizeChanged"; revision: 4 } + Signal { name: "visualPositionChanged"; revision: 4 } + Method { name: "increase" } + Method { name: "decrease" } + Method { + name: "setSize" + Parameter { name: "size"; type: "double" } + } + Method { + name: "setPosition" + Parameter { name: "position"; type: "double" } + } + } + Component { + name: "QQuickScrollBarAttached" + prototype: "QObject" + Property { name: "horizontal"; type: "QQuickScrollBar"; isPointer: true } + Property { name: "vertical"; type: "QQuickScrollBar"; isPointer: true } + } + Component { + name: "QQuickScrollIndicator" + defaultProperty: "data" + prototype: "QQuickControl" + exports: [ + "QtQuick.Templates/ScrollIndicator 2.0", + "QtQuick.Templates/ScrollIndicator 2.3", + "QtQuick.Templates/ScrollIndicator 2.4" + ] + exportMetaObjectRevisions: [0, 3, 4] + attachedType: "QQuickScrollIndicatorAttached" + Property { name: "size"; type: "double" } + Property { name: "position"; type: "double" } + Property { name: "active"; type: "bool" } + Property { name: "orientation"; type: "Qt::Orientation" } + Property { name: "horizontal"; revision: 3; type: "bool"; isReadonly: true } + Property { name: "vertical"; revision: 3; type: "bool"; isReadonly: true } + Property { name: "minimumSize"; revision: 4; type: "double" } + Property { name: "visualSize"; revision: 4; type: "double"; isReadonly: true } + Property { name: "visualPosition"; revision: 4; type: "double"; isReadonly: true } + Signal { name: "minimumSizeChanged"; revision: 4 } + Signal { name: "visualSizeChanged"; revision: 4 } + Signal { name: "visualPositionChanged"; revision: 4 } + Method { + name: "setSize" + Parameter { name: "size"; type: "double" } + } + Method { + name: "setPosition" + Parameter { name: "position"; type: "double" } + } + } + Component { + name: "QQuickScrollIndicatorAttached" + prototype: "QObject" + Property { name: "horizontal"; type: "QQuickScrollIndicator"; isPointer: true } + Property { name: "vertical"; type: "QQuickScrollIndicator"; isPointer: true } + } + Component { + name: "QQuickScrollView" + defaultProperty: "contentData" + prototype: "QQuickPane" + exports: ["QtQuick.Templates/ScrollView 2.2"] + exportMetaObjectRevisions: [0] + } + Component { + name: "QQuickSlider" + defaultProperty: "data" + prototype: "QQuickControl" + exports: [ + "QtQuick.Templates/Slider 2.0", + "QtQuick.Templates/Slider 2.1", + "QtQuick.Templates/Slider 2.2", + "QtQuick.Templates/Slider 2.3", + "QtQuick.Templates/Slider 2.5" + ] + exportMetaObjectRevisions: [0, 1, 2, 3, 5] + Enum { + name: "SnapMode" + values: { + "NoSnap": 0, + "SnapAlways": 1, + "SnapOnRelease": 2 + } + } + Property { name: "from"; type: "double" } + Property { name: "to"; type: "double" } + Property { name: "value"; type: "double" } + Property { name: "position"; type: "double"; isReadonly: true } + Property { name: "visualPosition"; type: "double"; isReadonly: true } + Property { name: "stepSize"; type: "double" } + Property { name: "snapMode"; type: "SnapMode" } + Property { name: "pressed"; type: "bool" } + Property { name: "orientation"; type: "Qt::Orientation" } + Property { name: "handle"; type: "QQuickItem"; isPointer: true } + Property { name: "live"; revision: 2; type: "bool" } + Property { name: "horizontal"; revision: 3; type: "bool"; isReadonly: true } + Property { name: "vertical"; revision: 3; type: "bool"; isReadonly: true } + Property { name: "touchDragThreshold"; revision: 5; type: "double" } + Property { name: "implicitHandleWidth"; revision: 5; type: "double"; isReadonly: true } + Property { name: "implicitHandleHeight"; revision: 5; type: "double"; isReadonly: true } + Signal { name: "moved"; revision: 2 } + Signal { name: "liveChanged"; revision: 2 } + Signal { name: "touchDragThresholdChanged"; revision: 5 } + Signal { name: "implicitHandleWidthChanged"; revision: 5 } + Signal { name: "implicitHandleHeightChanged"; revision: 5 } + Method { name: "increase" } + Method { name: "decrease" } + Method { + name: "valueAt" + revision: 1 + type: "double" + Parameter { name: "position"; type: "double" } + } + } + Component { + name: "QQuickSpinBox" + defaultProperty: "data" + prototype: "QQuickControl" + exports: [ + "QtQuick.Templates/SpinBox 2.0", + "QtQuick.Templates/SpinBox 2.1", + "QtQuick.Templates/SpinBox 2.2", + "QtQuick.Templates/SpinBox 2.3", + "QtQuick.Templates/SpinBox 2.4", + "QtQuick.Templates/SpinBox 2.5" + ] + exportMetaObjectRevisions: [0, 1, 2, 3, 4, 5] + Property { name: "from"; type: "int" } + Property { name: "to"; type: "int" } + Property { name: "value"; type: "int" } + Property { name: "stepSize"; type: "int" } + Property { name: "editable"; type: "bool" } + Property { name: "validator"; type: "QValidator"; isPointer: true } + Property { name: "textFromValue"; type: "QJSValue" } + Property { name: "valueFromText"; type: "QJSValue" } + Property { name: "up"; type: "QQuickSpinButton"; isReadonly: true; isPointer: true } + Property { name: "down"; type: "QQuickSpinButton"; isReadonly: true; isPointer: true } + Property { name: "inputMethodHints"; revision: 2; type: "Qt::InputMethodHints" } + Property { name: "inputMethodComposing"; revision: 2; type: "bool"; isReadonly: true } + Property { name: "wrap"; revision: 3; type: "bool" } + Property { name: "displayText"; revision: 4; type: "string"; isReadonly: true } + Signal { name: "valueModified"; revision: 2 } + Signal { name: "inputMethodHintsChanged"; revision: 2 } + Signal { name: "inputMethodComposingChanged"; revision: 2 } + Signal { name: "wrapChanged"; revision: 3 } + Signal { name: "displayTextChanged"; revision: 4 } + Method { name: "increase" } + Method { name: "decrease" } + } + Component { + name: "QQuickSpinButton" + prototype: "QObject" + Property { name: "pressed"; type: "bool" } + Property { name: "indicator"; type: "QQuickItem"; isPointer: true } + Property { name: "hovered"; revision: 1; type: "bool" } + Property { name: "implicitIndicatorWidth"; revision: 5; type: "double"; isReadonly: true } + Property { name: "implicitIndicatorHeight"; revision: 5; type: "double"; isReadonly: true } + Signal { name: "hoveredChanged"; revision: 1 } + Signal { name: "implicitIndicatorWidthChanged"; revision: 5 } + Signal { name: "implicitIndicatorHeightChanged"; revision: 5 } + } + Component { + name: "QQuickSplitHandleAttached" + prototype: "QObject" + exports: ["QtQuick.Templates/SplitHandle 2.13"] + isCreatable: false + exportMetaObjectRevisions: [0] + Property { name: "hovered"; type: "bool"; isReadonly: true } + Property { name: "pressed"; type: "bool"; isReadonly: true } + } + Component { + name: "QQuickSplitView" + defaultProperty: "contentData" + prototype: "QQuickContainer" + exports: ["QtQuick.Templates/SplitView 2.13"] + exportMetaObjectRevisions: [0] + attachedType: "QQuickSplitViewAttached" + Property { name: "orientation"; type: "Qt::Orientation" } + Property { name: "resizing"; type: "bool"; isReadonly: true } + Property { name: "handle"; type: "QQmlComponent"; isPointer: true } + Method { name: "saveState"; type: "QVariant" } + Method { + name: "restoreState" + type: "bool" + Parameter { name: "state"; type: "QVariant" } + } + } + Component { + name: "QQuickSplitViewAttached" + prototype: "QObject" + Property { name: "view"; type: "QQuickSplitView"; isReadonly: true; isPointer: true } + Property { name: "minimumWidth"; type: "double" } + Property { name: "minimumHeight"; type: "double" } + Property { name: "preferredWidth"; type: "double" } + Property { name: "preferredHeight"; type: "double" } + Property { name: "maximumWidth"; type: "double" } + Property { name: "maximumHeight"; type: "double" } + Property { name: "fillHeight"; type: "bool" } + Property { name: "fillWidth"; type: "bool" } + } + Component { + name: "QQuickStackView" + defaultProperty: "data" + prototype: "QQuickControl" + exports: [ + "QtQuick.Templates/StackView 2.0", + "QtQuick.Templates/StackView 2.1" + ] + exportMetaObjectRevisions: [0, 1] + attachedType: "QQuickStackViewAttached" + Enum { + name: "Status" + values: { + "Inactive": 0, + "Deactivating": 1, + "Activating": 2, + "Active": 3 + } + } + Enum { + name: "LoadBehavior" + values: { + "DontLoad": 0, + "ForceLoad": 1 + } + } + Enum { + name: "Operation" + values: { + "Transition": -1, + "Immediate": 0, + "PushTransition": 1, + "ReplaceTransition": 2, + "PopTransition": 3 + } + } + Property { name: "busy"; type: "bool"; isReadonly: true } + Property { name: "depth"; type: "int"; isReadonly: true } + Property { name: "currentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "initialItem"; type: "QJSValue" } + Property { name: "popEnter"; type: "QQuickTransition"; isPointer: true } + Property { name: "popExit"; type: "QQuickTransition"; isPointer: true } + Property { name: "pushEnter"; type: "QQuickTransition"; isPointer: true } + Property { name: "pushExit"; type: "QQuickTransition"; isPointer: true } + Property { name: "replaceEnter"; type: "QQuickTransition"; isPointer: true } + Property { name: "replaceExit"; type: "QQuickTransition"; isPointer: true } + Property { name: "empty"; revision: 3; type: "bool"; isReadonly: true } + Signal { name: "emptyChanged"; revision: 3 } + Method { + name: "clear" + Parameter { name: "operation"; type: "Operation" } + } + Method { name: "clear" } + Method { + name: "get" + type: "QQuickItem*" + Parameter { name: "index"; type: "int" } + Parameter { name: "behavior"; type: "LoadBehavior" } + } + Method { + name: "get" + type: "QQuickItem*" + Parameter { name: "index"; type: "int" } + } + Method { + name: "find" + type: "QQuickItem*" + Parameter { name: "callback"; type: "QJSValue" } + Parameter { name: "behavior"; type: "LoadBehavior" } + } + Method { + name: "find" + type: "QQuickItem*" + Parameter { name: "callback"; type: "QJSValue" } + } + Method { + name: "push" + Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "pop" + Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "replace" + Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true } + } + } + Component { + name: "QQuickStackViewAttached" + prototype: "QObject" + Property { name: "index"; type: "int"; isReadonly: true } + Property { name: "view"; type: "QQuickStackView"; isReadonly: true; isPointer: true } + Property { name: "status"; type: "QQuickStackView::Status"; isReadonly: true } + Property { name: "visible"; type: "bool" } + Signal { name: "activated" } + Signal { name: "activating" } + Signal { name: "deactivated" } + Signal { name: "deactivating" } + Signal { name: "removed" } + } + Component { + name: "QQuickSwipe" + prototype: "QObject" + Property { name: "position"; type: "double" } + Property { name: "complete"; type: "bool"; isReadonly: true } + Property { name: "left"; type: "QQmlComponent"; isPointer: true } + Property { name: "behind"; type: "QQmlComponent"; isPointer: true } + Property { name: "right"; type: "QQmlComponent"; isPointer: true } + Property { name: "leftItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "behindItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "rightItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "enabled"; type: "bool" } + Property { name: "transition"; type: "QQuickTransition"; isPointer: true } + Signal { name: "completed" } + Signal { name: "opened" } + Signal { name: "closed" } + Method { name: "close"; revision: 1 } + Method { + name: "open" + revision: 2 + Parameter { name: "side"; type: "QQuickSwipeDelegate::Side" } + } + } + Component { + name: "QQuickSwipeDelegate" + defaultProperty: "data" + prototype: "QQuickItemDelegate" + exports: [ + "QtQuick.Templates/SwipeDelegate 2.0", + "QtQuick.Templates/SwipeDelegate 2.1", + "QtQuick.Templates/SwipeDelegate 2.2" + ] + exportMetaObjectRevisions: [0, 1, 2] + attachedType: "QQuickSwipeDelegateAttached" + Enum { + name: "Side" + values: { + "Left": 1, + "Right": -1 + } + } + Property { name: "swipe"; type: "QQuickSwipe"; isReadonly: true; isPointer: true } + } + Component { + name: "QQuickSwipeDelegateAttached" + prototype: "QObject" + Property { name: "pressed"; type: "bool"; isReadonly: true } + Signal { name: "clicked" } + } + Component { + name: "QQuickSwipeView" + defaultProperty: "contentData" + prototype: "QQuickContainer" + exports: [ + "QtQuick.Templates/SwipeView 2.0", + "QtQuick.Templates/SwipeView 2.1", + "QtQuick.Templates/SwipeView 2.2" + ] + exportMetaObjectRevisions: [0, 1, 2] + attachedType: "QQuickSwipeViewAttached" + Property { name: "interactive"; revision: 1; type: "bool" } + Property { name: "orientation"; revision: 2; type: "Qt::Orientation" } + Property { name: "horizontal"; revision: 3; type: "bool"; isReadonly: true } + Property { name: "vertical"; revision: 3; type: "bool"; isReadonly: true } + Signal { name: "interactiveChanged"; revision: 1 } + Signal { name: "orientationChanged"; revision: 2 } + } + Component { + name: "QQuickSwipeViewAttached" + prototype: "QObject" + Property { name: "index"; type: "int"; isReadonly: true } + Property { name: "isCurrentItem"; type: "bool"; isReadonly: true } + Property { name: "view"; type: "QQuickSwipeView"; isReadonly: true; isPointer: true } + Property { name: "isNextItem"; revision: 1; type: "bool"; isReadonly: true } + Property { name: "isPreviousItem"; revision: 1; type: "bool"; isReadonly: true } + } + Component { + name: "QQuickSwitch" + defaultProperty: "data" + prototype: "QQuickAbstractButton" + exports: ["QtQuick.Templates/Switch 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "position"; type: "double" } + Property { name: "visualPosition"; type: "double"; isReadonly: true } + } + Component { + name: "QQuickSwitchDelegate" + defaultProperty: "data" + prototype: "QQuickItemDelegate" + exports: ["QtQuick.Templates/SwitchDelegate 2.0"] + exportMetaObjectRevisions: [0] + Property { name: "position"; type: "double" } + Property { name: "visualPosition"; type: "double"; isReadonly: true } + } + Component { + name: "QQuickTabBar" + defaultProperty: "contentData" + prototype: "QQuickContainer" + exports: [ + "QtQuick.Templates/TabBar 2.0", + "QtQuick.Templates/TabBar 2.2" + ] + exportMetaObjectRevisions: [0, 2] + attachedType: "QQuickTabBarAttached" + Enum { + name: "Position" + values: { + "Header": 0, + "Footer": 1 + } + } + Property { name: "position"; type: "Position" } + Property { name: "contentWidth"; revision: 2; type: "double" } + Property { name: "contentHeight"; revision: 2; type: "double" } + } + Component { + name: "QQuickTabBarAttached" + prototype: "QObject" + Property { name: "index"; type: "int"; isReadonly: true } + Property { name: "tabBar"; type: "QQuickTabBar"; isReadonly: true; isPointer: true } + Property { name: "position"; type: "QQuickTabBar::Position"; isReadonly: true } + } + Component { + name: "QQuickTabButton" + defaultProperty: "data" + prototype: "QQuickAbstractButton" + exports: ["QtQuick.Templates/TabButton 2.0"] + exportMetaObjectRevisions: [0] + } + Component { + name: "QQuickTableView" + defaultProperty: "flickableData" + prototype: "QQuickFlickable" + exports: ["QtQuick.Templates/__TableView__ 2.15"] + exportMetaObjectRevisions: [15] + attachedType: "QQuickTableViewAttached" + Property { name: "rows"; type: "int"; isReadonly: true } + Property { name: "columns"; type: "int"; isReadonly: true } + Property { name: "rowSpacing"; type: "double" } + Property { name: "columnSpacing"; type: "double" } + Property { name: "rowHeightProvider"; type: "QJSValue" } + Property { name: "columnWidthProvider"; type: "QJSValue" } + Property { name: "model"; type: "QVariant" } + Property { name: "delegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "reuseItems"; type: "bool" } + Property { name: "contentWidth"; type: "double" } + Property { name: "contentHeight"; type: "double" } + Property { name: "syncView"; revision: 14; type: "QQuickTableView"; isPointer: true } + Property { name: "syncDirection"; revision: 14; type: "Qt::Orientations" } + Signal { name: "syncViewChanged"; revision: 14 } + Signal { name: "syncDirectionChanged"; revision: 14 } + Method { name: "forceLayout" } + } + Component { + name: "QQuickTableViewAttached" + prototype: "QObject" + Property { name: "view"; type: "QQuickTableView"; isReadonly: true; isPointer: true } + Signal { name: "pooled" } + Signal { name: "reused" } + } + Component { + name: "QQuickText" + defaultProperty: "data" + prototype: "QQuickImplicitSizeItem" + Enum { + name: "HAlignment" + values: { + "AlignLeft": 1, + "AlignRight": 2, + "AlignHCenter": 4, + "AlignJustify": 8 + } + } + Enum { + name: "VAlignment" + values: { + "AlignTop": 32, + "AlignBottom": 64, + "AlignVCenter": 128 + } + } + Enum { + name: "TextStyle" + values: { + "Normal": 0, + "Outline": 1, + "Raised": 2, + "Sunken": 3 + } + } + Enum { + name: "TextFormat" + values: { + "PlainText": 0, + "RichText": 1, + "MarkdownText": 3, + "AutoText": 2, + "StyledText": 4 + } + } + Enum { + name: "TextElideMode" + values: { + "ElideLeft": 0, + "ElideRight": 1, + "ElideMiddle": 2, + "ElideNone": 3 + } + } + Enum { + name: "WrapMode" + values: { + "NoWrap": 0, + "WordWrap": 1, + "WrapAnywhere": 3, + "WrapAtWordBoundaryOrAnywhere": 4, + "Wrap": 4 + } + } + Enum { + name: "RenderType" + values: { + "QtRendering": 0, + "NativeRendering": 1 + } + } + Enum { + name: "LineHeightMode" + values: { + "ProportionalHeight": 0, + "FixedHeight": 1 + } + } + Enum { + name: "FontSizeMode" + values: { + "FixedSize": 0, + "HorizontalFit": 1, + "VerticalFit": 2, + "Fit": 3 + } + } + Property { name: "text"; type: "string" } + Property { name: "font"; type: "QFont" } + Property { name: "color"; type: "QColor" } + Property { name: "linkColor"; type: "QColor" } + Property { name: "style"; type: "TextStyle" } + Property { name: "styleColor"; type: "QColor" } + Property { name: "horizontalAlignment"; type: "HAlignment" } + Property { name: "effectiveHorizontalAlignment"; type: "HAlignment"; isReadonly: true } + Property { name: "verticalAlignment"; type: "VAlignment" } + Property { name: "wrapMode"; type: "WrapMode" } + Property { name: "lineCount"; type: "int"; isReadonly: true } + Property { name: "truncated"; type: "bool"; isReadonly: true } + Property { name: "maximumLineCount"; type: "int" } + Property { name: "textFormat"; type: "TextFormat" } + Property { name: "elide"; type: "TextElideMode" } + Property { name: "contentWidth"; type: "double"; isReadonly: true } + Property { name: "contentHeight"; type: "double"; isReadonly: true } + Property { name: "paintedWidth"; type: "double"; isReadonly: true } + Property { name: "paintedHeight"; type: "double"; isReadonly: true } + Property { name: "lineHeight"; type: "double" } + Property { name: "lineHeightMode"; type: "LineHeightMode" } + Property { name: "baseUrl"; type: "QUrl" } + Property { name: "minimumPixelSize"; type: "int" } + Property { name: "minimumPointSize"; type: "int" } + Property { name: "fontSizeMode"; type: "FontSizeMode" } + Property { name: "renderType"; type: "RenderType" } + Property { name: "hoveredLink"; revision: 2; type: "string"; isReadonly: true } + Property { name: "padding"; revision: 6; type: "double" } + Property { name: "topPadding"; revision: 6; type: "double" } + Property { name: "leftPadding"; revision: 6; type: "double" } + Property { name: "rightPadding"; revision: 6; type: "double" } + Property { name: "bottomPadding"; revision: 6; type: "double" } + Property { name: "fontInfo"; revision: 9; type: "QJSValue"; isReadonly: true } + Property { name: "advance"; revision: 10; type: "QSizeF"; isReadonly: true } + Signal { + name: "textChanged" + Parameter { name: "text"; type: "string" } + } + Signal { + name: "linkActivated" + Parameter { name: "link"; type: "string" } + } + Signal { + name: "linkHovered" + revision: 2 + Parameter { name: "link"; type: "string" } + } + Signal { + name: "fontChanged" + Parameter { name: "font"; type: "QFont" } + } + Signal { + name: "styleChanged" + Parameter { name: "style"; type: "QQuickText::TextStyle" } + } + Signal { + name: "horizontalAlignmentChanged" + Parameter { name: "alignment"; type: "QQuickText::HAlignment" } + } + Signal { + name: "verticalAlignmentChanged" + Parameter { name: "alignment"; type: "QQuickText::VAlignment" } + } + Signal { + name: "textFormatChanged" + Parameter { name: "textFormat"; type: "QQuickText::TextFormat" } + } + Signal { + name: "elideModeChanged" + Parameter { name: "mode"; type: "QQuickText::TextElideMode" } + } + Signal { name: "contentSizeChanged" } + Signal { + name: "contentWidthChanged" + Parameter { name: "contentWidth"; type: "double" } + } + Signal { + name: "contentHeightChanged" + Parameter { name: "contentHeight"; type: "double" } + } + Signal { + name: "lineHeightChanged" + Parameter { name: "lineHeight"; type: "double" } + } + Signal { + name: "lineHeightModeChanged" + Parameter { name: "mode"; type: "LineHeightMode" } + } + Signal { + name: "lineLaidOut" + Parameter { name: "line"; type: "QQuickTextLine"; isPointer: true } + } + Signal { name: "paddingChanged"; revision: 6 } + Signal { name: "topPaddingChanged"; revision: 6 } + Signal { name: "leftPaddingChanged"; revision: 6 } + Signal { name: "rightPaddingChanged"; revision: 6 } + Signal { name: "bottomPaddingChanged"; revision: 6 } + Signal { name: "fontInfoChanged"; revision: 9 } + Method { name: "doLayout" } + Method { name: "forceLayout"; revision: 9 } + Method { + name: "linkAt" + revision: 3 + type: "string" + Parameter { name: "x"; type: "double" } + Parameter { name: "y"; type: "double" } + } + } + Component { + name: "QQuickTextArea" + defaultProperty: "data" + prototype: "QQuickTextEdit" + exports: [ + "QtQuick.Templates/TextArea 2.0", + "QtQuick.Templates/TextArea 2.1", + "QtQuick.Templates/TextArea 2.3", + "QtQuick.Templates/TextArea 2.5" + ] + exportMetaObjectRevisions: [0, 1, 3, 5] + attachedType: "QQuickTextAreaAttached" + Property { name: "font"; type: "QFont" } + Property { name: "implicitWidth"; type: "double" } + Property { name: "implicitHeight"; type: "double" } + Property { name: "background"; type: "QQuickItem"; isPointer: true } + Property { name: "placeholderText"; type: "string" } + Property { name: "focusReason"; type: "Qt::FocusReason" } + Property { name: "hovered"; revision: 1; type: "bool"; isReadonly: true } + Property { name: "hoverEnabled"; revision: 1; type: "bool" } + Property { name: "palette"; revision: 3; type: "QPalette" } + Property { name: "placeholderTextColor"; revision: 5; type: "QColor" } + Property { name: "implicitBackgroundWidth"; revision: 5; type: "double"; isReadonly: true } + Property { name: "implicitBackgroundHeight"; revision: 5; type: "double"; isReadonly: true } + Property { name: "topInset"; revision: 5; type: "double" } + Property { name: "leftInset"; revision: 5; type: "double" } + Property { name: "rightInset"; revision: 5; type: "double" } + Property { name: "bottomInset"; revision: 5; type: "double" } + Signal { name: "implicitWidthChanged3" } + Signal { name: "implicitHeightChanged3" } + Signal { + name: "pressAndHold" + Parameter { name: "event"; type: "QQuickMouseEvent"; isPointer: true } + } + Signal { + name: "pressed" + revision: 1 + Parameter { name: "event"; type: "QQuickMouseEvent"; isPointer: true } + } + Signal { + name: "released" + revision: 1 + Parameter { name: "event"; type: "QQuickMouseEvent"; isPointer: true } + } + Signal { name: "hoveredChanged"; revision: 1 } + Signal { name: "hoverEnabledChanged"; revision: 1 } + Signal { name: "paletteChanged"; revision: 3 } + Signal { name: "placeholderTextColorChanged"; revision: 5 } + Signal { name: "implicitBackgroundWidthChanged"; revision: 5 } + Signal { name: "implicitBackgroundHeightChanged"; revision: 5 } + Signal { name: "topInsetChanged"; revision: 5 } + Signal { name: "leftInsetChanged"; revision: 5 } + Signal { name: "rightInsetChanged"; revision: 5 } + Signal { name: "bottomInsetChanged"; revision: 5 } + } + Component { + name: "QQuickTextAreaAttached" + prototype: "QObject" + Property { name: "flickable"; type: "QQuickTextArea"; isPointer: true } + } + Component { + name: "QQuickTextEdit" + defaultProperty: "data" + prototype: "QQuickImplicitSizeItem" + Enum { + name: "HAlignment" + values: { + "AlignLeft": 1, + "AlignRight": 2, + "AlignHCenter": 4, + "AlignJustify": 8 + } + } + Enum { + name: "VAlignment" + values: { + "AlignTop": 32, + "AlignBottom": 64, + "AlignVCenter": 128 + } + } + Enum { + name: "TextFormat" + values: { + "PlainText": 0, + "RichText": 1, + "AutoText": 2, + "MarkdownText": 3 + } + } + Enum { + name: "WrapMode" + values: { + "NoWrap": 0, + "WordWrap": 1, + "WrapAnywhere": 3, + "WrapAtWordBoundaryOrAnywhere": 4, + "Wrap": 4 + } + } + Enum { + name: "SelectionMode" + values: { + "SelectCharacters": 0, + "SelectWords": 1 + } + } + Enum { + name: "RenderType" + values: { + "QtRendering": 0, + "NativeRendering": 1 + } + } + Property { name: "text"; type: "string" } + Property { name: "color"; type: "QColor" } + Property { name: "selectionColor"; type: "QColor" } + Property { name: "selectedTextColor"; type: "QColor" } + Property { name: "font"; type: "QFont" } + Property { name: "horizontalAlignment"; type: "HAlignment" } + Property { name: "effectiveHorizontalAlignment"; type: "HAlignment"; isReadonly: true } + Property { name: "verticalAlignment"; type: "VAlignment" } + Property { name: "wrapMode"; type: "WrapMode" } + Property { name: "lineCount"; type: "int"; isReadonly: true } + Property { name: "length"; type: "int"; isReadonly: true } + Property { name: "contentWidth"; type: "double"; isReadonly: true } + Property { name: "contentHeight"; type: "double"; isReadonly: true } + Property { name: "paintedWidth"; type: "double"; isReadonly: true } + Property { name: "paintedHeight"; type: "double"; isReadonly: true } + Property { name: "textFormat"; type: "TextFormat" } + Property { name: "readOnly"; type: "bool" } + Property { name: "cursorVisible"; type: "bool" } + Property { name: "cursorPosition"; type: "int" } + Property { name: "cursorRectangle"; type: "QRectF"; isReadonly: true } + Property { name: "cursorDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "overwriteMode"; type: "bool" } + Property { name: "selectionStart"; type: "int"; isReadonly: true } + Property { name: "selectionEnd"; type: "int"; isReadonly: true } + Property { name: "selectedText"; type: "string"; isReadonly: true } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "persistentSelection"; type: "bool" } + Property { name: "textMargin"; type: "double" } + Property { name: "inputMethodHints"; type: "Qt::InputMethodHints" } + Property { name: "selectByKeyboard"; revision: 1; type: "bool" } + Property { name: "selectByMouse"; type: "bool" } + Property { name: "mouseSelectionMode"; type: "SelectionMode" } + Property { name: "canPaste"; type: "bool"; isReadonly: true } + Property { name: "canUndo"; type: "bool"; isReadonly: true } + Property { name: "canRedo"; type: "bool"; isReadonly: true } + Property { name: "inputMethodComposing"; type: "bool"; isReadonly: true } + Property { name: "baseUrl"; type: "QUrl" } + Property { name: "renderType"; type: "RenderType" } + Property { + name: "textDocument" + revision: 1 + type: "QQuickTextDocument" + isReadonly: true + isPointer: true + } + Property { name: "hoveredLink"; revision: 2; type: "string"; isReadonly: true } + Property { name: "padding"; revision: 6; type: "double" } + Property { name: "topPadding"; revision: 6; type: "double" } + Property { name: "leftPadding"; revision: 6; type: "double" } + Property { name: "rightPadding"; revision: 6; type: "double" } + Property { name: "bottomPadding"; revision: 6; type: "double" } + Property { name: "preeditText"; revision: 7; type: "string"; isReadonly: true } + Property { name: "tabStopDistance"; revision: 10; type: "double" } + Signal { name: "preeditTextChanged"; revision: 7 } + Signal { name: "contentSizeChanged" } + Signal { + name: "colorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "selectionColorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "selectedTextColorChanged" + Parameter { name: "color"; type: "QColor" } + } + Signal { + name: "fontChanged" + Parameter { name: "font"; type: "QFont" } + } + Signal { + name: "horizontalAlignmentChanged" + Parameter { name: "alignment"; type: "QQuickTextEdit::HAlignment" } + } + Signal { + name: "verticalAlignmentChanged" + Parameter { name: "alignment"; type: "QQuickTextEdit::VAlignment" } + } + Signal { + name: "textFormatChanged" + Parameter { name: "textFormat"; type: "QQuickTextEdit::TextFormat" } + } + Signal { + name: "readOnlyChanged" + Parameter { name: "isReadOnly"; type: "bool" } + } + Signal { + name: "cursorVisibleChanged" + Parameter { name: "isCursorVisible"; type: "bool" } + } + Signal { + name: "overwriteModeChanged" + Parameter { name: "overwriteMode"; type: "bool" } + } + Signal { + name: "activeFocusOnPressChanged" + Parameter { name: "activeFocusOnPressed"; type: "bool" } + } + Signal { + name: "persistentSelectionChanged" + Parameter { name: "isPersistentSelection"; type: "bool" } + } + Signal { + name: "textMarginChanged" + Parameter { name: "textMargin"; type: "double" } + } + Signal { + name: "selectByKeyboardChanged" + revision: 1 + Parameter { name: "selectByKeyboard"; type: "bool" } + } + Signal { + name: "selectByMouseChanged" + Parameter { name: "selectByMouse"; type: "bool" } + } + Signal { + name: "mouseSelectionModeChanged" + Parameter { name: "mode"; type: "QQuickTextEdit::SelectionMode" } + } + Signal { + name: "linkActivated" + Parameter { name: "link"; type: "string" } + } + Signal { + name: "linkHovered" + revision: 2 + Parameter { name: "link"; type: "string" } + } + Signal { name: "editingFinished"; revision: 6 } + Signal { name: "paddingChanged"; revision: 6 } + Signal { name: "topPaddingChanged"; revision: 6 } + Signal { name: "leftPaddingChanged"; revision: 6 } + Signal { name: "rightPaddingChanged"; revision: 6 } + Signal { name: "bottomPaddingChanged"; revision: 6 } + Signal { + name: "tabStopDistanceChanged" + revision: 10 + Parameter { name: "distance"; type: "double" } + } + Method { name: "selectAll" } + Method { name: "selectWord" } + Method { + name: "select" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Method { name: "deselect" } + Method { + name: "isRightToLeft" + type: "bool" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Method { name: "cut" } + Method { name: "copy" } + Method { name: "paste" } + Method { name: "undo" } + Method { name: "redo" } + Method { + name: "insert" + Parameter { name: "position"; type: "int" } + Parameter { name: "text"; type: "string" } + } + Method { + name: "remove" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Method { + name: "append" + revision: 2 + Parameter { name: "text"; type: "string" } + } + Method { name: "clear"; revision: 7 } + Method { + name: "inputMethodQuery" + revision: 4 + type: "QVariant" + Parameter { name: "query"; type: "Qt::InputMethodQuery" } + Parameter { name: "argument"; type: "QVariant" } + } + Method { + name: "positionToRectangle" + type: "QRectF" + Parameter { type: "int" } + } + Method { + name: "positionAt" + type: "int" + Parameter { name: "x"; type: "double" } + Parameter { name: "y"; type: "double" } + } + Method { + name: "moveCursorSelection" + Parameter { name: "pos"; type: "int" } + } + Method { + name: "moveCursorSelection" + Parameter { name: "pos"; type: "int" } + Parameter { name: "mode"; type: "SelectionMode" } + } + Method { + name: "getText" + type: "string" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Method { + name: "getFormattedText" + type: "string" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Method { + name: "linkAt" + revision: 3 + type: "string" + Parameter { name: "x"; type: "double" } + Parameter { name: "y"; type: "double" } + } + } + Component { + name: "QQuickTextField" + defaultProperty: "data" + prototype: "QQuickTextInput" + exports: [ + "QtQuick.Templates/TextField 2.0", + "QtQuick.Templates/TextField 2.1", + "QtQuick.Templates/TextField 2.3", + "QtQuick.Templates/TextField 2.5" + ] + exportMetaObjectRevisions: [0, 1, 3, 5] + Property { name: "font"; type: "QFont" } + Property { name: "implicitWidth"; type: "double" } + Property { name: "implicitHeight"; type: "double" } + Property { name: "background"; type: "QQuickItem"; isPointer: true } + Property { name: "placeholderText"; type: "string" } + Property { name: "focusReason"; type: "Qt::FocusReason" } + Property { name: "hovered"; revision: 1; type: "bool"; isReadonly: true } + Property { name: "hoverEnabled"; revision: 1; type: "bool" } + Property { name: "palette"; revision: 3; type: "QPalette" } + Property { name: "placeholderTextColor"; revision: 5; type: "QColor" } + Property { name: "implicitBackgroundWidth"; revision: 5; type: "double"; isReadonly: true } + Property { name: "implicitBackgroundHeight"; revision: 5; type: "double"; isReadonly: true } + Property { name: "topInset"; revision: 5; type: "double" } + Property { name: "leftInset"; revision: 5; type: "double" } + Property { name: "rightInset"; revision: 5; type: "double" } + Property { name: "bottomInset"; revision: 5; type: "double" } + Signal { name: "implicitWidthChanged3" } + Signal { name: "implicitHeightChanged3" } + Signal { + name: "pressAndHold" + Parameter { name: "event"; type: "QQuickMouseEvent"; isPointer: true } + } + Signal { + name: "pressed" + revision: 1 + Parameter { name: "event"; type: "QQuickMouseEvent"; isPointer: true } + } + Signal { + name: "released" + revision: 1 + Parameter { name: "event"; type: "QQuickMouseEvent"; isPointer: true } + } + Signal { name: "hoveredChanged"; revision: 1 } + Signal { name: "hoverEnabledChanged"; revision: 1 } + Signal { name: "paletteChanged"; revision: 3 } + Signal { name: "placeholderTextColorChanged"; revision: 5 } + Signal { name: "implicitBackgroundWidthChanged"; revision: 5 } + Signal { name: "implicitBackgroundHeightChanged"; revision: 5 } + Signal { name: "topInsetChanged"; revision: 5 } + Signal { name: "leftInsetChanged"; revision: 5 } + Signal { name: "rightInsetChanged"; revision: 5 } + Signal { name: "bottomInsetChanged"; revision: 5 } + } + Component { + name: "QQuickTextInput" + defaultProperty: "data" + prototype: "QQuickImplicitSizeItem" + Enum { + name: "EchoMode" + values: { + "Normal": 0, + "NoEcho": 1, + "Password": 2, + "PasswordEchoOnEdit": 3 + } + } + Enum { + name: "HAlignment" + values: { + "AlignLeft": 1, + "AlignRight": 2, + "AlignHCenter": 4 + } + } + Enum { + name: "VAlignment" + values: { + "AlignTop": 32, + "AlignBottom": 64, + "AlignVCenter": 128 + } + } + Enum { + name: "WrapMode" + values: { + "NoWrap": 0, + "WordWrap": 1, + "WrapAnywhere": 3, + "WrapAtWordBoundaryOrAnywhere": 4, + "Wrap": 4 + } + } + Enum { + name: "SelectionMode" + values: { + "SelectCharacters": 0, + "SelectWords": 1 + } + } + Enum { + name: "CursorPosition" + values: { + "CursorBetweenCharacters": 0, + "CursorOnCharacter": 1 + } + } + Enum { + name: "RenderType" + values: { + "QtRendering": 0, + "NativeRendering": 1 + } + } + Property { name: "text"; type: "string" } + Property { name: "length"; type: "int"; isReadonly: true } + Property { name: "color"; type: "QColor" } + Property { name: "selectionColor"; type: "QColor" } + Property { name: "selectedTextColor"; type: "QColor" } + Property { name: "font"; type: "QFont" } + Property { name: "horizontalAlignment"; type: "HAlignment" } + Property { name: "effectiveHorizontalAlignment"; type: "HAlignment"; isReadonly: true } + Property { name: "verticalAlignment"; type: "VAlignment" } + Property { name: "wrapMode"; type: "WrapMode" } + Property { name: "readOnly"; type: "bool" } + Property { name: "cursorVisible"; type: "bool" } + Property { name: "cursorPosition"; type: "int" } + Property { name: "cursorRectangle"; type: "QRectF"; isReadonly: true } + Property { name: "cursorDelegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "overwriteMode"; type: "bool" } + Property { name: "selectionStart"; type: "int"; isReadonly: true } + Property { name: "selectionEnd"; type: "int"; isReadonly: true } + Property { name: "selectedText"; type: "string"; isReadonly: true } + Property { name: "maximumLength"; type: "int" } + Property { name: "validator"; type: "QValidator"; isPointer: true } + Property { name: "inputMask"; type: "string" } + Property { name: "inputMethodHints"; type: "Qt::InputMethodHints" } + Property { name: "acceptableInput"; type: "bool"; isReadonly: true } + Property { name: "echoMode"; type: "EchoMode" } + Property { name: "activeFocusOnPress"; type: "bool" } + Property { name: "passwordCharacter"; type: "string" } + Property { name: "passwordMaskDelay"; revision: 4; type: "int" } + Property { name: "displayText"; type: "string"; isReadonly: true } + Property { name: "preeditText"; revision: 7; type: "string"; isReadonly: true } + Property { name: "autoScroll"; type: "bool" } + Property { name: "selectByMouse"; type: "bool" } + Property { name: "mouseSelectionMode"; type: "SelectionMode" } + Property { name: "persistentSelection"; type: "bool" } + Property { name: "canPaste"; type: "bool"; isReadonly: true } + Property { name: "canUndo"; type: "bool"; isReadonly: true } + Property { name: "canRedo"; type: "bool"; isReadonly: true } + Property { name: "inputMethodComposing"; type: "bool"; isReadonly: true } + Property { name: "contentWidth"; type: "double"; isReadonly: true } + Property { name: "contentHeight"; type: "double"; isReadonly: true } + Property { name: "renderType"; type: "RenderType" } + Property { name: "padding"; revision: 6; type: "double" } + Property { name: "topPadding"; revision: 6; type: "double" } + Property { name: "leftPadding"; revision: 6; type: "double" } + Property { name: "rightPadding"; revision: 6; type: "double" } + Property { name: "bottomPadding"; revision: 6; type: "double" } + Signal { name: "accepted" } + Signal { name: "editingFinished"; revision: 2 } + Signal { name: "textEdited"; revision: 9 } + Signal { + name: "fontChanged" + Parameter { name: "font"; type: "QFont" } + } + Signal { + name: "horizontalAlignmentChanged" + Parameter { name: "alignment"; type: "QQuickTextInput::HAlignment" } + } + Signal { + name: "verticalAlignmentChanged" + Parameter { name: "alignment"; type: "QQuickTextInput::VAlignment" } + } + Signal { + name: "readOnlyChanged" + Parameter { name: "isReadOnly"; type: "bool" } + } + Signal { + name: "cursorVisibleChanged" + Parameter { name: "isCursorVisible"; type: "bool" } + } + Signal { + name: "overwriteModeChanged" + Parameter { name: "overwriteMode"; type: "bool" } + } + Signal { + name: "maximumLengthChanged" + Parameter { name: "maximumLength"; type: "int" } + } + Signal { + name: "inputMaskChanged" + Parameter { name: "inputMask"; type: "string" } + } + Signal { + name: "echoModeChanged" + Parameter { name: "echoMode"; type: "QQuickTextInput::EchoMode" } + } + Signal { + name: "passwordMaskDelayChanged" + revision: 4 + Parameter { name: "delay"; type: "int" } + } + Signal { name: "preeditTextChanged"; revision: 7 } + Signal { + name: "activeFocusOnPressChanged" + Parameter { name: "activeFocusOnPress"; type: "bool" } + } + Signal { + name: "autoScrollChanged" + Parameter { name: "autoScroll"; type: "bool" } + } + Signal { + name: "selectByMouseChanged" + Parameter { name: "selectByMouse"; type: "bool" } + } + Signal { + name: "mouseSelectionModeChanged" + Parameter { name: "mode"; type: "QQuickTextInput::SelectionMode" } + } + Signal { name: "contentSizeChanged" } + Signal { name: "paddingChanged"; revision: 6 } + Signal { name: "topPaddingChanged"; revision: 6 } + Signal { name: "leftPaddingChanged"; revision: 6 } + Signal { name: "rightPaddingChanged"; revision: 6 } + Signal { name: "bottomPaddingChanged"; revision: 6 } + Method { name: "selectAll" } + Method { name: "selectWord" } + Method { + name: "select" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Method { name: "deselect" } + Method { + name: "isRightToLeft" + type: "bool" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Method { name: "cut" } + Method { name: "copy" } + Method { name: "paste" } + Method { name: "undo" } + Method { name: "redo" } + Method { + name: "insert" + Parameter { name: "position"; type: "int" } + Parameter { name: "text"; type: "string" } + } + Method { + name: "remove" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + Method { + name: "ensureVisible" + revision: 4 + Parameter { name: "position"; type: "int" } + } + Method { name: "clear"; revision: 7 } + Method { + name: "positionAt" + Parameter { name: "args"; type: "QQmlV4Function"; isPointer: true } + } + Method { + name: "positionToRectangle" + type: "QRectF" + Parameter { name: "pos"; type: "int" } + } + Method { + name: "moveCursorSelection" + Parameter { name: "pos"; type: "int" } + } + Method { + name: "moveCursorSelection" + Parameter { name: "pos"; type: "int" } + Parameter { name: "mode"; type: "SelectionMode" } + } + Method { + name: "inputMethodQuery" + revision: 4 + type: "QVariant" + Parameter { name: "query"; type: "Qt::InputMethodQuery" } + Parameter { name: "argument"; type: "QVariant" } + } + Method { + name: "getText" + type: "string" + Parameter { name: "start"; type: "int" } + Parameter { name: "end"; type: "int" } + } + } + Component { + name: "QQuickToolBar" + defaultProperty: "contentData" + prototype: "QQuickPane" + exports: ["QtQuick.Templates/ToolBar 2.0"] + exportMetaObjectRevisions: [0] + Enum { + name: "Position" + values: { + "Header": 0, + "Footer": 1 + } + } + Property { name: "position"; type: "Position" } + } + Component { + name: "QQuickToolButton" + defaultProperty: "data" + prototype: "QQuickButton" + exports: ["QtQuick.Templates/ToolButton 2.0"] + exportMetaObjectRevisions: [0] + } + Component { + name: "QQuickToolSeparator" + defaultProperty: "data" + prototype: "QQuickControl" + exports: ["QtQuick.Templates/ToolSeparator 2.1"] + exportMetaObjectRevisions: [0] + Property { name: "orientation"; type: "Qt::Orientation" } + Property { name: "horizontal"; type: "bool"; isReadonly: true } + Property { name: "vertical"; type: "bool"; isReadonly: true } + } + Component { + name: "QQuickToolTip" + defaultProperty: "contentData" + prototype: "QQuickPopup" + exports: [ + "QtQuick.Templates/ToolTip 2.0", + "QtQuick.Templates/ToolTip 2.5" + ] + exportMetaObjectRevisions: [0, 5] + attachedType: "QQuickToolTipAttached" + Property { name: "delay"; type: "int" } + Property { name: "timeout"; type: "int" } + Property { name: "text"; type: "string" } + Method { + name: "show" + revision: 5 + Parameter { name: "text"; type: "string" } + Parameter { name: "ms"; type: "int" } + } + Method { + name: "show" + revision: 5 + Parameter { name: "text"; type: "string" } + } + Method { name: "hide"; revision: 5 } + } + Component { + name: "QQuickToolTipAttached" + prototype: "QObject" + Property { name: "text"; type: "string" } + Property { name: "delay"; type: "int" } + Property { name: "timeout"; type: "int" } + Property { name: "visible"; type: "bool" } + Property { name: "toolTip"; type: "QQuickToolTip"; isReadonly: true; isPointer: true } + Method { + name: "show" + Parameter { name: "text"; type: "string" } + Parameter { name: "ms"; type: "int" } + } + Method { + name: "show" + Parameter { name: "text"; type: "string" } + } + Method { name: "hide" } + } + Component { + name: "QQuickTumbler" + defaultProperty: "data" + prototype: "QQuickControl" + exports: [ + "QtQuick.Templates/Tumbler 2.0", + "QtQuick.Templates/Tumbler 2.1", + "QtQuick.Templates/Tumbler 2.2" + ] + exportMetaObjectRevisions: [0, 1, 2] + attachedType: "QQuickTumblerAttached" + Enum { + name: "PositionMode" + values: { + "Beginning": 0, + "Center": 1, + "End": 2, + "Visible": 3, + "Contain": 4, + "SnapPosition": 5 + } + } + Property { name: "model"; type: "QVariant" } + Property { name: "count"; type: "int"; isReadonly: true } + Property { name: "currentIndex"; type: "int" } + Property { name: "currentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "delegate"; type: "QQmlComponent"; isPointer: true } + Property { name: "visibleItemCount"; type: "int" } + Property { name: "wrap"; revision: 1; type: "bool" } + Property { name: "moving"; revision: 2; type: "bool"; isReadonly: true } + Signal { name: "wrapChanged"; revision: 1 } + Signal { name: "movingChanged"; revision: 2 } + Method { + name: "positionViewAtIndex" + revision: 5 + Parameter { name: "index"; type: "int" } + Parameter { name: "mode"; type: "PositionMode" } + } + } + Component { + name: "QQuickTumblerAttached" + prototype: "QObject" + Property { name: "tumbler"; type: "QQuickTumbler"; isReadonly: true; isPointer: true } + Property { name: "displacement"; type: "double"; isReadonly: true } + } + Component { + name: "QQuickVerticalHeaderView" + defaultProperty: "flickableData" + prototype: "QQuickHeaderViewBase" + exports: ["QtQuick.Templates/VerticalHeaderView 2.15"] + exportMetaObjectRevisions: [0] + attachedType: "QQuickTableViewAttached" + } + Component { + name: "QQuickWindow" + defaultProperty: "data" + prototype: "QWindow" + Enum { + name: "CreateTextureOptions" + values: { + "TextureHasAlphaChannel": 1, + "TextureHasMipmaps": 2, + "TextureOwnsGLTexture": 4, + "TextureCanUseAtlas": 8, + "TextureIsOpaque": 16 + } + } + Enum { + name: "SceneGraphError" + values: { + "ContextNotAvailable": 1 + } + } + Enum { + name: "TextRenderType" + values: { + "QtTextRendering": 0, + "NativeTextRendering": 1 + } + } + Enum { + name: "NativeObjectType" + values: { + "NativeObjectTexture": 0 + } + } + Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "color"; type: "QColor" } + Property { name: "contentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { + name: "activeFocusItem" + revision: 1 + type: "QQuickItem" + isReadonly: true + isPointer: true + } + Signal { name: "frameSwapped" } + Signal { + name: "openglContextCreated" + revision: 2 + Parameter { name: "context"; type: "QOpenGLContext"; isPointer: true } + } + Signal { name: "sceneGraphInitialized" } + Signal { name: "sceneGraphInvalidated" } + Signal { name: "beforeSynchronizing" } + Signal { name: "afterSynchronizing"; revision: 2 } + Signal { name: "beforeRendering" } + Signal { name: "afterRendering" } + Signal { name: "afterAnimating"; revision: 2 } + Signal { name: "sceneGraphAboutToStop"; revision: 2 } + Signal { + name: "closing" + revision: 1 + Parameter { name: "close"; type: "QQuickCloseEvent"; isPointer: true } + } + Signal { + name: "colorChanged" + Parameter { type: "QColor" } + } + Signal { name: "activeFocusItemChanged"; revision: 1 } + Signal { + name: "sceneGraphError" + revision: 2 + Parameter { name: "error"; type: "QQuickWindow::SceneGraphError" } + Parameter { name: "message"; type: "string" } + } + Signal { name: "beforeRenderPassRecording"; revision: 14 } + Signal { name: "afterRenderPassRecording"; revision: 14 } + Method { name: "update" } + Method { name: "releaseResources" } + } + Component { + name: "QQuickWindowQmlImpl" + defaultProperty: "data" + prototype: "QQuickWindow" + Property { name: "visible"; type: "bool" } + Property { name: "visibility"; type: "Visibility" } + Property { name: "screen"; revision: 3; type: "QObject"; isPointer: true } + Signal { + name: "visibleChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "visibilityChanged" + Parameter { name: "visibility"; type: "QWindow::Visibility" } + } + Signal { name: "screenChanged"; revision: 3 } + } + Component { + name: "QWindow" + prototype: "QObject" + Enum { + name: "Visibility" + values: { + "Hidden": 0, + "AutomaticVisibility": 1, + "Windowed": 2, + "Minimized": 3, + "Maximized": 4, + "FullScreen": 5 + } + } + Enum { + name: "AncestorMode" + values: { + "ExcludeTransients": 0, + "IncludeTransients": 1 + } + } + Property { name: "title"; type: "string" } + Property { name: "modality"; type: "Qt::WindowModality" } + Property { name: "flags"; type: "Qt::WindowFlags" } + Property { name: "x"; type: "int" } + Property { name: "y"; type: "int" } + Property { name: "width"; type: "int" } + Property { name: "height"; type: "int" } + Property { name: "minimumWidth"; type: "int" } + Property { name: "minimumHeight"; type: "int" } + Property { name: "maximumWidth"; type: "int" } + Property { name: "maximumHeight"; type: "int" } + Property { name: "visible"; type: "bool" } + Property { name: "active"; revision: 1; type: "bool"; isReadonly: true } + Property { name: "visibility"; revision: 1; type: "Visibility" } + Property { name: "contentOrientation"; type: "Qt::ScreenOrientation" } + Property { name: "opacity"; revision: 1; type: "double" } + Property { name: "transientParent"; revision: 13; type: "QWindow"; isPointer: true } + Signal { + name: "screenChanged" + Parameter { name: "screen"; type: "QScreen"; isPointer: true } + } + Signal { + name: "modalityChanged" + Parameter { name: "modality"; type: "Qt::WindowModality" } + } + Signal { + name: "windowStateChanged" + Parameter { name: "windowState"; type: "Qt::WindowState" } + } + Signal { + name: "windowTitleChanged" + revision: 2 + Parameter { name: "title"; type: "string" } + } + Signal { + name: "xChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "yChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "widthChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "heightChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "minimumWidthChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "minimumHeightChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "maximumWidthChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "maximumHeightChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "visibleChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "visibilityChanged" + revision: 1 + Parameter { name: "visibility"; type: "QWindow::Visibility" } + } + Signal { name: "activeChanged"; revision: 1 } + Signal { + name: "contentOrientationChanged" + Parameter { name: "orientation"; type: "Qt::ScreenOrientation" } + } + Signal { + name: "focusObjectChanged" + Parameter { name: "object"; type: "QObject"; isPointer: true } + } + Signal { + name: "opacityChanged" + revision: 1 + Parameter { name: "opacity"; type: "double" } + } + Signal { + name: "transientParentChanged" + revision: 13 + Parameter { name: "transientParent"; type: "QWindow"; isPointer: true } + } + Method { name: "requestActivate"; revision: 1 } + Method { + name: "setVisible" + Parameter { name: "visible"; type: "bool" } + } + Method { name: "show" } + Method { name: "hide" } + Method { name: "showMinimized" } + Method { name: "showMaximized" } + Method { name: "showFullScreen" } + Method { name: "showNormal" } + Method { name: "close"; type: "bool" } + Method { name: "raise" } + Method { name: "lower" } + Method { + name: "startSystemResize" + type: "bool" + Parameter { name: "edges"; type: "Qt::Edges" } + } + Method { name: "startSystemMove"; type: "bool" } + Method { + name: "setTitle" + Parameter { type: "string" } + } + Method { + name: "setX" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setY" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setWidth" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setHeight" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setGeometry" + Parameter { name: "posx"; type: "int" } + Parameter { name: "posy"; type: "int" } + Parameter { name: "w"; type: "int" } + Parameter { name: "h"; type: "int" } + } + Method { + name: "setGeometry" + Parameter { name: "rect"; type: "QRect" } + } + Method { + name: "setMinimumWidth" + Parameter { name: "w"; type: "int" } + } + Method { + name: "setMinimumHeight" + Parameter { name: "h"; type: "int" } + } + Method { + name: "setMaximumWidth" + Parameter { name: "w"; type: "int" } + } + Method { + name: "setMaximumHeight" + Parameter { name: "h"; type: "int" } + } + Method { + name: "alert" + revision: 1 + Parameter { name: "msec"; type: "int" } + } + Method { name: "requestUpdate"; revision: 3 } + } +} diff --git a/deployment_test/QtQuick/Templates.2/qmldir b/deployment_test/QtQuick/Templates.2/qmldir new file mode 100644 index 0000000000000000000000000000000000000000..9f3773a8d1ed04d41286d860c896d5241defb35c --- /dev/null +++ b/deployment_test/QtQuick/Templates.2/qmldir @@ -0,0 +1,5 @@ +module QtQuick.Templates +plugin qtquicktemplates2plugin +classname QtQuickTemplates2Plugin +depends QtQuick.Window 2.2 +depends QtQuick 2.9 diff --git a/deployment_test/QtQuick/Templates.2/qtquicktemplates2plugin.dll b/deployment_test/QtQuick/Templates.2/qtquicktemplates2plugin.dll new file mode 100644 index 0000000000000000000000000000000000000000..a1c01942080e5073ff26b34da74956e65f0ba501 Binary files /dev/null and b/deployment_test/QtQuick/Templates.2/qtquicktemplates2plugin.dll differ diff --git a/deployment_test/QtQuick/Window.2/plugins.qmltypes b/deployment_test/QtQuick/Window.2/plugins.qmltypes new file mode 100644 index 0000000000000000000000000000000000000000..3ff3b618e27d609ce13c87bfc51cd436cb2b4be0 --- /dev/null +++ b/deployment_test/QtQuick/Window.2/plugins.qmltypes @@ -0,0 +1,409 @@ +import QtQuick.tooling 1.2 + +// This file describes the plugin-supplied types contained in the library. +// It is used for QML tooling purposes only. +// +// This file was auto-generated by qmltyperegistrar. + +Module { + dependencies: ["QtQuick 2.0"] + Component { + file: "plugin.h" + name: "QQuickRootItem" + defaultProperty: "data" + prototype: "QQuickItem" + Method { + name: "setWidth" + Parameter { name: "w"; type: "int" } + } + Method { + name: "setHeight" + Parameter { name: "h"; type: "int" } + } + } + Component { + file: "plugin.h" + name: "QQuickScreen" + prototype: "QObject" + exports: [ + "QtQuick.Window/Screen 2.0", + "QtQuick.Window/Screen 2.10", + "QtQuick.Window/Screen 2.3" + ] + isCreatable: false + exportMetaObjectRevisions: [0, 10, 3] + attachedType: "QQuickScreenAttached" + } + Component { + file: "plugin.h" + name: "QQuickScreenAttached" + prototype: "QQuickScreenInfo" + Property { name: "orientationUpdateMask"; type: "Qt::ScreenOrientations" } + Method { + name: "screenChanged" + Parameter { type: "QScreen"; isPointer: true } + } + Method { + name: "angleBetween" + type: "int" + Parameter { name: "a"; type: "int" } + Parameter { name: "b"; type: "int" } + } + } + Component { + file: "plugin.h" + name: "QQuickScreenInfo" + prototype: "QObject" + exports: [ + "QtQuick.Window/ScreenInfo 2.10", + "QtQuick.Window/ScreenInfo 2.3" + ] + isCreatable: false + exportMetaObjectRevisions: [10, 3] + Property { name: "name"; type: "string"; isReadonly: true } + Property { name: "manufacturer"; revision: 10; type: "string"; isReadonly: true } + Property { name: "model"; revision: 10; type: "string"; isReadonly: true } + Property { name: "serialNumber"; revision: 10; type: "string"; isReadonly: true } + Property { name: "width"; type: "int"; isReadonly: true } + Property { name: "height"; type: "int"; isReadonly: true } + Property { name: "desktopAvailableWidth"; type: "int"; isReadonly: true } + Property { name: "desktopAvailableHeight"; type: "int"; isReadonly: true } + Property { name: "logicalPixelDensity"; type: "double"; isReadonly: true } + Property { name: "pixelDensity"; type: "double"; isReadonly: true } + Property { name: "devicePixelRatio"; type: "double"; isReadonly: true } + Property { name: "primaryOrientation"; type: "Qt::ScreenOrientation"; isReadonly: true } + Property { name: "orientation"; type: "Qt::ScreenOrientation"; isReadonly: true } + Property { name: "virtualX"; revision: 3; type: "int"; isReadonly: true } + Property { name: "virtualY"; revision: 3; type: "int"; isReadonly: true } + Signal { name: "manufacturerChanged"; revision: 10 } + Signal { name: "modelChanged"; revision: 10 } + Signal { name: "serialNumberChanged"; revision: 10 } + Signal { name: "desktopGeometryChanged" } + Signal { name: "virtualXChanged"; revision: 3 } + Signal { name: "virtualYChanged"; revision: 3 } + } + Component { + file: "plugin.h" + name: "QQuickWindow" + defaultProperty: "data" + prototype: "QWindow" + exports: ["QtQuick.Window/Window 2.0"] + exportMetaObjectRevisions: [0] + Enum { + name: "CreateTextureOptions" + alias: "CreateTextureOption" + isFlag: true + values: [ + "TextureHasAlphaChannel", + "TextureHasMipmaps", + "TextureOwnsGLTexture", + "TextureCanUseAtlas", + "TextureIsOpaque" + ] + } + Enum { + name: "SceneGraphError" + values: ["ContextNotAvailable"] + } + Enum { + name: "TextRenderType" + values: ["QtTextRendering", "NativeTextRendering"] + } + Enum { + name: "NativeObjectType" + values: ["NativeObjectTexture"] + } + Property { name: "data"; type: "QObject"; isList: true; isReadonly: true } + Property { name: "color"; type: "QColor" } + Property { name: "contentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { + name: "activeFocusItem" + revision: 1 + type: "QQuickItem" + isReadonly: true + isPointer: true + } + Signal { name: "frameSwapped" } + Signal { + name: "openglContextCreated" + revision: 2 + Parameter { name: "context"; type: "QOpenGLContext"; isPointer: true } + } + Signal { name: "sceneGraphInitialized" } + Signal { name: "sceneGraphInvalidated" } + Signal { name: "beforeSynchronizing" } + Signal { name: "afterSynchronizing"; revision: 2 } + Signal { name: "beforeRendering" } + Signal { name: "afterRendering" } + Signal { name: "afterAnimating"; revision: 2 } + Signal { name: "sceneGraphAboutToStop"; revision: 2 } + Signal { + name: "closing" + revision: 1 + Parameter { name: "close"; type: "QQuickCloseEvent"; isPointer: true } + } + Signal { + name: "colorChanged" + Parameter { type: "QColor" } + } + Signal { name: "activeFocusItemChanged"; revision: 1 } + Signal { + name: "sceneGraphError" + revision: 2 + Parameter { name: "error"; type: "QQuickWindow::SceneGraphError" } + Parameter { name: "message"; type: "string" } + } + Signal { name: "beforeRenderPassRecording"; revision: 14 } + Signal { name: "afterRenderPassRecording"; revision: 14 } + Method { name: "update" } + Method { name: "releaseResources" } + Method { name: "maybeUpdate" } + Method { name: "cleanupSceneGraph" } + Method { name: "physicalDpiChanged" } + Method { + name: "handleScreenChanged" + Parameter { name: "screen"; type: "QScreen"; isPointer: true } + } + Method { + name: "setTransientParent_helper" + Parameter { name: "window"; type: "QQuickWindow"; isPointer: true } + } + Method { name: "runJobsAfterSwap" } + Method { + name: "handleApplicationStateChanged" + Parameter { name: "state"; type: "Qt::ApplicationState" } + } + } + Component { + file: "plugin.h" + name: "QQuickWindowAttached" + prototype: "QObject" + Property { name: "visibility"; type: "QWindow::Visibility"; isReadonly: true } + Property { name: "active"; type: "bool"; isReadonly: true } + Property { name: "activeFocusItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "contentItem"; type: "QQuickItem"; isReadonly: true; isPointer: true } + Property { name: "width"; type: "int"; isReadonly: true } + Property { name: "height"; type: "int"; isReadonly: true } + Property { name: "window"; type: "QQuickWindow"; isReadonly: true; isPointer: true } + Method { + name: "windowChange" + Parameter { type: "QQuickWindow"; isPointer: true } + } + } + Component { + file: "plugin.h" + name: "QQuickWindowQmlImpl" + defaultProperty: "data" + prototype: "QQuickWindow" + exports: [ + "QtQuick.Window/Window 2.1", + "QtQuick.Window/Window 2.13", + "QtQuick.Window/Window 2.14", + "QtQuick.Window/Window 2.2", + "QtQuick.Window/Window 2.3" + ] + exportMetaObjectRevisions: [1, 13, 14, 2, 3] + attachedType: "QQuickWindowAttached" + Property { name: "visible"; type: "bool" } + Property { name: "visibility"; type: "Visibility" } + Property { name: "screen"; revision: 3; type: "QObject"; isPointer: true } + Signal { + name: "visibleChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "visibilityChanged" + Parameter { name: "visibility"; type: "QWindow::Visibility" } + } + Signal { name: "screenChanged"; revision: 3 } + Method { name: "setWindowVisibility" } + } + Component { + file: "plugin.h" + name: "QWindow" + prototype: "QObject" + Enum { + name: "Visibility" + values: [ + "Hidden", + "AutomaticVisibility", + "Windowed", + "Minimized", + "Maximized", + "FullScreen" + ] + } + Enum { + name: "AncestorMode" + values: ["ExcludeTransients", "IncludeTransients"] + } + Property { name: "title"; type: "string" } + Property { name: "modality"; type: "Qt::WindowModality" } + Property { name: "flags"; type: "Qt::WindowFlags" } + Property { name: "x"; type: "int" } + Property { name: "y"; type: "int" } + Property { name: "width"; type: "int" } + Property { name: "height"; type: "int" } + Property { name: "minimumWidth"; type: "int" } + Property { name: "minimumHeight"; type: "int" } + Property { name: "maximumWidth"; type: "int" } + Property { name: "maximumHeight"; type: "int" } + Property { name: "visible"; type: "bool" } + Property { name: "active"; revision: 1; type: "bool"; isReadonly: true } + Property { name: "visibility"; revision: 1; type: "Visibility" } + Property { name: "contentOrientation"; type: "Qt::ScreenOrientation" } + Property { name: "opacity"; revision: 1; type: "double" } + Property { name: "transientParent"; revision: 13; type: "QWindow"; isPointer: true } + Signal { + name: "screenChanged" + Parameter { name: "screen"; type: "QScreen"; isPointer: true } + } + Signal { + name: "modalityChanged" + Parameter { name: "modality"; type: "Qt::WindowModality" } + } + Signal { + name: "windowStateChanged" + Parameter { name: "windowState"; type: "Qt::WindowState" } + } + Signal { + name: "windowTitleChanged" + revision: 2 + Parameter { name: "title"; type: "string" } + } + Signal { + name: "xChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "yChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "widthChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "heightChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "minimumWidthChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "minimumHeightChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "maximumWidthChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "maximumHeightChanged" + Parameter { name: "arg"; type: "int" } + } + Signal { + name: "visibleChanged" + Parameter { name: "arg"; type: "bool" } + } + Signal { + name: "visibilityChanged" + revision: 1 + Parameter { name: "visibility"; type: "QWindow::Visibility" } + } + Signal { name: "activeChanged"; revision: 1 } + Signal { + name: "contentOrientationChanged" + Parameter { name: "orientation"; type: "Qt::ScreenOrientation" } + } + Signal { + name: "focusObjectChanged" + Parameter { name: "object"; type: "QObject"; isPointer: true } + } + Signal { + name: "opacityChanged" + revision: 1 + Parameter { name: "opacity"; type: "double" } + } + Signal { + name: "transientParentChanged" + revision: 13 + Parameter { name: "transientParent"; type: "QWindow"; isPointer: true } + } + Method { name: "requestActivate"; revision: 1 } + Method { + name: "setVisible" + Parameter { name: "visible"; type: "bool" } + } + Method { name: "show" } + Method { name: "hide" } + Method { name: "showMinimized" } + Method { name: "showMaximized" } + Method { name: "showFullScreen" } + Method { name: "showNormal" } + Method { name: "close"; type: "bool" } + Method { name: "raise" } + Method { name: "lower" } + Method { + name: "startSystemResize" + type: "bool" + Parameter { name: "edges"; type: "Qt::Edges" } + } + Method { name: "startSystemMove"; type: "bool" } + Method { + name: "setTitle" + Parameter { type: "string" } + } + Method { + name: "setX" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setY" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setWidth" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setHeight" + Parameter { name: "arg"; type: "int" } + } + Method { + name: "setGeometry" + Parameter { name: "posx"; type: "int" } + Parameter { name: "posy"; type: "int" } + Parameter { name: "w"; type: "int" } + Parameter { name: "h"; type: "int" } + } + Method { + name: "setGeometry" + Parameter { name: "rect"; type: "QRect" } + } + Method { + name: "setMinimumWidth" + Parameter { name: "w"; type: "int" } + } + Method { + name: "setMinimumHeight" + Parameter { name: "h"; type: "int" } + } + Method { + name: "setMaximumWidth" + Parameter { name: "w"; type: "int" } + } + Method { + name: "setMaximumHeight" + Parameter { name: "h"; type: "int" } + } + Method { + name: "alert" + revision: 1 + Parameter { name: "msec"; type: "int" } + } + Method { name: "requestUpdate"; revision: 3 } + Method { name: "_q_clearAlert" } + } +} diff --git a/deployment_test/QtQuick/Window.2/qmldir b/deployment_test/QtQuick/Window.2/qmldir new file mode 100644 index 0000000000000000000000000000000000000000..fb6202b3bb6c2dd19b3957de6d320224401ad122 --- /dev/null +++ b/deployment_test/QtQuick/Window.2/qmldir @@ -0,0 +1,5 @@ +module QtQuick.Window +plugin windowplugin +classname QtQuick2WindowPlugin +typeinfo plugins.qmltypes +designersupported diff --git a/deployment_test/QtQuick/Window.2/windowplugin.dll b/deployment_test/QtQuick/Window.2/windowplugin.dll new file mode 100644 index 0000000000000000000000000000000000000000..c55645762f4e6e3d98fb9eee74818749c10945b1 Binary files /dev/null and b/deployment_test/QtQuick/Window.2/windowplugin.dll differ diff --git a/deployment_test/bearer/qgenericbearer.dll b/deployment_test/bearer/qgenericbearer.dll new file mode 100644 index 0000000000000000000000000000000000000000..c495435356f695409188138e0e46f506026526cb Binary files /dev/null and b/deployment_test/bearer/qgenericbearer.dll differ diff --git a/deployment_test/iconengines/qsvgicon.dll b/deployment_test/iconengines/qsvgicon.dll new file mode 100644 index 0000000000000000000000000000000000000000..2baa1addba6b84830c050b1c525d9a476143dbb4 Binary files /dev/null and b/deployment_test/iconengines/qsvgicon.dll differ diff --git a/deployment_test/imageformats/qgif.dll b/deployment_test/imageformats/qgif.dll new file mode 100644 index 0000000000000000000000000000000000000000..faa73f8ed1505fbe4f631973afca65f9a05e9cb4 Binary files /dev/null and b/deployment_test/imageformats/qgif.dll differ diff --git a/deployment_test/imageformats/qicns.dll b/deployment_test/imageformats/qicns.dll new file mode 100644 index 0000000000000000000000000000000000000000..3c911c1fe9acbd9263971ea7026afcce9ff4ca6a Binary files /dev/null and b/deployment_test/imageformats/qicns.dll differ diff --git a/deployment_test/imageformats/qico.dll b/deployment_test/imageformats/qico.dll new file mode 100644 index 0000000000000000000000000000000000000000..b4c1b3a452fcd386c09584937c918dee015c4c25 Binary files /dev/null and b/deployment_test/imageformats/qico.dll differ diff --git a/deployment_test/imageformats/qjpeg.dll b/deployment_test/imageformats/qjpeg.dll new file mode 100644 index 0000000000000000000000000000000000000000..2b37397060283b25742b201709a6be6a35785900 Binary files /dev/null and b/deployment_test/imageformats/qjpeg.dll differ diff --git a/deployment_test/imageformats/qsvg.dll b/deployment_test/imageformats/qsvg.dll new file mode 100644 index 0000000000000000000000000000000000000000..0ce1591e6771fac5139692e097a065f60f268f61 Binary files /dev/null and b/deployment_test/imageformats/qsvg.dll differ diff --git a/deployment_test/imageformats/qtga.dll b/deployment_test/imageformats/qtga.dll new file mode 100644 index 0000000000000000000000000000000000000000..4b46a2ee79603d8ad80a2a7fe991dd3b673b505e Binary files /dev/null and b/deployment_test/imageformats/qtga.dll differ diff --git a/deployment_test/imageformats/qtiff.dll b/deployment_test/imageformats/qtiff.dll new file mode 100644 index 0000000000000000000000000000000000000000..f518c041b92ec49c0cfd3cafce45b0b8ec6d5c11 Binary files /dev/null and b/deployment_test/imageformats/qtiff.dll differ diff --git a/deployment_test/imageformats/qwbmp.dll b/deployment_test/imageformats/qwbmp.dll new file mode 100644 index 0000000000000000000000000000000000000000..b39c881801d81958c4450ff645cd35e02e581143 Binary files /dev/null and b/deployment_test/imageformats/qwbmp.dll differ diff --git a/deployment_test/imageformats/qwebp.dll b/deployment_test/imageformats/qwebp.dll new file mode 100644 index 0000000000000000000000000000000000000000..0486e3e51d395e1e4744c1b4dc99d51625487ce0 Binary files /dev/null and b/deployment_test/imageformats/qwebp.dll differ diff --git a/deployment_test/libEGL.dll b/deployment_test/libEGL.dll new file mode 100644 index 0000000000000000000000000000000000000000..7195cb20ad68dd4e68e226a91362ac4e16e81e0e Binary files /dev/null and b/deployment_test/libEGL.dll differ diff --git a/deployment_test/libGLESv2.dll b/deployment_test/libGLESv2.dll new file mode 100644 index 0000000000000000000000000000000000000000..4fe7a43302b9f504f7b526c7414af8c7ed5c7819 Binary files /dev/null and b/deployment_test/libGLESv2.dll differ diff --git a/deployment_test/libstdc++-6.dll b/deployment_test/libstdc++-6.dll new file mode 100644 index 0000000000000000000000000000000000000000..a7dc1e20bd4a4c9cfba5d184143f6ba14e967937 Binary files /dev/null and b/deployment_test/libstdc++-6.dll differ diff --git a/deployment_test/opengl32sw.dll b/deployment_test/opengl32sw.dll new file mode 100644 index 0000000000000000000000000000000000000000..475e82a4162878e51d6a0d204c6e1ee9f9f44d19 Binary files /dev/null and b/deployment_test/opengl32sw.dll differ diff --git a/deployment_test/platforms/qwindows.dll b/deployment_test/platforms/qwindows.dll new file mode 100644 index 0000000000000000000000000000000000000000..4aad851e76872483a88a18ea75158dc17e510fa9 Binary files /dev/null and b/deployment_test/platforms/qwindows.dll differ diff --git a/deployment_test/qmltooling/qmldbg_debugger.dll b/deployment_test/qmltooling/qmldbg_debugger.dll new file mode 100644 index 0000000000000000000000000000000000000000..6537b2f6534b4b866449d86879d37725864400b7 Binary files /dev/null and b/deployment_test/qmltooling/qmldbg_debugger.dll differ diff --git a/deployment_test/qmltooling/qmldbg_inspector.dll b/deployment_test/qmltooling/qmldbg_inspector.dll new file mode 100644 index 0000000000000000000000000000000000000000..2b4fe73fef2b1663417fecc6c9f99ccded658787 Binary files /dev/null and b/deployment_test/qmltooling/qmldbg_inspector.dll differ diff --git a/deployment_test/qmltooling/qmldbg_local.dll b/deployment_test/qmltooling/qmldbg_local.dll new file mode 100644 index 0000000000000000000000000000000000000000..308ca08f2638675e640d6f33c0d59aa206c6a51d Binary files /dev/null and b/deployment_test/qmltooling/qmldbg_local.dll differ diff --git a/deployment_test/qmltooling/qmldbg_messages.dll b/deployment_test/qmltooling/qmldbg_messages.dll new file mode 100644 index 0000000000000000000000000000000000000000..98ad4580640333a848172ccf1b58e338e7508cf9 Binary files /dev/null and b/deployment_test/qmltooling/qmldbg_messages.dll differ diff --git a/deployment_test/qmltooling/qmldbg_native.dll b/deployment_test/qmltooling/qmldbg_native.dll new file mode 100644 index 0000000000000000000000000000000000000000..42e6344ec1b0f53a1c4e59d2384cce689afc2647 Binary files /dev/null and b/deployment_test/qmltooling/qmldbg_native.dll differ diff --git a/deployment_test/qmltooling/qmldbg_nativedebugger.dll b/deployment_test/qmltooling/qmldbg_nativedebugger.dll new file mode 100644 index 0000000000000000000000000000000000000000..09ca1a3f012e257fd7b276da50bc2713e7d89972 Binary files /dev/null and b/deployment_test/qmltooling/qmldbg_nativedebugger.dll differ diff --git a/deployment_test/qmltooling/qmldbg_preview.dll b/deployment_test/qmltooling/qmldbg_preview.dll new file mode 100644 index 0000000000000000000000000000000000000000..12d83ffd2eb557b7debcb72279d1274fbe0730fd Binary files /dev/null and b/deployment_test/qmltooling/qmldbg_preview.dll differ diff --git a/deployment_test/qmltooling/qmldbg_profiler.dll b/deployment_test/qmltooling/qmldbg_profiler.dll new file mode 100644 index 0000000000000000000000000000000000000000..c547c21ee2419d4b9aac96163ad5000534db510e Binary files /dev/null and b/deployment_test/qmltooling/qmldbg_profiler.dll differ diff --git a/deployment_test/qmltooling/qmldbg_quickprofiler.dll b/deployment_test/qmltooling/qmldbg_quickprofiler.dll new file mode 100644 index 0000000000000000000000000000000000000000..03d43a913a8d17170e884947ba67c107fbbe6df9 Binary files /dev/null and b/deployment_test/qmltooling/qmldbg_quickprofiler.dll differ diff --git a/deployment_test/qmltooling/qmldbg_server.dll b/deployment_test/qmltooling/qmldbg_server.dll new file mode 100644 index 0000000000000000000000000000000000000000..cce5f305fb0c160988c9ea16bee1c5fc2acd40a9 Binary files /dev/null and b/deployment_test/qmltooling/qmldbg_server.dll differ diff --git a/deployment_test/qmltooling/qmldbg_tcp.dll b/deployment_test/qmltooling/qmldbg_tcp.dll new file mode 100644 index 0000000000000000000000000000000000000000..232bf7bbab60a0ad7474ca43b340ba448c839a12 Binary files /dev/null and b/deployment_test/qmltooling/qmldbg_tcp.dll differ diff --git a/deployment_test/styles/qwindowsvistastyle.dll b/deployment_test/styles/qwindowsvistastyle.dll new file mode 100644 index 0000000000000000000000000000000000000000..dbe23e001e8ca4c561f067254910fa4016083815 Binary files /dev/null and b/deployment_test/styles/qwindowsvistastyle.dll differ diff --git a/deployment_test/translations/qt_ar.qm b/deployment_test/translations/qt_ar.qm new file mode 100644 index 0000000000000000000000000000000000000000..a3ce57e7a266300a0d0c88edc3f772e94dc88c64 Binary files /dev/null and b/deployment_test/translations/qt_ar.qm differ diff --git a/deployment_test/translations/qt_bg.qm b/deployment_test/translations/qt_bg.qm new file mode 100644 index 0000000000000000000000000000000000000000..b6a990dd4fd9b4d9ddcb5a0d83023bbee9a6257e Binary files /dev/null and b/deployment_test/translations/qt_bg.qm differ diff --git a/deployment_test/translations/qt_ca.qm b/deployment_test/translations/qt_ca.qm new file mode 100644 index 0000000000000000000000000000000000000000..62cca8a31eab744cdcfc0ba682194e5efc541bda Binary files /dev/null and b/deployment_test/translations/qt_ca.qm differ diff --git a/deployment_test/translations/qt_cs.qm b/deployment_test/translations/qt_cs.qm new file mode 100644 index 0000000000000000000000000000000000000000..459ef2664b2420f9cd2b517b53c0d163e25a52f0 Binary files /dev/null and b/deployment_test/translations/qt_cs.qm differ diff --git a/deployment_test/translations/qt_da.qm b/deployment_test/translations/qt_da.qm new file mode 100644 index 0000000000000000000000000000000000000000..9b3aa0b263897e45ad4c681f624a89c009ed0ed4 Binary files /dev/null and b/deployment_test/translations/qt_da.qm differ diff --git a/deployment_test/translations/qt_de.qm b/deployment_test/translations/qt_de.qm new file mode 100644 index 0000000000000000000000000000000000000000..5fe7f1ae05da6ffd07b9dd3670ed6e29fe4f8a17 Binary files /dev/null and b/deployment_test/translations/qt_de.qm differ diff --git a/deployment_test/translations/qt_en.qm b/deployment_test/translations/qt_en.qm new file mode 100644 index 0000000000000000000000000000000000000000..937ea3e78662d66ef3264d8fa715599d03e338ed Binary files /dev/null and b/deployment_test/translations/qt_en.qm differ diff --git a/deployment_test/translations/qt_es.qm b/deployment_test/translations/qt_es.qm new file mode 100644 index 0000000000000000000000000000000000000000..cc291d76299179c37650e68b31f59411190f03d1 Binary files /dev/null and b/deployment_test/translations/qt_es.qm differ diff --git a/deployment_test/translations/qt_fi.qm b/deployment_test/translations/qt_fi.qm new file mode 100644 index 0000000000000000000000000000000000000000..ec3c67d351d501ca8be91dd2d4f64e3228cd9f35 Binary files /dev/null and b/deployment_test/translations/qt_fi.qm differ diff --git a/deployment_test/translations/qt_fr.qm b/deployment_test/translations/qt_fr.qm new file mode 100644 index 0000000000000000000000000000000000000000..efe353c00051bee288d86f8861d8f94fd0e2fd7b Binary files /dev/null and b/deployment_test/translations/qt_fr.qm differ diff --git a/deployment_test/translations/qt_gd.qm b/deployment_test/translations/qt_gd.qm new file mode 100644 index 0000000000000000000000000000000000000000..f0571d32e0863a4aa385f6d37c2584d152c7a42a Binary files /dev/null and b/deployment_test/translations/qt_gd.qm differ diff --git a/deployment_test/translations/qt_he.qm b/deployment_test/translations/qt_he.qm new file mode 100644 index 0000000000000000000000000000000000000000..4b623a38da00cf46fa8e5bf0e9a3282962d7ddf7 Binary files /dev/null and b/deployment_test/translations/qt_he.qm differ diff --git a/deployment_test/translations/qt_hu.qm b/deployment_test/translations/qt_hu.qm new file mode 100644 index 0000000000000000000000000000000000000000..3667c99a6fd2d8a98c6d5ec33dcf7309dd5f733c Binary files /dev/null and b/deployment_test/translations/qt_hu.qm differ diff --git a/deployment_test/translations/qt_it.qm b/deployment_test/translations/qt_it.qm new file mode 100644 index 0000000000000000000000000000000000000000..6fb6e89784473d007cc5add3edf305de78a6511b Binary files /dev/null and b/deployment_test/translations/qt_it.qm differ diff --git a/deployment_test/translations/qt_ja.qm b/deployment_test/translations/qt_ja.qm new file mode 100644 index 0000000000000000000000000000000000000000..67db9800f9351a0248500b9657329cc953c273c0 Binary files /dev/null and b/deployment_test/translations/qt_ja.qm differ diff --git a/deployment_test/translations/qt_ko.qm b/deployment_test/translations/qt_ko.qm new file mode 100644 index 0000000000000000000000000000000000000000..7884ba430b10b2222711313bc0a2d6b46f10a47c Binary files /dev/null and b/deployment_test/translations/qt_ko.qm differ diff --git a/deployment_test/translations/qt_lv.qm b/deployment_test/translations/qt_lv.qm new file mode 100644 index 0000000000000000000000000000000000000000..cecea3e25fc58ce0567673dc294cecba128053c0 Binary files /dev/null and b/deployment_test/translations/qt_lv.qm differ diff --git a/deployment_test/translations/qt_pl.qm b/deployment_test/translations/qt_pl.qm new file mode 100644 index 0000000000000000000000000000000000000000..e9a5c3f7a604a988f157c050108348b3bfaf1044 Binary files /dev/null and b/deployment_test/translations/qt_pl.qm differ diff --git a/deployment_test/translations/qt_ru.qm b/deployment_test/translations/qt_ru.qm new file mode 100644 index 0000000000000000000000000000000000000000..acb898e5475105505c0c51bc9e3b54fdb3c7b989 Binary files /dev/null and b/deployment_test/translations/qt_ru.qm differ diff --git a/deployment_test/translations/qt_sk.qm b/deployment_test/translations/qt_sk.qm new file mode 100644 index 0000000000000000000000000000000000000000..df8724884583d313433484ef654f6ebe49e8e6b7 Binary files /dev/null and b/deployment_test/translations/qt_sk.qm differ diff --git a/deployment_test/translations/qt_tr.qm b/deployment_test/translations/qt_tr.qm new file mode 100644 index 0000000000000000000000000000000000000000..1dc5f6cdf93e2877b7b905c2678917d4e504905c Binary files /dev/null and b/deployment_test/translations/qt_tr.qm differ diff --git a/deployment_test/translations/qt_uk.qm b/deployment_test/translations/qt_uk.qm new file mode 100644 index 0000000000000000000000000000000000000000..9ff0945795a9fb0ac38600da2b56da835d547e2a Binary files /dev/null and b/deployment_test/translations/qt_uk.qm differ diff --git a/deployment_test/translations/qt_zh_TW.qm b/deployment_test/translations/qt_zh_TW.qm new file mode 100644 index 0000000000000000000000000000000000000000..62052980f2a8a25148aaadd89731ee4f3c5c26e6 Binary files /dev/null and b/deployment_test/translations/qt_zh_TW.qm differ diff --git a/sourcefiles/POETSvisualizer.pro.user b/sourcefiles/POETSvisualizer.pro.user index 380abdfb8572caca919429b0b953e46dc1efcb1f..e8e01088f91cc8331b4123450b0e75e604b444a9 100644 --- a/sourcefiles/POETSvisualizer.pro.user +++ b/sourcefiles/POETSvisualizer.pro.user @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE QtCreatorProject> -<!-- Written by QtCreator 4.13.3, 2021-05-06T16:15:48. --> +<!-- Written by QtCreator 4.13.3, 2021-05-06T23:33:03. --> <qtcreator> <data> <variable>EnvironmentId</variable> diff --git a/sourcefiles/debug/POETSvisualizer.exe b/sourcefiles/debug/POETSvisualizer.exe index 9b1fedb87d84e102c86da3113d40fe3e4d671573..5f31f2cf11b6d5a4c0711f75c263f566564dc416 100644 Binary files a/sourcefiles/debug/POETSvisualizer.exe and b/sourcefiles/debug/POETSvisualizer.exe differ diff --git a/sourcefiles/debug/sender.o b/sourcefiles/debug/sender.o index e444ed24014ef128a55c535087041aadda7d6ed1..a9cd76f6f76885b35c5936b0651e6bc114151979 100644 Binary files a/sourcefiles/debug/sender.o and b/sourcefiles/debug/sender.o differ diff --git a/sourcefiles/sender.cpp b/sourcefiles/sender.cpp index 43d1120eb4b573b97456b6a79699e8671d3da7a8..f6acb0007b3f8dee49e0e46d984239b701e49c33 100644 --- a/sourcefiles/sender.cpp +++ b/sourcefiles/sender.cpp @@ -113,7 +113,7 @@ void Sender::dummyPacketsValuesTest() { while (true) { //generate random packet from random location in system count++; - if (count*0.00001 >= 360) { + if (count*0.000001 >= 360) { count = 0; } @@ -139,7 +139,7 @@ void Sender::dummyPacketsValuesTest() { } //some busy waiting - for (int i = 0 ; i < 10 ; i++) { + for (int i = 0 ; i < 1000 ; i++) { if (true) { } @@ -399,8 +399,8 @@ void Sender::removeChartsPage() { //thread main void Sender::run() { qDebug("running"); - transmitPacket(); - //dummyPacketsValuesTest(); + //transmitPacket(); + dummyPacketsValuesTest(); //dummyPacketsValuesTest2(); //dummyPackets1(); diff --git a/sourcefiles/usersdominappdatalocaltemptmpwmzayx b/sourcefiles/usersdominappdatalocaltemptmpwmzayx new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/test.zip b/test.zip new file mode 100644 index 0000000000000000000000000000000000000000..3c1b9482d77e0a3f7e103974ebea998dd97534bc Binary files /dev/null and b/test.zip differ diff --git a/viva/POETS Visualizer.pptx b/viva/POETS Visualizer.pptx index 4aa66af6e684390b66d920eb26c9a420cd786eab..1dffcc87a00a1359d29f94298e603ea400d91ed0 100644 Binary files a/viva/POETS Visualizer.pptx and b/viva/POETS Visualizer.pptx differ