diff options
author | Adrian Herrmann <adrian.herrmann@qt.io> | 2022-07-29 16:59:50 +0200 |
---|---|---|
committer | Adrian Herrmann <adrian.herrmann@qt.io> | 2022-09-02 18:07:19 +0200 |
commit | ef8d3daa8f4d19c48e44874dd6e38a3ed4d02425 (patch) | |
tree | 2510b0e02602f5683f87ce16c1e968a71a2bb362 /examples/declarative | |
parent | c0387967f81dcabe3087a741e337d01ca177d0b1 (diff) |
Add QML window example + shared QML module
Port the Qt Quick example "Window and Screen" to PySide. This includes a
"shared" QML module located in a sibling directory of the example.
Task-number: PYSIDE-841
Pick-to: 6.2 6.3
Change-Id: I7c8376701390b10d8b28bbf0ad04dce7a3089b20
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Diffstat (limited to 'examples/declarative')
35 files changed, 3551 insertions, 0 deletions
diff --git a/examples/declarative/shared/Button.qml b/examples/declarative/shared/Button.qml new file mode 100644 index 000000000..bee0ae28e --- /dev/null +++ b/examples/declarative/shared/Button.qml @@ -0,0 +1,50 @@ +// Copyright (C) 2017 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +import QtQuick 2.12 +import QtQuick.Window 2.1 + +Item { + id: container + + property alias text: buttonLabel.text + property alias label: buttonLabel + signal clicked + property alias containsMouse: hoverHandler.hovered + property alias pressed: tapHandler.pressed + implicitHeight: Math.max(Screen.pixelDensity * 7, buttonLabel.implicitHeight * 1.2) + implicitWidth: Math.max(Screen.pixelDensity * 11, buttonLabel.implicitWidth * 1.3) + height: implicitHeight + width: implicitWidth + + SystemPalette { id: palette } + + Rectangle { + id: frame + anchors.fill: parent + color: palette.button + gradient: Gradient { + GradientStop { position: 0.0; color: tapHandler.pressed ? Qt.darker(palette.button, 1.3) : palette.button } + GradientStop { position: 1.0; color: Qt.darker(palette.button, 1.3) } + } + antialiasing: true + radius: height / 6 + border.color: Qt.darker(palette.button, 1.5) + border.width: 1 + } + + TapHandler { + id: tapHandler + onTapped: container.clicked(); + } + HoverHandler { + id: hoverHandler + } + + Text { + id: buttonLabel + text: container.text + color: palette.buttonText + anchors.centerIn: parent + } +} diff --git a/examples/declarative/shared/CheckBox.qml b/examples/declarative/shared/CheckBox.qml new file mode 100644 index 000000000..ed93d708d --- /dev/null +++ b/examples/declarative/shared/CheckBox.qml @@ -0,0 +1,59 @@ +// Copyright (C) 2017 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +import QtQuick 2.12 + +Item { + id: root + implicitHeight: frame.height + implicitWidth: row.implicitWidth + width: implicitWidth + height: implicitHeight + property alias text: label.text + property bool checked + property alias pressed: tapHandler.pressed + property alias row: row + signal clicked + + SystemPalette { id: palette } + + Row { + id: row + anchors.verticalCenter: parent.verticalCenter + spacing: 6 + Rectangle { + id: frame + gradient: Gradient { + GradientStop { position: 0.0; color: tapHandler.pressed ? Qt.darker(palette.button, 1.3) : palette.button } + GradientStop { position: 1.0; color: Qt.darker(palette.button, 1.3) } + } + height: label.implicitHeight * 1.5 + width: height + anchors.margins: 1 + radius: 3 + antialiasing: true + border.color: Qt.darker(palette.button, 1.5) + Image { + id: theX + source: "images/checkmark.png" + anchors.fill: frame + anchors.margins: frame.width / 5 + fillMode: Image.PreserveAspectFit + smooth: true + visible: root.checked + } + } + Text { + id: label + color: palette.text + anchors.verticalCenter: frame.verticalCenter + } + } + TapHandler { + id: tapHandler + onTapped: { + parent.checked = !parent.checked + parent.clicked() + } + } +} diff --git a/examples/declarative/shared/FlickrRssModel.qml b/examples/declarative/shared/FlickrRssModel.qml new file mode 100644 index 000000000..66f53b8ef --- /dev/null +++ b/examples/declarative/shared/FlickrRssModel.qml @@ -0,0 +1,45 @@ +// Copyright (C) 2017 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +import QtQuick 2.12 + +ListModel { + id: flickrImages + property string tags : "" + readonly property string queryUrl : "http://api.flickr.com/services/feeds/photos_public.gne?" + + function encodeParams(x) { + return encodeURIComponent(x.replace(" ",",")); + } + function fetchImages(format) { + var requestURL = queryUrl + (tags ? "tags="+encodeParams(tags)+"&" : "") + "format=" + format + "&nojsoncallback=1"; + var xhr = new XMLHttpRequest; + xhr.onreadystatechange = function() { + if (xhr.readyState === XMLHttpRequest.DONE) { + + if (xhr.status !== 200) { + console.log("Failed to get images from flickr. status code: " + xhr.status); + return; + } + + var jsonText = xhr.responseText; + var objArray = JSON.parse(jsonText.replace(/\'/g,"'")) + if (objArray.errors !== undefined) + console.log("Error fetching tweets: " + objArray.errors[0].message) + else { + for (var key in objArray.items) { + var rssItem = objArray.items[key]; + var jsonObject = "{ \"title\": \"" + rssItem.title +"\",\"media\": \"" + rssItem.media.m + "\", \"thumbnail\": \"" + rssItem.media.m.replace(/\_m\.jpg/,"_s.jpg") +"\"}" + flickrImages.append(JSON.parse(jsonObject)); + } + } + } + } + xhr.open("GET", requestURL, true); + xhr.send(); + } + Component.onCompleted: { + fetchImages("json"); + } +} + diff --git a/examples/declarative/shared/Images.qml b/examples/declarative/shared/Images.qml new file mode 100644 index 000000000..ade3619d8 --- /dev/null +++ b/examples/declarative/shared/Images.qml @@ -0,0 +1,14 @@ +// Copyright (C) 2021 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +pragma Singleton +import QtQml + +QtObject { + readonly property url back: Qt.resolvedUrl("images/back.png") + readonly property url checkmark: Qt.resolvedUrl("images/checkmark.png") + readonly property url next: Qt.resolvedUrl("images/next.png") + readonly property url qtLogo: Qt.resolvedUrl("images/qt-logo.png") + readonly property url sliderHandle: Qt.resolvedUrl("images/slider_handle.png") + readonly property url tab: Qt.resolvedUrl("images/tab.png") +} diff --git a/examples/declarative/shared/Label.qml b/examples/declarative/shared/Label.qml new file mode 100644 index 000000000..77ec53f5c --- /dev/null +++ b/examples/declarative/shared/Label.qml @@ -0,0 +1,9 @@ +// Copyright (C) 2017 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +import QtQuick 2.0 + +Text { + SystemPalette { id: palette } + color: palette.text +} diff --git a/examples/declarative/shared/LauncherList.qml b/examples/declarative/shared/LauncherList.qml new file mode 100644 index 000000000..323ed529f --- /dev/null +++ b/examples/declarative/shared/LauncherList.qml @@ -0,0 +1,205 @@ +// Copyright (C) 2017 Crimson AS <info@crimson.no> +// Copyright (C) 2017 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +import QtQml 2.12 +import QtQml.Models 2.12 +import QtQuick 2.12 + +Rectangle { + id: root + property int activePageCount: 0 + + //model is a list of {"name":"somename", "url":"file:///some/url/mainfile.qml"} + //function used to add to model A) to enforce scheme B) to allow Qt.resolveUrl in url assignments + + color: "#eee" + function addExample(name, desc, url) { + myModel.append({"name":name, "description":desc, "url":url}) + } + function showExample(url) { + pageComponent.createObject(pageContainer, { exampleUrl: url }).show() + } + + // The container rectangle here is used to give a nice "feel" when + // transitioning into an example. + Rectangle { + anchors.fill: parent + color: "black" + + ListView { + id: launcherList + clip: true + delegate: SimpleLauncherDelegate{ + required property url url + onClicked: root.showExample(url) + } + model: ListModel {id:myModel} + anchors.fill: parent + enabled: opacity == 1.0 + } + } + + Item { + id: pageContainer + anchors.fill: parent + } + + Component { + id: pageComponent + Rectangle { + id: page + clip: true + property url exampleUrl + width: parent.width + height: parent.height - bar.height + color: "white" + TapHandler { + //Eats mouse events + } + Loader{ + focus: true + source: parent.exampleUrl + anchors.fill: parent + } + + function show() { + showAnim.start() + } + + function exit() { + exitAnim.start() + } + + ParallelAnimation { + id: showAnim + ScriptAction { + script: root.activePageCount++ + } + NumberAnimation { + target: launcherList + property: "opacity" + from: 1.0 + to: 0.0 + duration: 500 + } + NumberAnimation { + target: launcherList + property: "scale" + from: 1.0 + to: 0.0 + duration: 500 + } + NumberAnimation { + target: page + property: "x" + from: -page.width + to: 0 + duration: 300 + } + } + SequentialAnimation { + id: exitAnim + + ScriptAction { + script: root.activePageCount-- + } + + ParallelAnimation { + NumberAnimation { + target: launcherList + property: "opacity" + from: 0.0 + to: 1.0 + duration: 300 + } + NumberAnimation { + target: launcherList + property: "scale" + from: 0.0 + to: 1.0 + duration: 300 + } + NumberAnimation { + target: page + property: "x" + from: 0 + to: -page.width + duration: 300 + } + } + + ScriptAction { + script: page.destroy() + } + } + } + } + Rectangle { + id: bar + visible: height > 0 + anchors.bottom: parent.bottom + width: parent.width + height: root.activePageCount > 0 ? 40 : 0 + + Behavior on height { + NumberAnimation { + duration: 300 + } + } + + Rectangle { + height: 1 + color: "#ccc" + anchors.top: parent.top + anchors.left: parent.left + anchors.right: parent.right + } + + Rectangle { + height: 1 + color: "#fff" + anchors.top: parent.top + anchors.topMargin: 1 + anchors.left: parent.left + anchors.right: parent.right + } + + gradient: Gradient { + GradientStop { position: 0 ; color: "#eee" } + GradientStop { position: 1 ; color: "#ccc" } + } + + Image { + id: back + source: "images/back.png" + anchors.verticalCenter: parent.verticalCenter + anchors.verticalCenterOffset: 2 + anchors.left: parent.left + anchors.leftMargin: 16 + + TapHandler { + id: tapHandler + enabled: root.activePageCount > 0 + onTapped: { + pageContainer.children[pageContainer.children.length - 1].exit() + } + } + Rectangle { + anchors.centerIn: back + width: 38 + height: 31 + anchors.verticalCenterOffset: -1 + opacity: tapHandler.pressed ? 1 : 0 + Behavior on opacity { NumberAnimation{ duration: 100 }} + gradient: Gradient { + GradientStop { position: 0 ; color: "#22000000" } + GradientStop { position: 0.2 ; color: "#11000000" } + } + border.color: "darkgray" + antialiasing: true + radius: 4 + } + } + } +} diff --git a/examples/declarative/shared/README b/examples/declarative/shared/README new file mode 100644 index 000000000..2bf26d7c8 --- /dev/null +++ b/examples/declarative/shared/README @@ -0,0 +1,11 @@ +These files are shared between multiple examples as a set of common and +reusuable components. While they do demonstrate the building of reusable +components in QML, they are not official examples themselves. +Consequently they do not have entries in the Qt documentation, and are +documented only through the code comments within the files. Developers +new to QML are strongly encouraged to go through the official examples +before delving into this directory. + +For most application use, see the Qt Quick Components project to find +ready-made Components you can use in your own projects. Qt Quick +examples do not use them only to avoid external dependencies. diff --git a/examples/declarative/shared/SimpleLauncherDelegate.qml b/examples/declarative/shared/SimpleLauncherDelegate.qml new file mode 100644 index 000000000..68860edbc --- /dev/null +++ b/examples/declarative/shared/SimpleLauncherDelegate.qml @@ -0,0 +1,96 @@ +// Copyright (C) 2017 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause +import QtQuick 2.12 + +Rectangle { + id: container + required property string name + required property string description + + property Item exampleItem + width: ListView.view.width + height: button.implicitHeight + 22 + + signal clicked() + + gradient: Gradient { + GradientStop { + position: 0 + Behavior on color {ColorAnimation { duration: 100 }} + color: tapHandler.pressed ? "#e0e0e0" : "#fff" + } + GradientStop { + position: 1 + Behavior on color {ColorAnimation { duration: 100 }} + color: tapHandler.pressed ? "#e0e0e0" : button.containsMouse ? "#f5f5f5" : "#eee" + } + } + + Image { + id: image + opacity: 0.7 + Behavior on opacity {NumberAnimation {duration: 100}} + source: "images/next.png" + anchors.verticalCenter: parent.verticalCenter + anchors.right: parent.right + anchors.rightMargin: 16 + } + + Item { + id: button + anchors.top: parent.top + anchors.left: parent.left + anchors.bottom: parent.bottom + anchors.right:image.left + implicitHeight: col.height + height: implicitHeight + width: buttonLabel.width + 20 + property alias containsMouse: hoverHandler.hovered + + TapHandler { + id: tapHandler + onTapped: container.clicked() + } + HoverHandler { + id: hoverHandler + } + + Column { + spacing: 2 + id: col + anchors.verticalCenter: parent.verticalCenter + width: parent.width + Text { + id: buttonLabel + anchors.left: parent.left + anchors.leftMargin: 10 + anchors.right: parent.right + anchors.rightMargin: 10 + text: container.name + color: "black" + font.pixelSize: 22 + wrapMode: Text.WrapAtWordBoundaryOrAnywhere + styleColor: "white" + style: Text.Raised + + } + Text { + id: buttonLabel2 + anchors.left: parent.left + anchors.leftMargin: 10 + text: container.description + wrapMode: Text.WrapAtWordBoundaryOrAnywhere + color: "#666" + font.pixelSize: 12 + } + } + } + + Rectangle { + height: 1 + color: "#ccc" + anchors.bottom: parent.bottom + anchors.left: parent.left + anchors.right: parent.right + } +} diff --git a/examples/declarative/shared/Slider.qml b/examples/declarative/shared/Slider.qml new file mode 100644 index 000000000..7b331ab1c --- /dev/null +++ b/examples/declarative/shared/Slider.qml @@ -0,0 +1,82 @@ +// Copyright (C) 2016 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +import QtQuick 2.12 + +Item { + id: slider + height: 26 + // default drag range is 180: divisible by 2, 3, 4, 5, 6, 9, 10, ... + width: sliderName.width + 223 + handle.width / 2 + + property real min: 0 + property real max: 1 + property real value: min + (max - min) * dragHandler.value + property real init: min+(max-min)/2 + property string name: "Slider" + property color color: "#0066cc" + property real minLabelWidth: 44 + + DragHandler { + id: dragHandler + target: handle + xAxis.minimum: Math.round(-handle.width / 2 + 3) + xAxis.maximum: Math.round(groove.width - handle.width / 2 - 3) + property real value: (handle.x - xAxis.minimum) / (xAxis.maximum - xAxis.minimum) + } + + Component.onCompleted: setValue(init) + function setValue(v) { + if (min < max) { + handle.x = Math.round( v / (max - min) * + (dragHandler.xAxis.maximum - dragHandler.xAxis.minimum) + + dragHandler.xAxis.minimum); +// console.log(name, v, "-> handle.x", handle.x, "from fraction", (v / (max - min)), +// "of drag range", (dragHandler.xAxis.maximum - dragHandler.xAxis.minimum), "px", min, ":", max) + } + } + Rectangle { + id:sliderName + anchors.left: parent.left + anchors.leftMargin: 16 + height: childrenRect.height + width: Math.max(slider.minLabelWidth, childrenRect.width) + anchors.verticalCenter: parent.verticalCenter + Text { + text: slider.name + ":" + font.pointSize: 12 + color: "#333" + } + } + + Rectangle { + id: groove + width: parent.width - 8 - sliderName.width + color: "#eee" + height: 7 + radius: 3 + antialiasing: true + border.color: Qt.darker(color, 1.2) + anchors.left: sliderName.right + anchors.right: parent.right + anchors.leftMargin: 10 + anchors.rightMargin: 24 + anchors.verticalCenter: parent.verticalCenter + + Rectangle { + height: parent.height + anchors.left: parent.left + anchors.right: handle.horizontalCenter + color: slider.color + radius: 3 + border.width: 1 + border.color: Qt.darker(color, 1.3) + opacity: 0.8 + } + Image { + id: handle + source: "images/slider_handle.png" + anchors.verticalCenter: parent.verticalCenter + } + } +} diff --git a/examples/declarative/shared/TabSet.qml b/examples/declarative/shared/TabSet.qml new file mode 100644 index 000000000..633521af8 --- /dev/null +++ b/examples/declarative/shared/TabSet.qml @@ -0,0 +1,69 @@ +// Copyright (C) 2017 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +import QtQuick 2.12 +import QtQuick.Window 2.1 + +Item { + id: tabWidget + + // Setting the default property to stack.children means any child items + // of the TabWidget are actually added to the 'stack' item's children. + // See the "Property Binding" + // documentation for details on default properties. + default property alias content: stack.children + + property int current: 0 + + onCurrentChanged: setZOrders() + Component.onCompleted: setZOrders() + + function setZOrders() { + for (var i = 0; i < stack.children.length; ++i) { + stack.children[i].z = (i == current ? 1 : 0) + stack.children[i].enabled = (i == current) + } + } + + Row { + id: header + + Repeater { + model: stack.children.length + delegate: Rectangle { + required property int index + width: tabWidget.width / stack.children.length + height: Math.max(Screen.pixelDensity * 7, label.implicitHeight * 1.2) + + Rectangle { + width: parent.width; height: 1 + anchors { bottom: parent.bottom; bottomMargin: 1 } + color: "#acb2c2" + } + BorderImage { + anchors { fill: parent; leftMargin: 2; topMargin: 5; rightMargin: 1 } + border { left: 7; right: 7 } + source: "images/tab.png" + visible: tabWidget.current == parent.index + } + Text { + id: label + horizontalAlignment: Qt.AlignHCenter; verticalAlignment: Qt.AlignVCenter + anchors.fill: parent + text: stack.children[parent.index].title + elide: Text.ElideRight + font.bold: tabWidget.current == parent.index + } + TapHandler { + onTapped: tabWidget.current = parent.index + } + } + } + } + + Item { + id: stack + width: tabWidget.width + anchors.top: header.bottom; anchors.bottom: tabWidget.bottom + } +} diff --git a/examples/declarative/shared/TextField.qml b/examples/declarative/shared/TextField.qml new file mode 100644 index 000000000..01addb2e9 --- /dev/null +++ b/examples/declarative/shared/TextField.qml @@ -0,0 +1,43 @@ +// Copyright (C) 2017 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +import QtQuick 2.1 + +Item { + id: root + + property alias textInput: textInput + property alias text: textInput.text + signal accepted + signal downPressed + implicitWidth: textInput.implicitWidth + rect.radius * 2 + implicitHeight: textInput.implicitHeight + + function copyAll() { + textInput.selectAll() + textInput.copy() + } + + SystemPalette { id: palette } + height: textInput.implicitHeight + 8 + clip: true + + Rectangle { + id: rect + anchors.fill: parent + radius: height / 4 + color: palette.button + border.color: Qt.darker(palette.button, 1.5) + } + + TextInput { + id: textInput + color: palette.text + anchors.fill: parent + anchors.leftMargin: rect.radius + anchors.rightMargin: rect.radius + verticalAlignment: Text.AlignVCenter + onAccepted: root.accepted() + Keys.onDownPressed: root.downPressed() + } +} diff --git a/examples/declarative/shared/images/back.png b/examples/declarative/shared/images/back.png Binary files differnew file mode 100644 index 000000000..53402096b --- /dev/null +++ b/examples/declarative/shared/images/back.png diff --git a/examples/declarative/shared/images/checkmark.png b/examples/declarative/shared/images/checkmark.png Binary files differnew file mode 100644 index 000000000..821aafccd --- /dev/null +++ b/examples/declarative/shared/images/checkmark.png diff --git a/examples/declarative/shared/images/next.png b/examples/declarative/shared/images/next.png Binary files differnew file mode 100644 index 000000000..cdef8db6e --- /dev/null +++ b/examples/declarative/shared/images/next.png diff --git a/examples/declarative/shared/images/qt-logo.png b/examples/declarative/shared/images/qt-logo.png Binary files differnew file mode 100644 index 000000000..30c621c9c --- /dev/null +++ b/examples/declarative/shared/images/qt-logo.png diff --git a/examples/declarative/shared/images/slider_handle.png b/examples/declarative/shared/images/slider_handle.png Binary files differnew file mode 100644 index 000000000..63c518be7 --- /dev/null +++ b/examples/declarative/shared/images/slider_handle.png diff --git a/examples/declarative/shared/images/tab.png b/examples/declarative/shared/images/tab.png Binary files differnew file mode 100644 index 000000000..2ea989b68 --- /dev/null +++ b/examples/declarative/shared/images/tab.png diff --git a/examples/declarative/shared/qmldir b/examples/declarative/shared/qmldir new file mode 100644 index 000000000..5ccdf6021 --- /dev/null +++ b/examples/declarative/shared/qmldir @@ -0,0 +1,11 @@ +module shared +Button 2.0 Button.qml +CheckBox 2.1 CheckBox.qml +FlickrRssModel 2.0 FlickrRssModel.qml +Label 2.0 Label.qml +LauncherList 2.0 LauncherList.qml +SimpleLauncherDelegate 2.0 SimpleLauncherDelegate.qml +Slider 2.0 Slider.qml +TabSet 2.1 TabSet.qml +TextField 2.1 TextField.qml +singleton Images 2.2 Images.qml diff --git a/examples/declarative/shared/quick_shared.qrc b/examples/declarative/shared/quick_shared.qrc new file mode 100644 index 000000000..21f393a64 --- /dev/null +++ b/examples/declarative/shared/quick_shared.qrc @@ -0,0 +1,15 @@ +<RCC> + <qresource prefix="/quick/shared"> + <file>LauncherList.qml</file> + <file>SimpleLauncherDelegate.qml</file> + <file>Button.qml</file> + <file>CheckBox.qml</file> + <file>Label.qml</file> + <file>TextField.qml</file> + <file>images/back.png</file> + <file>images/next.png</file> + <file>images/checkmark.png</file> + <file>Slider.qml</file> + <file>images/slider_handle.png</file> + </qresource> +</RCC> diff --git a/examples/declarative/shared/shared.qrc b/examples/declarative/shared/shared.qrc new file mode 100644 index 000000000..c19063a58 --- /dev/null +++ b/examples/declarative/shared/shared.qrc @@ -0,0 +1,21 @@ +<RCC> + <qresource prefix="/shared"> + <file>Button.qml</file> + <file>CheckBox.qml</file> + <file>FlickrRssModel.qml</file> + <file>Images.qml</file> + <file>Label.qml</file> + <file>LauncherList.qml</file> + <file>SimpleLauncherDelegate.qml</file> + <file>Slider.qml</file> + <file>TabSet.qml</file> + <file>TextField.qml</file> + <file>images/back.png</file> + <file>images/checkmark.png</file> + <file>images/next.png</file> + <file>images/qt-logo.png</file> + <file>images/slider_handle.png</file> + <file>images/tab.png</file> + <file>qmldir</file> + </qresource> +</RCC> diff --git a/examples/declarative/shared/shared_rc.py b/examples/declarative/shared/shared_rc.py new file mode 100644 index 000000000..97e5ecb87 --- /dev/null +++ b/examples/declarative/shared/shared_rc.py @@ -0,0 +1,1884 @@ +# Resource object code (Python 3) +# Created by: object code +# Created by: The Resource Compiler for Qt version 6.5.0 +# WARNING! All changes made in this file will be lost! + +from PySide6 import QtCore + +qt_resource_data = b"\ +\x00\x00\x06\x9b\ +/\ +/ Copyright (C) \ +2017 The Qt Comp\ +any Ltd.\x0a// SPDX\ +-License-Identif\ +ier: LicenseRef-\ +Qt-Commercial OR\ + BSD-3-Clause\x0a\x0ai\ +mport QtQuick 2.\ +12\x0a\x0aItem {\x0a i\ +d: root\x0a impl\ +icitHeight: fram\ +e.height\x0a imp\ +licitWidth: row.\ +implicitWidth\x0a \ + width: implici\ +tWidth\x0a heigh\ +t: implicitHeigh\ +t\x0a property a\ +lias text: label\ +.text\x0a proper\ +ty bool checked\x0a\ + property ali\ +as pressed: tapH\ +andler.pressed\x0a \ + property alia\ +s row: row\x0a s\ +ignal clicked\x0a\x0a \ + SystemPalette\ + { id: palette }\ +\x0a\x0a Row {\x0a \ + id: row\x0a \ + anchors.vert\ +icalCenter: pare\ +nt.verticalCente\ +r\x0a spacin\ +g: 6\x0a Rec\ +tangle {\x0a \ + id: frame\x0a \ + gradi\ +ent: Gradient {\x0a\ + \ +GradientStop { p\ +osition: 0.0; co\ +lor: tapHandler.\ +pressed ? Qt.dar\ +ker(palette.butt\ +on, 1.3) : palet\ +te.button }\x0a \ + Grad\ +ientStop { posit\ +ion: 1.0; color:\ + Qt.darker(palet\ +te.button, 1.3) \ +}\x0a }\x0a\ + heig\ +ht: label.implic\ +itHeight * 1.5\x0a \ + width\ +: height\x0a \ + anchors.mar\ +gins: 1\x0a \ + radius: 3\x0a \ + antial\ +iasing: true\x0a \ + border.\ +color: Qt.darker\ +(palette.button,\ + 1.5)\x0a \ + Image {\x0a \ + id: th\ +eX\x0a \ + source: \x22imag\ +es/checkmark.png\ +\x22\x0a \ + anchors.fill: \ +frame\x0a \ + anchors.ma\ +rgins: frame.wid\ +th / 5\x0a \ + fillMode:\ + Image.PreserveA\ +spectFit\x0a \ + smooth:\ + true\x0a \ + visible: r\ +oot.checked\x0a \ + }\x0a \ + }\x0a Text\ + {\x0a i\ +d: label\x0a \ + color: pale\ +tte.text\x0a \ + anchors.ver\ +ticalCenter: fra\ +me.verticalCente\ +r\x0a }\x0a \ +}\x0a TapHandler\ + {\x0a id: t\ +apHandler\x0a \ + onTapped: {\x0a \ + parent\ +.checked = !pare\ +nt.checked\x0a \ + parent.cl\ +icked()\x0a \ +}\x0a }\x0a}\x0a\ +\x00\x00\x04\x1c\ +/\ +/ Copyright (C) \ +2017 The Qt Comp\ +any Ltd.\x0a// SPDX\ +-License-Identif\ +ier: LicenseRef-\ +Qt-Commercial OR\ + BSD-3-Clause\x0a\x0ai\ +mport QtQuick 2.\ +1\x0a\x0aItem {\x0a id\ +: root\x0a\x0a prop\ +erty alias textI\ +nput: textInput\x0a\ + property ali\ +as text: textInp\ +ut.text\x0a sign\ +al accepted\x0a \ +signal downPress\ +ed\x0a implicitW\ +idth: textInput.\ +implicitWidth + \ +rect.radius * 2\x0a\ + implicitHeig\ +ht: textInput.im\ +plicitHeight\x0a\x0a \ + function copyA\ +ll() {\x0a t\ +extInput.selectA\ +ll()\x0a tex\ +tInput.copy()\x0a \ + }\x0a\x0a SystemP\ +alette { id: pal\ +ette }\x0a heigh\ +t: textInput.imp\ +licitHeight + 8\x0a\ + clip: true\x0a\x0a\ + Rectangle {\x0a\ + id: rect\ +\x0a anchors\ +.fill: parent\x0a \ + radius: he\ +ight / 4\x0a \ + color: palette.\ +button\x0a b\ +order.color: Qt.\ +darker(palette.b\ +utton, 1.5)\x0a \ +}\x0a\x0a TextInput\ + {\x0a id: t\ +extInput\x0a \ + color: palette.\ +text\x0a anc\ +hors.fill: paren\ +t\x0a anchor\ +s.leftMargin: re\ +ct.radius\x0a \ + anchors.rightM\ +argin: rect.radi\ +us\x0a verti\ +calAlignment: Te\ +xt.AlignVCenter\x0a\ + onAccept\ +ed: root.accepte\ +d()\x0a Keys\ +.onDownPressed: \ +root.downPressed\ +()\x0a }\x0a}\x0a\ +\x00\x00\x00\xc7\ +/\ +/ Copyright (C) \ +2017 The Qt Comp\ +any Ltd.\x0a// SPDX\ +-License-Identif\ +ier: LicenseRef-\ +Qt-Commercial OR\ + BSD-3-Clause\x0a\x0ai\ +mport QtQuick 2.\ +0\x0a\x0aText {\x0a Sy\ +stemPalette { id\ +: palette }\x0a \ +color: palette.t\ +ext\x0a}\x0a\ +\x00\x00\x0ax\ +/\ +/ Copyright (C) \ +2017 The Qt Comp\ +any Ltd.\x0a// SPDX\ +-License-Identif\ +ier: LicenseRef-\ +Qt-Commercial OR\ + BSD-3-Clause\x0aim\ +port QtQuick 2.1\ +2\x0a\x0aRectangle {\x0a \ + id: container\ +\x0a required pr\ +operty string na\ +me\x0a required \ +property string \ +description\x0a\x0a \ + property Item e\ +xampleItem\x0a w\ +idth: ListView.v\ +iew.width\x0a he\ +ight: button.imp\ +licitHeight + 22\ +\x0a\x0a signal cli\ +cked()\x0a\x0a grad\ +ient: Gradient {\ +\x0a Gradien\ +tStop {\x0a \ + position: 0\x0a\ + Beha\ +vior on color {C\ +olorAnimation { \ +duration: 100 }}\ +\x0a col\ +or: tapHandler.p\ +ressed ? \x22#e0e0e\ +0\x22 : \x22#fff\x22\x0a \ + }\x0a Gr\ +adientStop {\x0a \ + positio\ +n: 1\x0a \ + Behavior on col\ +or {ColorAnimati\ +on { duration: 1\ +00 }}\x0a \ + color: tapHand\ +ler.pressed ? \x22#\ +e0e0e0\x22 : button\ +.containsMouse ?\ + \x22#f5f5f5\x22 : \x22#e\ +ee\x22\x0a }\x0a \ + }\x0a\x0a Image {\ +\x0a id: ima\ +ge\x0a opaci\ +ty: 0.7\x0a \ +Behavior on opac\ +ity {NumberAnima\ +tion {duration: \ +100}}\x0a so\ +urce: \x22images/ne\ +xt.png\x22\x0a \ +anchors.vertical\ +Center: parent.v\ +erticalCenter\x0a \ + anchors.ri\ +ght: parent.righ\ +t\x0a anchor\ +s.rightMargin: 1\ +6\x0a }\x0a\x0a Ite\ +m {\x0a id: \ +button\x0a a\ +nchors.top: pare\ +nt.top\x0a a\ +nchors.left: par\ +ent.left\x0a \ + anchors.bottom:\ + parent.bottom\x0a \ + anchors.r\ +ight:image.left\x0a\ + implicit\ +Height: col.heig\ +ht\x0a heigh\ +t: implicitHeigh\ +t\x0a width:\ + buttonLabel.wid\ +th + 20\x0a \ +property alias c\ +ontainsMouse: ho\ +verHandler.hover\ +ed\x0a\x0a TapH\ +andler {\x0a \ + id: tapHand\ +ler\x0a \ +onTapped: contai\ +ner.clicked()\x0a \ + }\x0a \ +HoverHandler {\x0a \ + id: h\ +overHandler\x0a \ + }\x0a\x0a C\ +olumn {\x0a \ + spacing: 2\x0a \ + id: c\ +ol\x0a a\ +nchors.verticalC\ +enter: parent.ve\ +rticalCenter\x0a \ + width: \ +parent.width\x0a \ + Text {\x0a\ + \ +id: buttonLabel\x0a\ + \ +anchors.left: pa\ +rent.left\x0a \ + anchor\ +s.leftMargin: 10\ +\x0a \ + anchors.right: \ +parent.right\x0a \ + anc\ +hors.rightMargin\ +: 10\x0a \ + text: conta\ +iner.name\x0a \ + color:\ + \x22black\x22\x0a \ + font.pi\ +xelSize: 22\x0a \ + wrap\ +Mode: Text.WrapA\ +tWordBoundaryOrA\ +nywhere\x0a \ + styleCol\ +or: \x22white\x22\x0a \ + styl\ +e: Text.Raised\x0a\x0a\ + }\x0a \ + Text {\ +\x0a \ + id: buttonLabel\ +2\x0a \ + anchors.left: \ +parent.left\x0a \ + anch\ +ors.leftMargin: \ +10\x0a \ + text: contain\ +er.description\x0a \ + w\ +rapMode: Text.Wr\ +apAtWordBoundary\ +OrAnywhere\x0a \ + color\ +: \x22#666\x22\x0a \ + font.pi\ +xelSize: 12\x0a \ + }\x0a \ + }\x0a }\x0a\x0a R\ +ectangle {\x0a \ + height: 1\x0a \ + color: \x22#cc\ +c\x22\x0a ancho\ +rs.bottom: paren\ +t.bottom\x0a \ + anchors.left: p\ +arent.left\x0a \ + anchors.right\ +: parent.right\x0a \ + }\x0a}\x0a\ +\x00\x00\x05\xac\ +\x00\ +\x00\x16\xecx\x9c\xd5\x18ko\xdb6\xf0\xbb\x7f\x05\xa1\ +~q\xd0X\xb2\x9d\xee\x01om\x97\xbaE\x17 ]\ +\x93\xba\x1b\x06\x0c\xfb@K'\x9b\xabD\xaa\x14\x9d4\ +\x08\xfc\xdfwG\x89\xaai\xc9\x8f\xb6\xeb\x80\x1e\x90X\ +<\xde\x1d\xef\xad\xa3\xa2\x88MUq\xa7\xc5biX\ +\x7fz\xc2\xc6\xc3\xd1\x0fl\xaaE^*\xc9\xceg\xec\ +g!S\xf5K\x5c!B\xa9\x9e\xf4\xa2N\x96\xb7K\ +`\xd7\x06w\xf2\x82\xcb;vi\x92\x90(gW\xcf\ +\xff\x1c\x5c\x8a\x18d\x09\x83\x8b\x04\xa4\x11\xa9\x00=a\ +5\xee\x0d\xa4\x83k3@\xb6\x1ct,x\xc6^\xbf\ +a\xcff\xcf\x07g\x83i\xc6W%\xf4z\x22/\x94\ +6(\xfc:\xcf\xd88\x1c\x8d=L\xf8J%\x90\x95\ +\xdb\x1b+\x11\xbf\xabp\xbd7\x10\x1b.\x17\x19\xb0\xfb\ +\x1eC\x10\xc9\x84i\xa5\x8c]\x14Z\x15\xa0\xcd\x1d\x13\ +\xd20\x1e\x1bq\x03W|\x01S\xb5\x92f\xc2\x86=\ +K\x14E9\x1d\xc2D\xc98\xcbDi\x98J\xd9}\ + y\x0e\xc1$(U\x0e\xf6\xf1\x94\x05+\x9d!&\ +\x15\x19L\xa2(\xa2\x9d\x08QQ\xce\xd1\x8b\x88\x0c\xdf\ +\xe7Y\xb0\xaee\xa6+\x89\xe7\xa1\x97\xd1\xca\x84\x19\xc5\ +xb\x7f\xaa\xb3\xceO\xe8\x19\xd0\xf9:\x06V\xc6K\ +\xc8\x81=\xb3H\x9ee\xea\x16\x8d\x0c5\x94*\xbb\x81\ +\xdf5\xaa\x86b\xf0\x87\x97\xa5XH\xd4\xc7\x94\x95\xea\ +\xb1\xca\x14z;x\x00\x00\x81\xc54\xc7\xe2q/>\ +\xf0\xbc\xc8\xa0O\xea\x9f\xb2\x04\xca\xf8\x94\xc4\x9c\xd4\x9e\ +\x22\xc8\xef\xac\x83C^\x14 \x93\xbe\xb3\xba\xe2\x08\x88\ +E\x8b\x82\xe4\x05\x93\x8a\xbf\xf2\x01\xfe[\x9fX!k\ +\xff\xd4r\xa9n\xdd\xb1[G\x15\xd6\xf1\x18B\x89\xfa\ +\x87\xb1\x06n\xe0\xf5\xfc\x1f\x0c_\xbf\xda\x92\x06\xfd\x08\ +\xfa\x94\xdd3\xa8D\xa0\xe9\x13k\xf8\xfa$$\xc9}\ +wf\xedc\x9b\x96\xb1cd\xbaI\x85%h\xa0x\ +:\xdf/0\xf0\x18\x5c\x89Y\xc9\x82\x14 \x0b\xd8\xed\ +\x12\xa4\x13c4\x97\xa5 \x03\x84\x5cP\xae`\x14\xa4\ +S\x22\xb4T\xdbiF\xc0e\xbcT\xba\x0c1\xf6\xa8\ +g\xc15\x1a\xd6l\xba\xd0\xcc3\x1e\xbf\x0bz\x0d\xfe\ +\x12\x13\xec\x0f\x01\xb7\x1br\x5c\xdabE\xa0D\xd0D\ +\xe2m\xc6\x99(&\xa8\xe5\x0a<4\x06\x0e\x16\xe8\xc5\ +\x09\x9b\x09\xd2\xf4\xb2\xe6\x7f^\xe3\xfd\x13\x084\xbc_\ +\x09\x8d>i\x0a\x83\xbc\x8b\x7f-J%\xa7\x19\x16\x19\ +\xd4\xd5\x14n\x07\xd6cX{+\x9b\xe1\x13k\xa8M\ +.v\x8f\xc6\xd5\x89\xe6S\xeeu \x01V\xde<#\ +\x1dT\xc1c\x81\xea>~\xccF\xe1\xb0\xa1Yo\xe6\ +\xc3\x85\x81|\xc3\xab\xe4Q/\xb1\x0e\xc7\xad\x16\xd4d\ +i\xa7\xb4z\xaf\xd9\xe9\xca\x8cM\x8ec\x22\xe9\x85\xe3\ +c\xf2{4\xb7\x221K\xa7nhW\xde\xfe\x12\xa8\ +e7\x04\xd5\x92\x0d\xd8\x9c\xebz\xe1kR\xe7\xe7\xed\ +R\x98\xbaw8x\xcb\x8b_\xb9L2,\xa9v\x0a\ +E\xd1\x0bnJ\x0c2\xd6\x16\x83\x1b\xdb\x8b6\xf7\xfd\ +\x08_*\x9e\x80nKIU\xbc*;\x1cAP\xaa\ +\x156\xc5\xc6\x90\x1d\xee 8\x98?\xeb\x9e\xb7\xf4\xda\ +T\xff\xa4\xc3:\xda8\x97\x22\x0fK\xc3\xb5\xe9o\xa7\ +y\xb74\xf8 L\xa74\xda8V\xda\x15\xd7\xd8\xf9\ +!#zn\xc5\xb6\xe5QJ9\x0d[\x9b3\xdb\xaa\ +\xcf\xe3\x1d\xbc\xd6:KRW\xf4\xd6\xeb\xf0\xe1\xc3\x16\ +\xcb\xba\x85\xf9m\x95\xcfA\xefS\x91\x00\x8d]\x80\xd9\ +\xd3\xcf\x1c\xb8\xb4\xc74\xac\x0b<\xe8\xa4K\xb5\xca'\ +^\xe1{\xc7)|\x95\xef\xd8KV\xdaj:a\xdf\ +\x0d\xdb\x14\xff\xa7\x81e\xcc3\xf8\xb6\xccku\xaf\x0e\ +\xb3>\xec3i@\x12:Z\x95g\xda\x01\xc3\xce\x0e\ +\x1a\xe6\xaff\xf8\x8a\xa39\x94\x1f\xac$W\x9d\xbd\xff\ +\xba\x94\x06\x83\x0e\x8d[\xa8c\x0a\x9e\xe0\xb8\x98\x11\x1c\ +\x9d\x96\x04\xc7\xd6\x1eA\x15\xcd]Ih\x8fV\xbb\x13\ +\x98`\x7f<\x09\xda\xc9J\xf0\xf5\x8d\xdfS\x97\x04\xdf\ +\x92\xe9;\xeb\x95\xe0p\xcd\x12\xd4\xe6\xee5\xf6PU\ +\x13|\x8e\xd1\x1d5\xf2\x09\x85h\x95\xc2;\x8a\xd1\xea\ +n\xebM\xdb>\xee\xe3\xcaM\x90\xf4\xbfk\x92\xa3F\ +\x81\x13T\xb3\xbe\x11\xa5\xc0\x91tR\x8f[\xec\xc9\x86\ +\xb3\xdc82W\xc6\x90\x1b\xeb\x01\xa6Z6T\xfb\xe6\ +87\xc3uu\x15:\x8a=e\x8f\x86\xac\xb9\xb9\x12\ +<\x83%\xbf\x11J\xe3\xc4\xeet\xf2\x1du8\x8fv\ +\x07k\xd3O\x07\x07^\xa7\xfc\xa8s\xce|\x10\xc7\xb1\ +\x9fw\xce]F\x15\x8d;\xf0\xb9\x93&\x83\xf4\xe3h\ +K\x8bN*\xedM\xc0\xda\x9by\xbf\xdc\x804M?\ +\xdf\x00\xc4\xbf\xc22\x15r[\xfcW\xb1p\xa1y\x22\ +\x80\xbeq\xbc\xac\x9f\xb6Lu\xe8\x19\xea\x85\xf7\xedB\ +U\xd7_\xcc,\xf6\x93\xffUa\xabrv2\x8e6\ +\x19)\xd6\xdd\xc9s\x91c>w\xdc\x94\xe6xK\xf6\ +\x90\xee\x16\x10\x08\xe2(#\x22\x08\x0b\xb9\xe8\x0e\xc1\x0d\ +\xb66\x81\x9d|\x8a\xaa\xd1\xf7\xa7\xdaA>\xfa\x08\xce\ +\xd7iZR+\x1d\x7fA\x8ch\xa3\x89\xf5\xf7~S\ +\xdb{\xb5\x22?\x98\x86\xa0}\x9bp\x97\xe1]\xdd\xa1\ +\xc5\xa1\xe4[\xfa\xb0\x83,\xdd\xbd\xd3\xbb\x1e\x87\xf1R\ +d\x09\x9a\xf6W7\x1a\xed\x92\x0b\xb3\xc4\x1b\xe5\xe8\xef\ +\xb0\xba\xf2|\xd2`\xb6\xab\xea6]\x17\xdb \x5c\xc8\ +\x8e| \xa8[\xe7\xd9\x8f\xad\x1dW\xbag\xa3\x9d\xb2\ +\xbb\x03=h3\xd4\xe3\xd0f,\xc2BCI\xdf\x92\ +\x9eb\x9ew\xbd\x1f7\xbb\xb0\xfbVq\xbf\xddz\xef\ +7:\xedh8d\xeb\xf6;\xf0`\xe1:8\xae\x80\ +\xc7\xe3\xa1\x85\xed*>,%\x1co\xca\x19\x8dv\xcb\ +ic\xe6J'\x9485w\xc2\xf5;\xb4\xabc\xbe\ +\xe4vN\x17\xbc\x14r\xb1\xe3c\x00)H_\x0a\x1e\ +\x1dx\x7f\xaf{\xff\x02>\xc5\xc9[\ +\x00\x00\x0aH\ +/\ +/ Copyright (C) \ +2016 The Qt Comp\ +any Ltd.\x0a// SPDX\ +-License-Identif\ +ier: LicenseRef-\ +Qt-Commercial OR\ + BSD-3-Clause\x0a\x0ai\ +mport QtQuick 2.\ +12\x0a\x0aItem {\x0a i\ +d: slider\x0a he\ +ight: 26\x0a // \ +default drag ran\ +ge is 180: divis\ +ible by 2, 3, 4,\ + 5, 6, 9, 10, ..\ +.\x0a width: sli\ +derName.width + \ +223 + handle.wid\ +th / 2\x0a\x0a prop\ +erty real min: 0\ +\x0a property re\ +al max: 1\x0a pr\ +operty real valu\ +e: min + (max - \ +min) * dragHandl\ +er.value\x0a pro\ +perty real init:\ + min+(max-min)/2\ +\x0a property st\ +ring name: \x22Slid\ +er\x22\x0a property\ + color color: \x22#\ +0066cc\x22\x0a prop\ +erty real minLab\ +elWidth: 44\x0a\x0a \ + DragHandler {\x0a \ + id: dragH\ +andler\x0a t\ +arget: handle\x0a \ + xAxis.mini\ +mum: Math.round(\ +-handle.width / \ +2 + 3)\x0a x\ +Axis.maximum: Ma\ +th.round(groove.\ +width - handle.w\ +idth / 2 - 3)\x0a \ + property r\ +eal value: (hand\ +le.x - xAxis.min\ +imum) / (xAxis.m\ +aximum - xAxis.m\ +inimum)\x0a }\x0a\x0a \ + Component.onC\ +ompleted: setVal\ +ue(init)\x0a fun\ +ction setValue(v\ +) {\x0a if (\ +min < max) {\x0a \ + handle.\ +x = Math.round( \ +v / (max - min) \ +*\x0a \ + \ + (dragHandler.x\ +Axis.maximum - d\ +ragHandler.xAxis\ +.minimum)\x0a \ + \ + + drag\ +Handler.xAxis.mi\ +nimum);\x0a// \ + console.lo\ +g(name, v, \x22-> h\ +andle.x\x22, handle\ +.x, \x22from fracti\ +on\x22, (v / (max -\ + min)),\x0a// \ + \x22of dr\ +ag range\x22, (drag\ +Handler.xAxis.ma\ +ximum - dragHand\ +ler.xAxis.minimu\ +m), \x22px\x22, min, \x22\ +:\x22, max)\x0a \ + }\x0a }\x0a Rec\ +tangle {\x0a \ + id:sliderName\x0a \ + anchors.l\ +eft: parent.left\ +\x0a anchors\ +.leftMargin: 16\x0a\ + height: \ +childrenRect.hei\ +ght\x0a widt\ +h: Math.max(slid\ +er.minLabelWidth\ +, childrenRect.w\ +idth)\x0a an\ +chors.verticalCe\ +nter: parent.ver\ +ticalCenter\x0a \ + Text {\x0a \ + text: sli\ +der.name + \x22:\x22\x0a \ + font.\ +pointSize: 12\x0a \ + color:\ + \x22#333\x22\x0a \ +}\x0a }\x0a\x0a Rec\ +tangle {\x0a \ + id: groove\x0a \ + width: paren\ +t.width - 8 - sl\ +iderName.width\x0a \ + color: \x22#\ +eee\x22\x0a hei\ +ght: 7\x0a r\ +adius: 3\x0a \ + antialiasing: t\ +rue\x0a bord\ +er.color: Qt.dar\ +ker(color, 1.2)\x0a\ + anchors.\ +left: sliderName\ +.right\x0a a\ +nchors.right: pa\ +rent.right\x0a \ + anchors.leftM\ +argin: 10\x0a \ + anchors.rightM\ +argin: 24\x0a \ + anchors.vertic\ +alCenter: parent\ +.verticalCenter\x0a\ +\x0a Rectang\ +le {\x0a \ + height: parent.\ +height\x0a \ + anchors.left:\ + parent.left\x0a \ + anchors\ +.right: handle.h\ +orizontalCenter\x0a\ + colo\ +r: slider.color\x0a\ + radi\ +us: 3\x0a \ + border.width: \ +1\x0a bo\ +rder.color: Qt.d\ +arker(color, 1.3\ +)\x0a op\ +acity: 0.8\x0a \ + }\x0a Ima\ +ge {\x0a \ + id: handle\x0a \ + source: \ +\x22images/slider_h\ +andle.png\x22\x0a \ + anchors.v\ +erticalCenter: p\ +arent.verticalCe\ +nter\x0a }\x0a \ + }\x0a}\x0a\ +\x00\x00\x06\xc5\ +/\ +/ Copyright (C) \ +2017 The Qt Comp\ +any Ltd.\x0a// SPDX\ +-License-Identif\ +ier: LicenseRef-\ +Qt-Commercial OR\ + BSD-3-Clause\x0a\x0ai\ +mport QtQuick 2.\ +12\x0a\x0aListModel {\x0a\ + id: flickrIm\ +ages\x0a propert\ +y string tags : \ +\x22\x22\x0a readonly \ +property string \ +queryUrl : \x22http\ +://api.flickr.co\ +m/services/feeds\ +/photos_public.g\ +ne?\x22\x0a\x0a functi\ +on encodeParams(\ +x) {\x0a ret\ +urn encodeURICom\ +ponent(x.replace\ +(\x22 \x22,\x22,\x22));\x0a \ +}\x0a function f\ +etchImages(forma\ +t) {\x0a var\ + requestURL = qu\ +eryUrl + (tags ?\ + \x22tags=\x22+encodeP\ +arams(tags)+\x22&\x22 \ +: \x22\x22) + \x22format=\ +\x22 + format + \x22&n\ +ojsoncallback=1\x22\ +;\x0a var xh\ +r = new XMLHttpR\ +equest;\x0a \ +xhr.onreadystate\ +change = functio\ +n() {\x0a \ + if (xhr.readyS\ +tate === XMLHttp\ +Request.DONE) {\x0a\ +\x0a \ + if (xhr.status \ +!== 200) {\x0a \ + c\ +onsole.log(\x22Fail\ +ed to get images\ + from flickr. st\ +atus code: \x22 + x\ +hr.status);\x0a \ + \ +return;\x0a \ + }\x0a\x0a \ + var j\ +sonText = xhr.re\ +sponseText;\x0a \ + var \ +objArray = JSON.\ +parse(jsonText.r\ +eplace(/\x5c'/g,\x22'\x22\ +))\x0a \ + if (objArray.\ +errors !== undef\ +ined)\x0a \ + consol\ +e.log(\x22Error fet\ +ching tweets: \x22 \ ++ objArray.error\ +s[0].message)\x0a \ + el\ +se {\x0a \ + for (va\ +r key in objArra\ +y.items) {\x0a \ + \ + var rssItem =\ + objArray.items[\ +key];\x0a \ + va\ +r jsonObject = \x22\ +{ \x5c\x22title\x5c\x22: \x5c\x22\x22\ + + rssItem.title\ + +\x22\x5c\x22,\x5c\x22media\x5c\x22:\ + \x5c\x22\x22 + rssItem.m\ +edia.m + \x22\x5c\x22, \x5c\x22\ +thumbnail\x5c\x22: \x5c\x22\x22\ + + rssItem.media\ +.m.replace(/\x5c_m\x5c\ +.jpg/,\x22_s.jpg\x22) \ ++\x22\x5c\x22}\x22\x0a \ + f\ +lickrImages.appe\ +nd(JSON.parse(js\ +onObject));\x0a \ + \ +}\x0a \ + }\x0a \ +}\x0a }\x0a \ + xhr.open(\x22GE\ +T\x22, requestURL, \ +true);\x0a x\ +hr.send();\x0a }\ +\x0a Component.o\ +nCompleted: {\x0a \ + fetchImage\ +s(\x22json\x22);\x0a }\ +\x0a}\x0a\x0a\ +\x00\x00\x018\ +m\ +odule shared\x0aBut\ +ton 2.0 Button.q\ +ml\x0aCheckBox 2.1 \ +CheckBox.qml\x0aFli\ +ckrRssModel 2.0 \ +FlickrRssModel.q\ +ml\x0aLabel 2.0 Lab\ +el.qml\x0aLauncherL\ +ist 2.0 Launcher\ +List.qml\x0aSimpleL\ +auncherDelegate \ +2.0 SimpleLaunch\ +erDelegate.qml\x0aS\ +lider 2.0 Slider\ +.qml\x0aTabSet 2.1 \ +TabSet.qml\x0aTextF\ +ield 2.1 TextFie\ +ld.qml\x0asingleton\ + Images 2.2 Imag\ +es.qml\x0a\ +\x00\x00\x08\xdc\ +/\ +/ Copyright (C) \ +2017 The Qt Comp\ +any Ltd.\x0a// SPDX\ +-License-Identif\ +ier: LicenseRef-\ +Qt-Commercial OR\ + BSD-3-Clause\x0a\x0ai\ +mport QtQuick 2.\ +12\x0aimport QtQuic\ +k.Window 2.1\x0a\x0aIt\ +em {\x0a id: tab\ +Widget\x0a\x0a // S\ +etting the defau\ +lt property to s\ +tack.children me\ +ans any child it\ +ems\x0a // of th\ +e TabWidget are \ +actually added t\ +o the 'stack' it\ +em's children.\x0a \ + // See the \x22P\ +roperty Binding\x22\ +\x0a // document\ +ation for detail\ +s on default pro\ +perties.\x0a def\ +ault property al\ +ias content: sta\ +ck.children\x0a\x0a \ + property int cu\ +rrent: 0\x0a\x0a on\ +CurrentChanged: \ +setZOrders()\x0a \ + Component.onCom\ +pleted: setZOrde\ +rs()\x0a\x0a functi\ +on setZOrders() \ +{\x0a for (v\ +ar i = 0; i < st\ +ack.children.len\ +gth; ++i) {\x0a \ + stack.ch\ +ildren[i].z = (i\ + == current ? 1 \ +: 0)\x0a \ + stack.children[\ +i].enabled = (i \ +== current)\x0a \ + }\x0a }\x0a\x0a \ + Row {\x0a i\ +d: header\x0a\x0a \ + Repeater {\x0a \ + model:\ + stack.children.\ +length\x0a \ + delegate: Rec\ +tangle {\x0a \ + require\ +d property int i\ +ndex\x0a \ + width: tabW\ +idget.width / st\ +ack.children.len\ +gth\x0a \ + height: Math\ +.max(Screen.pixe\ +lDensity * 7, la\ +bel.implicitHeig\ +ht * 1.2)\x0a\x0a \ + Recta\ +ngle {\x0a \ + width\ +: parent.width; \ +height: 1\x0a \ + an\ +chors { bottom: \ +parent.bottom; b\ +ottomMargin: 1 }\ +\x0a \ + color: \x22#ac\ +b2c2\x22\x0a \ + }\x0a \ + BorderIm\ +age {\x0a \ + anchor\ +s { fill: parent\ +; leftMargin: 2;\ + topMargin: 5; r\ +ightMargin: 1 }\x0a\ + \ + border { lef\ +t: 7; right: 7 }\ +\x0a \ + source: \x22im\ +ages/tab.png\x22\x0a \ + \ + visible: tabWi\ +dget.current == \ +parent.index\x0a \ + }\x0a \ + T\ +ext {\x0a \ + id: la\ +bel\x0a \ + horizont\ +alAlignment: Qt.\ +AlignHCenter; ve\ +rticalAlignment:\ + Qt.AlignVCenter\ +\x0a \ + anchors.fil\ +l: parent\x0a \ + te\ +xt: stack.childr\ +en[parent.index]\ +.title\x0a \ + elide\ +: Text.ElideRigh\ +t\x0a \ + font.bold:\ + tabWidget.curre\ +nt == parent.ind\ +ex\x0a \ + }\x0a \ + TapHandler \ +{\x0a \ + onTapped: \ +tabWidget.curren\ +t = parent.index\ +\x0a \ + }\x0a }\ +\x0a }\x0a }\ +\x0a\x0a Item {\x0a \ + id: stack\x0a \ + width: ta\ +bWidget.width\x0a \ + anchors.to\ +p: header.bottom\ +; anchors.bottom\ +: tabWidget.bott\ +om\x0a }\x0a}\x0a\ +\x00\x00\x02h\ +/\ +/ Copyright (C) \ +2021 The Qt Comp\ +any Ltd.\x0a// SPDX\ +-License-Identif\ +ier: LicenseRef-\ +Qt-Commercial OR\ + BSD-3-Clause\x0a\x0ap\ +ragma Singleton\x0a\ +import QtQml\x0a\x0aQt\ +Object {\x0a rea\ +donly property u\ +rl back: \ + Qt.resolvedUrl(\ +\x22images/back.png\ +\x22)\x0a readonly \ +property url che\ +ckmark: Qt.re\ +solvedUrl(\x22image\ +s/checkmark.png\x22\ +)\x0a readonly p\ +roperty url next\ +: Qt.res\ +olvedUrl(\x22images\ +/next.png\x22)\x0a \ +readonly propert\ +y url qtLogo: \ + Qt.resolvedU\ +rl(\x22images/qt-lo\ +go.png\x22)\x0a rea\ +donly property u\ +rl sliderHandle:\ + Qt.resolvedUrl(\ +\x22images/slider_h\ +andle.png\x22)\x0a \ +readonly propert\ +y url tab: \ + Qt.resolvedU\ +rl(\x22images/tab.p\ +ng\x22)\x0a}\x0a\ +\x00\x00\x05t\ +/\ +/ Copyright (C) \ +2017 The Qt Comp\ +any Ltd.\x0a// SPDX\ +-License-Identif\ +ier: LicenseRef-\ +Qt-Commercial OR\ + BSD-3-Clause\x0a\x0ai\ +mport QtQuick 2.\ +12\x0aimport QtQuic\ +k.Window 2.1\x0a\x0aIt\ +em {\x0a id: con\ +tainer\x0a\x0a prop\ +erty alias text:\ + buttonLabel.tex\ +t\x0a property a\ +lias label: butt\ +onLabel\x0a sign\ +al clicked\x0a p\ +roperty alias co\ +ntainsMouse: hov\ +erHandler.hovere\ +d\x0a property a\ +lias pressed: ta\ +pHandler.pressed\ +\x0a implicitHei\ +ght: Math.max(Sc\ +reen.pixelDensit\ +y * 7, buttonLab\ +el.implicitHeigh\ +t * 1.2)\x0a imp\ +licitWidth: Math\ +.max(Screen.pixe\ +lDensity * 11, b\ +uttonLabel.impli\ +citWidth * 1.3)\x0a\ + height: impl\ +icitHeight\x0a w\ +idth: implicitWi\ +dth\x0a\x0a SystemP\ +alette { id: pal\ +ette }\x0a\x0a Rect\ +angle {\x0a \ +id: frame\x0a \ + anchors.fill: \ +parent\x0a c\ +olor: palette.bu\ +tton\x0a gra\ +dient: Gradient \ +{\x0a Gr\ +adientStop { pos\ +ition: 0.0; colo\ +r: tapHandler.pr\ +essed ? Qt.darke\ +r(palette.button\ +, 1.3) : palette\ +.button }\x0a \ + GradientSt\ +op { position: 1\ +.0; color: Qt.da\ +rker(palette.but\ +ton, 1.3) }\x0a \ + }\x0a an\ +tialiasing: true\ +\x0a radius:\ + height / 6\x0a \ + border.color\ +: Qt.darker(pale\ +tte.button, 1.5)\ +\x0a border.\ +width: 1\x0a }\x0a\x0a\ + TapHandler {\ +\x0a id: tap\ +Handler\x0a \ +onTapped: contai\ +ner.clicked();\x0a \ + }\x0a HoverHa\ +ndler {\x0a \ +id: hoverHandler\ +\x0a }\x0a\x0a Text\ + {\x0a id: b\ +uttonLabel\x0a \ + text: contain\ +er.text\x0a \ +color: palette.b\ +uttonText\x0a \ + anchors.center\ +In: parent\x0a }\ +\x0a}\x0a\ +\x00\x00\x03)\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00@\x00\x00\x00@\x08\x06\x00\x00\x00\xaaiq\xde\ +\x00\x00\x02\xf0IDATx\xda\xe5\x9b_h\xcda\ +\x18\xc7?\x9bm1\xab\x91\xc2\xd0Y+5\xbb`h\ +\xc9\x85\x0b7HJ\x93H))\xe5\xc2\xcd\xb0\x91R\ +\xdc(7\xbbP\xae\x88\x5cXI[v%\xc9\x9fb\ +.\xfc\xbd\xc0(\xffN\xc8\xc6\xd9p16\x8c9.\ +~?u\xac\xe3\x9c\xf3}\xb7\xc3\xfb{\xce\xb7\xde\xab\ +\xd3\xef=\xef\xe7y\xdf\xe7\xf7{\xde\xe7}^\xb0\xa7\ +\x12\xa0\x1aX\x03\xb4\x02W\x8080\x00\x0c\x03\x83@\ +w\xf8\xbb9m\x04n\x03\x9f\x80d\x96v\xc3\x12x\ +\x05p1\x07\xe8\xd4\xb6\xc2\x0a|5\xf0Z\x84?\x0f\ +L\xb0\x00_\x16\xfa\xb6\x02\xff\xde\xca\xccO\x04\xee\x89\ +\xf0\x1f\x81\x1a+\x068)\xc2'\x81uV\xe0\x0f8\ +\xc0\xef\xb6\x02\xbf\x0a\xf8.\xc2\xb7\x01\xc5\x16\xe0k\x80\ +!\x11\xfe!Pj\x01~*\xd0#\xc2\xf7\x02\x95V\ +\x96~\x9b\x08?b)\xd89\xec\xf0\xd2\xdbb\xe9\xa5\ +\xa7\xc2\x1f\xb3\x14\xec$D\xf8\xa7\xe1s&\xd4-\xc2\ +\x0f\x02\xe5\x85\xea\xf7?\x81\x95V\xe0\xeb\x1d\xfc\xbe\xd5\ +\x0a\xfcl\xe0\xb3\x08\x7f\xd6\x0a|)pI\x84\xef\x01\ +\xa6Y1@\x93\x83\xdf7X\x81_V\xc8\xdb\xdb\x0a\ +\xe0\xb9\x83\xdf\x17Y1\xc0\x09\x11>\x8e!m\x10\xe1\ +\x07\x809V\xe0g\x02}\xa2\x01\xb6Y\x9a\xfd\x0e\x87\ +\xcc\x8e\x19\xed\x13\xe1\xef[\xda\xe4\xd4\x91\xdb\xf1Uj\ +rc\x91\xa5\xd9\xbf.\xce\xfe&K\xf0\x07E\xf8\xd3\ +\x96\xbe\xf7\x0b\xd0R\xda\x09`J!/\xfd\x98%\xf8\ +\xfd\x22\xfc^K\xf0\x0d\xc07\xb4\xc3\x0cS\xba\x8av\ +\x82;\xd9\x12\xfc\x1e\xf1{\xdf\xe8\xcb\xc0g\x01k\x09\ +\x8e\xa1\xaf\x01G\x80*\xb1\x8fZ\xd1\xef;|\x00/\ +&8X\xe8O3\xc0w\xe2\xf2\xbc \xc0?\xc2\x83\ +\x13\xdc%\xc0\x87,\x03=\x9ac_\x8d\x02\xfcW\x1f\ +B\xdd\x96\xd0\x07\xb3\x0d\xf6Y\x98\xc1\xc9\xa4\x18AM\ +^\xae\x068\xf4\xbf\xe1\xeb\xc5\x08m^\x16\x17:'\ +\xf4u\xc7\x07\xbfW\x8f\x9e\x8fg\xe8k\xb9\x98\xdd\xf1\ +\xa2h\xe9.zF6\x9d\x8a\xc4\xa5\xdf\xe2\xcb'\xaf\ +\xdd\xc1\x00;\xd2\xf4\xa3$7;}\x0aV\x9a\x1c\x0c\ +p\x8b?ko\xe6\x0a\xef\x91^`\xbaO\x06X\xec\ +`\x80a`~J\x1f\x0f\x84g\xb7\xfa\x16\xaeV\x85\ +A\x8ej\x84\xc7\x0e.\xe4eb\xb3$\x5c\xd2\xc9<\ +\xb77\xc0$\x9f\xc0\x7f\x87\x9e?\x80\xcb\xff\xe0\xff\x9a\ +\x81/\xbe\xee\xdaj\xf3<\xfb\xedQ\xd8\xba\xbe\xca\x13\ +\xfc\x8b\x1c\xc2g/\xb4+O\x06\x88LZ;\x86^\ +\x88\x9c\xad\x9d\x89R\xf6\xa6\x1c\xfd\x12B\xa6\xf6\xd6w\ +\xe0\xd1\x09\x88!\xa0k\x1c\xfb\xdf\x19\xc5\x1c\xde\xc2q\ +\x9a\xfd.\x22\xac'c\x84\xef'\xe2\x15\x9b\xab\xc7\x00\ +?\x02l&\xe2*\x03^:\x1a\xe0f\x94@\xffv\ +yp\x04\x98AP\xba\xa6\xaa.\xdc)F^\x95\xe8\ +%\xab\xdb1\xa6\xa5\x02\xfc)\x8c\xdc\xcc\x1a\xad\xf5a\ +\xce0\x1efr\xfa\x08\xae\x9f&\x08.'t:\xba\ +\x8a\x17\xfa\x05\xc1\xf2\xa6\x01\x10\xe5*G\x00\x00\x00\x00\ +IEND\xaeB`\x82\ +\x00\x00\x015\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00\x10\x00\x00\x00\x1f\x08\x00\x00\x00\x00\xcb\xce\x12h\ +\x00\x00\x00\xfcIDAT(\x15\x05\xc1AjTa\ +\x10\x06\xc0\xea\x9e\x7fF\x12\x17\x22(\xe8\x01t#\xf1\ +\x12\x9e\xdc\xadk\x97\x0a\x0aB\x5cj\x22$\x99y\xaf\ +?\xabj\xeb\xbbo\x7f\x1f\x8e[e\xbd}\xf5&U\ +\xf3\xfd\xc7\xcd\xcbc\x0a\xbf\x7f\x9d>V\xfd\xf9\xf2i\ +{\x08\xb8:|}\xfe\xae\x7f~\xd8\xee\x0a\xd8\xee\xdf\ +\xdfN\xff{vn@\xf4<\xae\xfb\xeb\xc7\x9e\x80\xbd\ +\xfa\xf2\xd4\xe7\x95\x00Fm\xb3ZK\x81\xe9\x9a\xee\xde\ +;\x80JJ\xc7\x000\x95\x85t\x80\x99\xb2jT\x88\ +\xa8\xb2[\x95)AIfY\x22\x22\xe8\x12\x0bB)\ +\xfb!,\x12\x80$\x96\x1a*%\xe20\x16Q#J\ +\xd2m\x91\xda+\x85\xba\xecc\xc5t\x22\xe8\xde\x97%\ +\x00b\xc6\x22\x09P\x11-\x00Bi\x00D\xd3I\x12\ +\x01I,\x92\x10\xa8\xa2\x8bD\x00t\x0e\xba\x04\xb2\x1d\ +j\xfa\xf0\x94\xcbX\xe0x\xc9iM\x9f\xe6\x9cKc\ +j{\xfd\xb9\xce\xe7\xdb\xab\x9a\x14\xb6\xd3\x8b\xe3\xf1?\ +V\x8e\x9e\xad\xee\x91\x1e\xc8\x00\x00\x00\x00IEND\ +\xaeB`\x82\ +\x00\x00\x066\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00\x0d\x00\x00\x00\x17\x08\x06\x00\x00\x00\xd0\xa6\xc5\x81\ +\x00\x00\x00\x19tEXtSoftware\ +\x00Adobe ImageRead\ +yq\xc9e<\x00\x00\x03$iTXtXML\ +:com.adobe.xmp\x00\x00\ +\x00\x00\x00<?xpacket beg\ +in=\x22\xef\xbb\xbf\x22 id=\x22W5M\ +0MpCehiHzreSzNTc\ +zkc9d\x22?> <x:xmpm\ +eta xmlns:x=\x22ado\ +be:ns:meta/\x22 x:x\ +mptk=\x22Adobe XMP \ +Core 5.3-c011 66\ +.145661, 2012/02\ +/06-14:56:27 \ + \x22> <rdf:RDF \ +xmlns:rdf=\x22http:\ +//www.w3.org/199\ +9/02/22-rdf-synt\ +ax-ns#\x22> <rdf:De\ +scription rdf:ab\ +out=\x22\x22 xmlns:xmp\ +=\x22http://ns.adob\ +e.com/xap/1.0/\x22 \ +xmlns:xmpMM=\x22htt\ +p://ns.adobe.com\ +/xap/1.0/mm/\x22 xm\ +lns:stRef=\x22http:\ +//ns.adobe.com/x\ +ap/1.0/sType/Res\ +ourceRef#\x22 xmp:C\ +reatorTool=\x22Adob\ +e Photoshop CS6 \ +(Macintosh)\x22 xmp\ +MM:InstanceID=\x22x\ +mp.iid:DCE827695\ +74811E2B0EE92BEE\ +27047DB\x22 xmpMM:D\ +ocumentID=\x22xmp.d\ +id:DCE8276A57481\ +1E2B0EE92BEE2704\ +7DB\x22> <xmpMM:Der\ +ivedFrom stRef:i\ +nstanceID=\x22xmp.i\ +id:DCE8276757481\ +1E2B0EE92BEE2704\ +7DB\x22 stRef:docum\ +entID=\x22xmp.did:D\ +CE82768574811E2B\ +0EE92BEE27047DB\x22\ +/> </rdf:Descrip\ +tion> </rdf:RDF>\ + </x:xmpmeta> <?\ +xpacket end=\x22r\x22?\ +>\x97\xa0=\xd8\x00\x00\x02\xa8IDATx\xda\x8c\ +\x94_HSQ\x1c\xc7\xcf\xbd\xbb\xd7;\xb7\xdd\xddQ\ +\x90\xbe\x0cb\x9b\x93\xd4\xf5\x10\xc1\x0a\xf4\xc5)\xd8\x1f\ +)Fd\xd4C\xeaK\xe4CB\xf6\x98\xb4\xb5\xad=\ +\xc8\xe8\xc9\xf5\x1e\xf4\x92\xd2\x96E\xeb!Y\x96\xc5\x94\ +\xc2\x94\x05\xb2\xf9\x10H\xed\xa1\x8767\xc1\xfd\xf3\xf6\ +=\xd7ML\x97z\xe0\xcb\xdd\xef\xdc}8\xbf\xf3\xfd\ +\x9es\x19Y\x96\xc9A\xc3j\xb5\x0ep\x1c\xf7\x98\xc8\ +r\xa1P,\xde`\x0e\x82\xdaZ[\xefiu\xba1\ +\xb5 \x90r\xb9Lr\xeb\xeb1n?\xc0f\xb3\xb9\ +\x0c\x06\xc3\x03Q\xaf'u<O\x0a\x85\x02\x11Eq\ +\xb5&d6\x99\x18\xadV;\x06`D\x02\xa0\xd1h\ +\x94\xf9c\x0d\x0d?\xfc~\xff\xcc\x1e\xc8l6\xabt\ +:\xdd\xb8$I\xb7 R__O\x18\x86!\x8d\x8d\ +\x8d\x09\xaf\xcf7\xb1g%\xcb\x16\xf0\xd4 I\xd7\xf5\ +U\x00\xf3F\xa3\xf1\xbb\xc7\xeb\x0d\xa1^A\xf9v\x1b\ +\xb2X,u:Q\x9c\x04\xd0\xabGK\xea\x0a`2\ +\x99\xbe=\xf4x\xa6x\x9e_F9\x09\x15\xb9\x0a\xa0\ +\xc1\xb2/\x01t)\x80ZM\xa8\xa7\xd6\xe6\xe6y\xb7\ +\xdb\x1daY6\x8e2\x04\x95\xe9\xff\x19\xb4$\x01x\ +-\x19\x0c\xedzQ\xdc\x06N\xdal\xb3\xf7GG\xa7\ +\xf1s\x01z\x05mV\xbb\xe2\x90\xc1sl\xb8]\xaa\ +\xae\x80\xdc\xce\xd8\xed\xd3wGFf\xf1~\x1e\x8a@\ +\xff\x84\xc9\xc1\xdaN\xecE\xb1\x95\xba\x84\xf6V\xef\x0c\ +\x0f\x7f\xc2;\x0a\xbd\xab\x15\x09\xdb\xda\xd2\xf2\x91\xe78\ +\x82\xbe\x95\x89T*e\xbc\xd6\xd7w\x16'\xe1\xfd\xff\ +Bg\xc7\x83\xc1\x0f8[\x0b\xa5RI\x99P\xa9T\ +$\x9dNw\xd7\x09\xc2\x0b\xeahM\x08V~y\xe4\ +\xf7O\xc1\xa99\x0a\xa2&h\x99`\x8f\xbd0(\xd2\ +\x04gwC\xf4\xc0\xd2\xbe.B\xa7|^o\xe7\xe2\ +\xd2R\x07\xcd'\x9f\xcf\x93\xcc\xda\x1a\xc9\xa4\xd3\x9f\xb3\ +\xb9\xdc\xf9d2\x99\xd9\x09)O\xa8\x07\xb2\x07\x02\x81\ +\xf6\xb9X\xccA\xf7\xb8\xb1\xb1A\xd6\x00\xa63\x99\xaf\ +\xb9\x5c\xee\x5c\x22\x91\xf8\xbd\x13\xaa\x0e\x07\xd4\xf1$\x18\ +<\x1d\x8dF/( V\xccf\xb3t\x9fq<{\ +\x00\xfe\xdc}`i\x98\xf9\xdbCC4\xb3\xe2\x9bH\ +\xe4\x12\xee\x11\xc3l\xb5\xd2\x06\xcd\xc04G\xad\xabA\ +\xf3\xc9\x0f\x0c\x0eR\xb0\x10\x0e\x87\xaf\x08\x82\xc0\xd2\x0c\ +\xd1\x93yS\x96C*\x97\xcbU\xcb\xd5_\xd0\x1f\x5c\ +\xc2\xa3\x88 \x15\x8f\xc7O\xe0\xc9\x22}\xb2Y.\x1f\ +a\xf7\xb9\xb8\x8b\xd0\x84\xd3\xe9\x5c\xbe\xd9\xdf\xff\x0c\xdf\ +\x88\x0c\x96+uuw\x87\x99C|X\x9a\xa0\xab\x10\ +_\xa9K\x87\x81\xe88\x0e]\x86\xb4\xf4<\xfe\x15`\ +\x00\x07\x7f\xeb\x18\x9af\x83_\x00\x00\x00\x00IEN\ +D\xaeB`\x82\ +\x00\x00\x05[\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00\x12\x00\x00\x00\x1f\x08\x06\x00\x00\x00\xeaP\x9d\x89\ +\x00\x00\x00\x19tEXtSoftware\ +\x00Adobe ImageRead\ +yq\xc9e<\x00\x00\x03$iTXtXML\ +:com.adobe.xmp\x00\x00\ +\x00\x00\x00<?xpacket beg\ +in=\x22\xef\xbb\xbf\x22 id=\x22W5M\ +0MpCehiHzreSzNTc\ +zkc9d\x22?> <x:xmpm\ +eta xmlns:x=\x22ado\ +be:ns:meta/\x22 x:x\ +mptk=\x22Adobe XMP \ +Core 5.3-c011 66\ +.145661, 2012/02\ +/06-14:56:27 \ + \x22> <rdf:RDF \ +xmlns:rdf=\x22http:\ +//www.w3.org/199\ +9/02/22-rdf-synt\ +ax-ns#\x22> <rdf:De\ +scription rdf:ab\ +out=\x22\x22 xmlns:xmp\ +=\x22http://ns.adob\ +e.com/xap/1.0/\x22 \ +xmlns:xmpMM=\x22htt\ +p://ns.adobe.com\ +/xap/1.0/mm/\x22 xm\ +lns:stRef=\x22http:\ +//ns.adobe.com/x\ +ap/1.0/sType/Res\ +ourceRef#\x22 xmp:C\ +reatorTool=\x22Adob\ +e Photoshop CS6 \ +(Macintosh)\x22 xmp\ +MM:InstanceID=\x22x\ +mp.iid:DCE827655\ +74811E2B0EE92BEE\ +27047DB\x22 xmpMM:D\ +ocumentID=\x22xmp.d\ +id:DCE8276657481\ +1E2B0EE92BEE2704\ +7DB\x22> <xmpMM:Der\ +ivedFrom stRef:i\ +nstanceID=\x22xmp.i\ +id:DCE8276357481\ +1E2B0EE92BEE2704\ +7DB\x22 stRef:docum\ +entID=\x22xmp.did:D\ +CE82764574811E2B\ +0EE92BEE27047DB\x22\ +/> </rdf:Descrip\ +tion> </rdf:RDF>\ + </x:xmpmeta> <?\ +xpacket end=\x22r\x22?\ +>\xd9\x0c\xdf\xc0\x00\x00\x01\xcdIDATx\xda\xac\ +\x95;K\x03A\x14\x857\x994\xdaF1>@\xc5\ +\x88A\x8c,*\x16b#XZ\x08\x06\x04\x0b\xa3\xad\ +\x85\x9d`\x13\x0b\x1bm,5\x8d\x88\x89\xd8(B4\ +>@B\x88\x16\x16\x22b:\xff\x86 X\x04]\xcf\ +\x95+\x84e\xe6\xee\xaef\xe0\xec\xcc\xee\x1c\xbey\xec\ +\xbd3\x91\xa5t\xba\xd9\xb2\xac\x03h\x0ez\x832\x87\ +\xb9\x5c\xd6\x0aX\xc2\xd0\x064\x0fE\xa0(\xb4\x07\xf8\ +\xfa_@\xe3\x9a\xef[\x80e\x82\x82\x1e\x0d}\x9b\x80\ +m\xfb\x05)\xdb\xb6\x1fPO@\xbd\x9a\xfeI\xf47\ +\xbdT\xab%/P\x88\x1e\xbc\xe1\x97\xd0\x94\xc1\xb7\x03\ +\xad\xe1'8\xc6\x19\xd1\x03#\xd60\xf2\xa903\xfa\ +\xde\x06\xcf5\xbcf\x90\x0b6\x0c\x0dh\xbcc\x12L\ +\xd5\xbf0\xec\x0cM[\x80\xb5\xc3s\x03\xafc\x041\ +\xec\xd3\x036\x0a\xc5\xe19\xaf\x87)\xddz\xeb`q\ +(\xa9\xb1$\xdd0e\xfa\x0b\x0c+x\xc0\xfa\xe1)\ +\x927\xe4\x15\x1f\x08\x0d\x1a,\x0f-\x18,E(\xa5\ +\xbc@4uZ\x02\x9a1\xde\x1fw\xa1}\x8c)?\ +\xe1\xcf\xb0+4;\xa1\x11\xdd2\xc3\x01\xf22\xca1\ +\xa6+\xef!?\x04\xecS+\xaa24d\xb0\xac\xa8\ +\x06@V\x91\x83\xbb\xca\x03\xd2\x81\xaa$\xcd\x84 b\ +\x1c\x01\xd2\x85\xea\x0eJ\x08\x90\xac\x18\xd9\x0c\xa9@}\ +\x9a\xee/h\x19\x90}1\xd7\x00\xe9\xe1=1A\x16\ +\x019\x12\xb3\x1f\x10J\x87{\xa8[\x80\x1c\x8b\xe7\x11\ +C*\x1ct\xeeR\xa3\x9b\x06\x90\x13\xf1\x84\x04$\xc1\ +\xcb1AR\x80\x14\xc4\xc3\x1f\x90A^NL\x80\x5c\ +x\xc5\x1b]\x8a\xb4q-\x9a\xbe\x0fh\x16\x90[?\ +\xd1\x1f1$!Af\x00)\x07\xb9 \x9f\xff\x0b\xf9\ +\x05\xd1\x81\xf5\xc4\xef\xaf\xd0tP\xc8\xcf\x05\xe98\x8e\ +\xd5\x88\xf2-\xc0\x00\xaa\xfa\xae\x1fG|9m\x00\x00\ +\x00\x00IEND\xaeB`\x82\ +\x00\x00\x03w\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x00\x1b\x00\x00\x00\x1c\x08\x06\x00\x00\x00\x90\xd1\xc4\xed\ +\x00\x00\x00\x09pHYs\x00\x00\x0b\x13\x00\x00\x0b\x13\ +\x01\x00\x9a\x9c\x18\x00\x00\x03)IDATH\x0d\xbd\ +V=LZQ\x14\x06\xa4\xd1PE\x03\x14\x08\x83\xc8\ +fL\xd3\x10\x93\x06\x97\xa6\xdd\xbb3th\x8c\xa1\x1b\ +\x9d\x18\xbauaj\x22k'6\x17\x87v\xec\xd6\xa5\ +\x1b.\x84\x04\x02&\x18\x15\x02\x89\xd2\x8a\xfc$\xb6D\ +y\xaf\xdfw\xfb\xde\xf5\xf9\xfa\xe4\xa76\x9e\xe4\xe4\xde\ +\xc7\xbd\xdf\xf9\xee\xf9\xdey\xe7bWU\xd5v_\xe6\ +\xb8/\x22\xf28'%\xb3\xc3\xb4\xbd\xfah\x84\x0ay\ +\xa0\xd2H\x99\xecc\xd6m\x1a\x09\x09\x8cn$\xe2\x9c\ +$\xd2o#\x1dI\x06\x22\xcaL\x12\xf3\xa8\x13K\x02\ +\xecQ4B1\x82\x90\xe3\x0d\xb3\x94\xd1\x90\x0dI\xe8\ +3\xf0\xd9\x85\x85\x85@\x22\x91x\xbe\xbc\xbc\xbc\xb6\xb8\ +\xb8\xf8\xa8\xdb\xed~\xaf\xd7\xeb\xe5l6\xfb\xad\xdf\xef\ +\x9fb\xcf\x00>\x84+\x9a\xeaL\xf2ZZ\xce\xcd\x8e\ +\xcd$\xe0Af\xe1\x0f\xa3\xd1\xe8\xd3\x9d\x9d\x9dO\xd5\ +j\xf5\xe7\xd9\xd9\x99z~~\xae\xb6\xdbm1\xf2\x99\ +\xbfs=\x16\x8b=\xe1~\x0dG\xbc\xc3\x18{\x1c\xd1\ +<2y]\xa9T\xba$h6\x9b\xea\xe1\xe1!\x83\ +K\xe73\x7f\xe7z\xa9T\xea\xc6\xe3\xf17 \x99\xb7\ +\x22\xbc\xf1\xce4\xf9t\xd9\x1e\x00\xf8j{{\xfb#\ +\xe4s\x22\x03q0\x04\xb14\xca\xe6\xf7\xfbm \xbd\ +L\xa7\xd3\x09H\xfb\x19\x1b/\xe1BVd\xa8\x9a\xc9\ +t\x22'\xa4{\xbc\xbb\xbb\xfb5\x14\x0a\xb9OO\xf9\ +:&3\x9f\xcfg;99\xe9mnn>\xdb\xdb\ +\xdb\xab\x02u\x05\x1f\x82Kapa\x86\xa2`\xa5\xcd\ +\xa6R\xa9w\x81@\xc0\xddj\xb5\xb4\x1d\x93\x0dT \ +\x18\x0c\xba\x93\xc9\xe4{\xc6\x81\x8b\xcae|I\xa6\x85\ +\x12e\xce\xaa\xdb\xd8\xd8xyqq1R:+z\ +\x16\x04q\xc43\x0e\xf6\x90\x83q\xc5\x84#M\x9c\x80\ +\xe3\xd6\xd6\xd6\x0b\x8f\xc737\x18\xb0\x92\xa77\xe2\x88\ +g\x1c\xa0e\x5csf\x8cl\x8fD\x22\xab\x0e\x87\xc3\ +6\x1c\xf2\xddNo\xc4\x11\x1f\x0e\x87\xd7\x80&\x990\ +K2\xb7\xdb\xed\xa7\x1cw1\xe2\x97\x96\x96|\x881\ +\x92L\xed\xf5z-\x96\xf2]\x8c\xf8N\xa7\xf3\x031\ +\xe4\xa9\xad2S\x8f\x8e\x8e\xf6\x15E\xb1\xcd\xcc\xb0K\ +Mo\xc4\x11_\xab\xd5\xca@K2\xf9\x9d\xb14\xb1\ +\xc0\xe8NTQ8\x9f\xcf\x17\x5c.\xd7\x1c+kZ\ +\x03\x8e\x15\xf9k}}=\x8a\x9eY\x03^|k\xe6\ +\xccx\x0a\x85M5\x97\xcb}!hZ9\xb9\x9f8\ +\xe2\xb5\xe6\xac\xdf\x06\xd7\xa5\x8f\x17J\x22\xdd\x07\x99L\ +\xe6\x03;\x81\xd7\xeb\x9d*1\xb6\xacF\xa3\xd1'\x1e\ +@~;\x22&\xe3[f\x86\x0d\xc3B\xa1P\x06\xe0\ +-Nw\x85N26Cf\xc4V\x85\xa2\xb8Bo\ +L\x11\xcf8p\x99\xd9\xd8\xae\xcf.^,\x16{\x93\ +t\xfd\x83\x83\x83\x0eo\x09\x10Xv\xfd\xbf\xc8\xfe\xa8\ +\xf9o\xf7\x19\xef=\x10\xddz\x9f\xc9j\xc4&i\x90\ +\x84\x95I\xa7\xcc\xf4\x1b7\xf5\xca\xca\xca*\xfb\x1e\x0b\ +\xe0\xf8\xf8x\xdf\xea\xa6\x06F\xc8\xc7w\x85\xb90K\ +2\xb9\xf8\x9f\xff\x83\x8c$#\xa9!K=[\x8ef\ +\xd3\xabXV\x9ey\x03\x9f\xc7\x92\xe9 \x8dT`\xf4\ +\xdf\x0c\xa3\x90\xca(\x99aMN'&\x93\x88;L\ +~\x03}U80w\xf4\xee\xee\x00\x00\x00\x00IE\ +ND\xaeB`\x82\ +\x00\x00\x18@\ +\x89\ +PNG\x0d\x0a\x1a\x0a\x00\x00\x00\x0dIHDR\x00\ +\x00\x01\x00\x00\x00\x01\x00\x08\x06\x00\x00\x00\x5cr\xa8f\ +\x00\x00\x00\x19tEXtSoftware\ +\x00Adobe ImageRead\ +yq\xc9e<\x00\x00\x03*iTXtXML\ +:com.adobe.xmp\x00\x00\ +\x00\x00\x00<?xpacket beg\ +in=\x22\xef\xbb\xbf\x22 id=\x22W5M\ +0MpCehiHzreSzNTc\ +zkc9d\x22?> <x:xmpm\ +eta xmlns:x=\x22ado\ +be:ns:meta/\x22 x:x\ +mptk=\x22Adobe XMP \ +Core 5.6-c132 79\ +.159284, 2016/04\ +/19-13:13:40 \ + \x22> <rdf:RDF \ +xmlns:rdf=\x22http:\ +//www.w3.org/199\ +9/02/22-rdf-synt\ +ax-ns#\x22> <rdf:De\ +scription rdf:ab\ +out=\x22\x22 xmlns:xmp\ +=\x22http://ns.adob\ +e.com/xap/1.0/\x22 \ +xmlns:xmpMM=\x22htt\ +p://ns.adobe.com\ +/xap/1.0/mm/\x22 xm\ +lns:stRef=\x22http:\ +//ns.adobe.com/x\ +ap/1.0/sType/Res\ +ourceRef#\x22 xmp:C\ +reatorTool=\x22Adob\ +e Photoshop CC 2\ +015.5 (Macintosh\ +)\x22 xmpMM:Instanc\ +eID=\x22xmp.iid:EF4\ +E1F5F50C611E689D\ +8B84085AD92F4\x22 x\ +mpMM:DocumentID=\ +\x22xmp.did:EF4E1F6\ +050C611E689D8B84\ +085AD92F4\x22> <xmp\ +MM:DerivedFrom s\ +tRef:instanceID=\ +\x22xmp.iid:EF4E1F5\ +D50C611E689D8B84\ +085AD92F4\x22 stRef\ +:documentID=\x22xmp\ +.did:EF4E1F5E50C\ +611E689D8B84085A\ +D92F4\x22/> </rdf:D\ +escription> </rd\ +f:RDF> </x:xmpme\ +ta> <?xpacket en\ +d=\x22r\x22?>j\x12\xd3\xd3\x00\x00\x14\xacI\ +DATx\xda\xec\x9d\x09\x98V\xd5y\x80\xbf\x7f\xf6\ +}\x83\x19\x96a\x97m\x10A\xa1\xb8\x00\x06p\xc1h\ +]\xaaF\xf3XS5\x1a\xd7\xb4Q\xa3\xb1\xb1\xc6G\ +\xd3j%mS\x97<\xd5\x94j\x88q\x97 (\x06\ +\x97\x22ZqEPQ\x04\x14\x10d\x86\xd9g\x98}\ +\x9f\xf9{\xbf\x9bj\x091d\x06\xbe\x7f\xe6.\xef;\ +\xcf\xff\x8c\xe3\xa3\xe7\xbf\xf7\xdc\xfb\xbd\xf7\x9cs\xcf\xf9\ +N$\x1a\x8d\x0a\x00\x84\x938\xaa\x00\x00\x01\x00\x00\x02\ +\x00\x00\x04\x00\x00\x08\x00\x00\x10\x00\x00 \x00\x00@\x00\ +\x00\x80\x00\x00\x00\x01\x00\x00\x02\x00\x00\x04\x00\x00\x08\x00\ +\x00\x10\x00\x00 \x00\x00@\x00\x00\x80\x00\x00\x00\x01\x00\ +\x00\x02\x00\x00\x04\x00\x00\x08\x00\x00\x10\x00\x00 \x00\x00\ +@\x00\x00\x80\x00\x00\x00\x01\x00\x00\x02\x00\x00\x04\x00\x00\ +\x08\x00\x00\x10\x00\x00 \x00\x00@\x00\x00\x80\x00\x00\xe0\ +O\x13\xf1\xca\x81,\xd8p\xce\x11\xce\xaf5\xceg0\ +\x97\x05 D\x02 \xf8\x01B*\x00\x82\x1f \xa4\x02\ + \xf8\x01B*\x00\x82\x1f \xa4\x02 \xf8\x01B*\ +\x00\x82\x1f \xa4\x02 \xf8\x01B*\x00\x82\x1f \xa4\ +\x02 \xf8\x01B*\x00\x82\x1f \xa4\x02 \xf8\x01B\ +*\x00\x82\x1f \xa4\x02 \xf8\x01B*\x00\x82\x1f \ +\xa4\x02 \xf8\x01B*\x00\x82\x1f \xa4\x02 \xf8\x01\ +B*\x00\x82\x1f \xa4\x02 \xf8\x01B*\x00'\xf8\ +\x8fq~\xbd\xec|\xb2\xa8F\x80\x10\x09\x80\xe0\x07\x08\ +\xa9\x00\x08~\x80\x90\x0a\x80\xe0\x07\x08\xa9\x00\x08~\x80\ +\x90\x0a\x80\xe0\x07\x08\xa9\x00\x08~\x80\x90\x0a\x80\xe0\x07\ +\x08\xa9\x00\x08~\x80\x90\x0a\x80\xe0\x07\x08\xa9\x00\x08~\ +\x80\x90\x0a\x80\xe0\x07\x08\xa9\x00\x08\xfe\xfe!#>\xfd\ +\xf7\x15\x1f\x89Hj\x5c\x8a\xb4t\xb7\xba\x7fwE\xbb\ +\xa4\xad\xa7\x9d\x0a\x82\xfe\x17\x00\xc1\x7f\xe8\xc4E\xe2d\ +d\xf2p\x19\x99R(\x85\xc9C\x9d\xcf0)H\x1a\ +$9\x09\xd9\x92\x97\x98+iq\xa9\x92\x16\x9fz\xc0\ +2\xa2\xceOsw\x8b4t5J]W\xbdTw\ +\xee\x95\xaa\x8ej\xd9\xd3^.\xa5\xce\xe7\xf3\xd6/\x9c\ +\x7fWKe\x83\x9d\x00\x08\xfe\x83#3>C\xa6g\ +N\x91\xa9\xe9ErDF\x91\x8cK\x1d-\xc9qI\ +1\xff\xde\xba\xae\x06\xf9\xace\x87lj\xda\x22\x1b\x9b\ +6\xcb\x96\xe6\xcf\x9c\xd6C7\x17\x04\x0eZ\x00\xf5\x04\ +\x7f\xef\x18\xe4<\xc9\xe7\xe7\xce\x919\xd9G\xcb4'\ +\xe8\xf5\xa9?\xd0h\x8b\xe1\xdd\x86\xf7\xe5\xcd\xbau\xf2\ +f\xfd:\xe9\xe8\xe9\xe4BA\x9f\x04\x10\xa5\x1a\x0e\xd4\ +G\x8a\xc8q\xd9\x7f!g\xe6/\x94YYG\xb9\x7f\ +{\x15\x1dOxe\xefZYQ\xf5\x82\xecl\xdd\xcd\ +\xc5\x03\x04p\xb0\xc4G\xe2ea\xde<\xb9`\xe89\ +2\xc2\xe9\xcf\xfb\x8d\x0d\x8d\x1f\xc9\x92\xd2'es\xf3\ +\xa7\x5cL@\x00}av\xf6,\xb9j\xc4\xc5\xbe\x0c\ +\xfc\xfdy\xa7~\x83\xdc_\xb2DJ\xda\xcb\xb8\xb0\x80\ +\x00\x0e\xc4\xe0\xc4<\xb9~\xd4\x95n\x93?HtF\ +;\xe5\xf1\xf2\xe5\xf2X\xf9o=;`\xa8oH\x1e\ +*\xba\xfb\x90\xcb\xf9m\xe5\xf3\xb2\xcc\xf9@\xefH\xa0\ +\x0a~\xcf\xdc\x9cc\xe4G\xa3\xae\x91\xcc\x84\x8c\xc0\x9d\ +[b$Q.\x1ev\xbe\x1c\x9b=C\xee\xd8y\xb7\ +\xfbZ\xd1k\xc49?C\x92\xf2\x0f\xb9\x9c/\xe7Y\ +@o\xeb=\xecM \xe7\xe7{\xc3/\x94\x7f\x1cw\ +S \x83\x7f_&\xa5\x8d\x97\x07&\xff\x8b\xcc\xcc\x9c\ +\xc6\x9d\x0f\x08 !\x92 \xb7\x8f\xbbQ\xfez\xe89\ +\xa19g}B\xfel\xfc\xad\xb20o>w?\x84\ +W\x00\x1a\xfc?\x1d\xf7#9>\xe7\xd8\xf0]\xf4H\ +\x9c\xfcx\xcc\xdf\xc9\x99\xf9\xa7\x10\x01\x08 \x9c\xcd\xfe\ +[\xc6\x5c\x1b\xb8\xc1\xbe\xber\xed\xc8\xcbe^\xeel\ +\xa2\x00\x01\x84\x8b+\x0a\xff\x86\x1b\xff+\x11^'S\ +\xd2'\x12\x09\x08 \x1ch\x93\xff\xdbC\xce\xe2\xca\x7f\ +\xd5\x15\x8a\x97\xdb\xc6\xdd(\xd9\x09\xcc\x06G\x00\x01G\ +\xdf\xf3\xdf4\xfa\xfb\x5c\xf5\xfd\xc8O\x1c$7\x8e\xbe\ +\x9a\x8a\x08\xe3\x03 L'{\xc3\xa8\xab%=>m\ +@\xbe[\x17\xe9\x94uT\xb8K}\xdb{:\xa4=\ +\xda\xee\xfe\xd6\x15\x84\xe9qi\x92\xe4\xfc\xceK\xccq\ +\xdf\x85\x0f\xc4z\x03]\xe0tR\xde7du\xed\xeb\ +D\x05\x02\x08\x1e'\xe4\xce\x95c\xb2g\xf4\xcbwi\ +`\xbf\xdf\xf8\x91|\xdc\xb4E\xb6\xb6l\x93\x92\xb62\ +\xa9\xe9\xdc\xeb\xae\xf7\xff\xf3M\xf2\x04\x19\x96\x5c \xa3\ +SF8}\xf3I2#\xf3\x08\x99\x98vX\xbf\x1c\ +\xf75#.\x91\xb7\xeb\xd7\xbb+\x0c\x01\x01\x04\x86\xe4\ +\xb8d\xb9r\xc4E1\xff\x9e\xf7\x1a>\x94U5\xaf\ +\xc8;N\x10\xa9\x04\x0e\x06\xcd\x0cT\xdcV\xea~\xde\ +\xa8[\xf7U\xd7\xe5\xc4\xbc\xe3\xe5\xcc\xc1\xa78r\x18\ +\x12\xb3\xe3\xd7\xe4%\x17\x0d;_\x1e(\xf95\x91\x81\ +\x00\x82\xc39\x05\xa7\xb9\xfd\xdcX\xa1\xeb\xf0\x1f\xda\xf3\ +\xb8\xecj+\x8eI\xf9\x9a\x05\xe8\xa9\x8ag\xe5\xe9\x8a\ +\xe7dA\xee\x1c\xb9t\xf8\x052<yhL\xbe\xeb\ +\xec\xfc\xd3\xdc\xb9\xf4\x95\x1d\xd5DG\x08\x08\xfc \xa0\ +\xce|\xbb`\xc8\xd91\x0b\xcc\xbf\xdf\xfeOr\xeb\x8e\ +\x9f\xc5,\xf8\xf7E\xbb\x10k\xf6\xbe!\xdf\xdd|\x9d\ +<R\xb6\xb4W]\x8a>?\x11\x22\xf1r\xe1\xd0s\ +\x89\x0c\x04\x10\x0ct\xb6[,\x16\x88\xe8z\xfb\xcb\xb6\ +\x5c\xef6\xfb\xfb\x1b]\xdd\xb7\xa4\xecI\xb9a\xdbm\ +\xd2\xd8\xd5d^\xfe\xa9\x83N\x94AN\xb7\x03\x10\x80\ +\xbf\xfb7\x91\x04\xb7Ik\xcd+\xb5k\xe5\xe6\xedw\ +\xc4$\xf8\xfa\xc2\x87\x8d\x9f\xc8\xf7?\xbd\xd9<Q\xa8\ +\xb6\x02\xce\xce?\x95\xe8@\x00\xfefA\xeel7\x8f\ +\x9f%:J~\xd7\x17\xf7yf]}I{\xa9\xdc\ +\xb8\xedv\xf3\x91\xfb\xd3\x07\x9f\xec.#\x06\x04\xe0[\ +N\x1b|\x92iy:2\xaf\xeb\xe9{\xa2=\x9e:\ +\xcf\xddm{\xe4\xce]\xf7\x98\x96\x99\x95\x90)ss\ +\x8e&B\x10\x80?\xd1t^\xd33\x0e7+O\x83\ +\xfe\x8e]wKkO\x9b'\xcfWS\x7f=[\xf5\ +\xa2\xf9X\x00 \x00\x7f6\xff\xf3\xe6\x9a\x96\xb7\xbcj\ +\x95lk\xf9\xdc\xd3\xe7\xfc`\xe9c\xb2\xb7\xb3\xce\xac\ +\xbc\x99Y\xd3\xdc\xb9\x01\x80\x00|\xc7\xfc\x1c\xbb\xd5~\ +\xbae\xd7\xa3\xe5\xcb<\x7f\xce:\x0e\xb0\xb4r\xa5Y\ +y:%9\x8c\xf9\x12\x10@\x00\x9a\xffcSG\x99\ +>\xfd\xeb\xbb\x1a|q\xee\xda\x0d\xd0\xf5\x06V\xcc\xc9\ +\x99E\x94 \x00\x7fqL\xf6L\xb3\xb2\xba\xa3\xdd\xf2\ +L\xe5*\xdf\x9c\xbb\x8eQ\xac0\x1c\x0b8*s\xaa\ +;\x95\x1a\x82I \xa7\x02\x1fk(\x00\xddv\xab\xc6\ +g\x1br\xbeT\xfb\xaa\x5c4\xec<\x93\xb2\xf4U\xa0\ +.H\xd2\xd7\x9f}A\x93\x8c\x14\xf5!\xd1\x88\xd5\xbe\ +\x8a\xfa\xbd\xe7\x16\x9cn^\xa7-N\xf7\xea\x85\x9a5\ +\x08\xc0\xf3'\x14I\x90\xa9\xe9\x93\xcd\xca{\xd1\x87\x17\ +\xbd\xac\xbd\xc2]\x89\xa8\x9b\x96Z\xa0oS\xfa*\x00\ +\xddFMS\x91\xf77\xb3\xb2\x8et?\xd6TtT\ +\x05R\x00\x81\xeb\x02\x14\xa5O0{\x9a4u7\xbb\ +\xaf\xd7\xfc\x88\xee\x11h\xc5\x91\x99\x87\x0b0\x06\xe0\x0b\ +\xa6eL1+k}\xc3F\xdfn\xbdm)\xae\xf1\ +\xa9c%\x85q\x00\x04\xe0\x97\x16\x80\x15\xeb\x1a>\xf0\ +m=\xe8r^\x9d!hr\x93D\xe2dB\xda8\ +\xa2\x05\x01x\x9f\xc9iv\x02\x18\x88\x95~\x96X\x1e\ +\x7f\x11\x99\x83\x11\x80\xd7\xd1\x85?\x9aW\xcf\x02\xdd?\ +\xcfo\xa3\xff\xfb\xb3\xa9y\xabYY\x87\xa5\x8e!Z\ +\x10\x80\xb7\xb1\x9c\xfc\xf3i\xcbv\xdf\xd7\xc7\xd6\xe6m\ +fe\x8d3\xac[@\x00\xb1\x11@\xca(\xc3\xe0\xf1\ +\xbf\x00\xf4\xd5\x95\xd5\x0c\xc6\xd1)#%>\x12O\xc4\ + \x00\xef2*e\x04-\x80\xfd\xf8\xcch\x01\x93&\ +\x09\xb1\xd8\xbe\x1b\x10@\xcc(L\x1efV\xd6\x17m\ +%\x81\xa8\x93\xdd\x86\xe71\xc2\xb0~\x01\x01\x9832\ +\xc5\xe6\x06\xd5T_\x96\x0bj\x06V\x00\xa5\x9e\x14,\ + \x00St\x0a\xb0U\x22\xcb\xe2\xf6\xd2\xc0\x5c\xe0=\ +\x86\xe72$i0\x11\x83\x00\xbcI\xbea\x16\xdb\x92\ +@\x09\xa0\xdc\xae\x8e\x11\x00\x02\xf0*\x05\x86\x03T\x95\ +\x1d5\x81\xb9\xc0U\x9d5f\xfb\x07\x14 \x80\xc0\x11\ +\x98\xd5\x80\xb9\x89v\xa9\xab\xfc>\x01h_4\x97a\ +]g\xbdS?\x87>A\xaa/[\x88\x17\xb7\xedq\ +wL\xea\xfd\x8d\x98`\xb2w\xa3&n\xdd\xddn?\ +\x80\xabu\x88\x00<Lf|\xa6YY\xb5\x86y\xf5\ +\xbc@mW\x9d\x89\x00\xb2\xe23z\xfd\xdf\xea\x0eF\ +\xfa\xe9-\xbay\xcbs\xd3\x7fs\xc8\xc7\xa8\xdf\xf9p\ +\xd9S<\xda\xc3\xd6\x05\xc8J\xc80++H-\x00\ +K\xa1e\x1a\xd61 \x00\xe3\x16\x80\xdd\xcdY\xe7\x93\ +\xfc\x7f\xbd?\x1f\x9b\xe6\xab&\x09E\x02\x08 \xf0-\ +\x80\xc6\xee\xa6@]\xe4\x06\xc3-\xcc\xb2\xe2\x11\x00\x02\ +\xf0 }\x19\xa0\xfas\xb4v\xb7\x06\xea\x22\xb7\xf6\xd8\ +\x9dOfB&Q\x83\x00\xbcGZ|\xaaI9\x1d\ +=\x9d\xbe\xcd\x02\xf4\xa7h1\x14Zf\x0cvZ\x06\ +\x04p\xc8Xm\x01\xde\xd2\xd3\x1a\xb8\x8blyNV\ +\xf9\x16\x01\x01x\x92\xf6\x9e\xf6\xc0\x9dSGO\x07\x17\ +\x16\x82-\x808\xa3S\xe9\x8cv\x05\xee\x22\xb7\x1aJ\ +\x8dMB\x10@\xa0\xc7\x00\x82\xd8\x02\xe86\x94Zb\ +$\x81\xa8A\x00\x00\x80\x00<D\x02O\xa6~!5\ +.\x95J@\x00\xde\xc3j\xe3\x0a}\x0d\x184\x9a\x0d\ +_\x03\xea\x1e\x01\x80\x00<G\x8f\xf3cAR\x5cb\ +\xe0.2\xfdv\x08\xbc\x00Z\xba[\xb9\x9a\xfd\x22\xb5\ +(\x15\x8a\x00 \xac4w\xb7P\x09\x08\xc0{XM\ +\xdf%\xf7= \x00\x1f\xd2\xd6\xd3fRNj\x5cJ\ +\xf0\xba\x00\x11\xa6\xef\x02]\x80\xd0\xb6\x00,\xc7\x00\x9a\ +\xe8\x02 \x00/\xd2i\xf4\xfa.-\x80\xef\xb9\xd3\xe2\ +\xd3\xcc\xcab]\x01\x02\xf0$V\x83SVS\x8a=\ +%\x00\xc3nMG\x14\x01 \x00\x0f\xd2`\x98\xc5'\ +h\x12H5<\x9f\xa6.\xba\x00\x08\xc0\x834\x1a\xa6\ +\xbd\x0aZ7\xc0r`3\x88\xf9\x12\x10\x00-\x80?\ +\xc02\xbd\x98\x17\xc82L\xe3e\x95`\x14\x10\x80)\ +M\x86\x02\x18\x94\x98\x1b\xa8\x8b\x9c\x97`s>\xdd\xd1\ +nf\x5c\x22\x00\x8f\xb6\x00\x0cw\xf3\xcd\x0b\x9a\x00\x0c\ +6\x05\xb1\xaec@\x00\xa6\xec5l\x9aZ\x05L\xd0\ +\x04\xb0\x97\xe6?\x02\xf0*\x95\x1d\xd5fe\x0d6\xdc\ +ix\xa0I\x8c$\x9a%L\xad\x0a\xd0\xa6\xa9\x100\ +\x01\x94\xb7W\x9a\x95U\x98<,0\x17\xb80y\xa8\ +\x9dd;\xab\x89\x18\x04\xe0MZ{\xda\xcc\xb6\xf4\x1a\ +\x992<@\x02\xb0\x93YU\x07\x02@\x00\x1e\xa6\xa2\ +\xc3\xa6\x150$)?0)\xc6\x0aS\x86\x1a\xd6/\ +\x02@\x00!\xe8\x06\xe8&\x98#\x02\xd2\x0d\x18\x91l\ +\xd7\x9a\xd9\xddVB\xc4 \x00\xef\xb2\xa7\xbd\xdc\xac\xac\ +\x89i\x87\x05\xa2N&\xa4\x8d3+\xab\xb8\xbd\x94\x88\ +A\x00\xde\xe5\x8b\xb6b\xb3\xb2\x8a\xd2'\xf8\xbe>\x12\ +\x22\xf1rX\xeah\x93\xb2j:\xf72\x09\x08\x01x\ +\x9b\xcf[w\xd3\x02\xd8\x87\xc3R\xc7\x98\x8de\xec2\ +\x94+ \x80\x18\xb5\x00J\xccR\x83i\xd39\xc5\xe7\ +\xdb`\x15\xa5O4+\xeb\xb3\x96\x1dD\x0b\x02\xf06\ +]\xd1.\xd9\xd1\xba\xd3\xac\xf9|T\xe6\x11\xbe\xae\x8f\ +\x99Y\xd3\x0c\x05\xf09\xd1\x82\x00\xbc\xcf\x96\xe6mf\ +e\xcd\xca:\xd2\xc7\xfd\xff\x04\x99\x91i(\x80\xe6\xed\ +\xbe8o\xf6@\x08\xb9\x0065m5+\xeb\xd8\xec\ +\x99\xee+A?25c\x92Y\x1e\x00\x9df]\xd6\ +Q\xe9\x8b\xf3f\xf7\xe2\x90\x0b\xe0\xc3\xa6Mfe\x0d\ +M*\x90#2\x8a|Y\x0f'\xe6\x1eoV\xd6\x07\ +\x8d\x9b\x88\x14\x04\xe0\x0fj;\xeb\xa4\xb8\xcd\xee}\xf5\ +7\x07\x9d\xe0\xbb:\xd0\xa7\xe0\x82\xdc\xb9f\xe5ml\ +\x8a\xbd\x00\xda\x8c\xb6e\xb7L~\x82\x00|\xca\xba\x86\ +\x0f\xcc\xca\x9a\x9f;\xdbl5]\x7f1/\xe78\xb3\ +\xbc\x86Q\xe7\xe7\xbd\x86\x8d1?f\x1d\xc05\x11@\ +|\x06Q\x1dv\x01\xbcS\xbf\xde\xac,}\x15xn\ +\xc1\xe9\xbe9w\x1d\xb3\xb8`\xe8\xd9f\xe5mm\xde\ +.5\x9d\xb5\xfdr\xec\x16\x13\x8dh\x01 \x00\xa7\xc9\ +\xbaY\x9a\xba\x9b\xcd\xca\xfb\x96#\x00\xbf\xb4\x02\x16\xe4\ +\xce\x91\xd1)#\xcc\xca{\xa3\xfe\xdd~;v\x8bk\ +\x96\x93\x98MT\x87]\x00\xda\x9c\x5c[gw\xe3\xa6\ +\xc7\xa7\xc9\xa5\xc3/\xf0\xfcy\xeb\x0e@\xdf5<N\ +m\xfe\xbfV\xfb\xa6\xaf\x0404)?\x90[\xbc#\ +\x80>\xb2\xa6v\xadiyg\xe5\x7fSfx|b\ +\xd0e\xc3/4M\x00\xf2a\xe3\xa6~}\xfdg\x91\ +\xcfA\xbb@#\x93\x0b\x89\xec\xb0\x0b\xe0\xfd\xc6\x8fM\ +o^\xbd\xb1n\x19s\x9d\xfbj\xd0\x8b\xe8\xc0\xdfy\ +\x05g\x98\x96\xf9B\xcd\x9a~=\x07\xab\x94c\x13\xd2\ +\xc6\x12\xd9a\x17\x806__\xa8~\xc5\xb4\xcc\xdc\xc4\ +\x1c\xf9\xb7\x09\xb7I~\xe2 O\x9d\xab\xb6Ln\x1e\ +s\xadi\x99\xba\xfa\xef\xb5\xbdo\xf5\xaf\x00\x8cR\x8e\ +\xcd\xca:\x8a\xc8\x0e\xbb\x00\x94\xe7\xab_\x96\x0e\xa3M\ +C\xbfd\xb8\xd3\xc4\xbeo\xd2\x9d2\xceh\x99\xed\xa1\ +rR\xde7d\xd1\xf8[\xcd\xfb\xbdK+W\x9a\xbd\ +\x9a\xeb-V\x19\x87\xe6\xe6\x1c\xed9I#\x80\x01@\ +\xfb\x94/\xd5\xda7c5e\xd8\x7fLZ$\x7f\x95\ +\x7f\xea\x80M\x15\xd6\xf7\xfc7\x8c\xbaJ\xfe\xc1y\xf2\ +'\x18oi\xae\xdb\xac\xad\xacz\xa9\xdf\xcf\xc9*\xe3\ +\x90fB\xfe\xc9\xd8\xebM\xb7DC\x00>\xe5\x89\xf2\ +\x15fK\x84\xf7%9.I~0\xf2{r\xff\xe4\ +Erd\xe6\xe1\xfdv>\xf1N\xb0\xeb\xec\xc4\x87\xa7\ +\xfcB\xfer\xf0\xc91\xf9\x8e\x87\xcb\x9fv\x93\xac\xf6\ +7;Zw\x99\x95\xa5S\xb8\x17\x17\xfd\x5c\xe6\xe5\xce\ +v\x85\x00_Od\xc1\x86s\xa2A?I\x0dT}\ +Z\xc7\x92\xcd\xcd\x9f9]\x8e\xff\x96\xb5u\xef\x98m\ +U\xbe/\x05I\x83\xe5\xe4\xbcyr\xc6\xe0\x85\xee?\ +\xc7\x8a\x92\xf6R\xb9t\xf3u1\x91f\xaf\x84=\xf5\ +\x97n\x0b\xcb\x12\x9df\xbc\xb5y\x9bsneR\xef\ +\xb4\x0a\xf5\xdcT\xe0*\x86t\xa7%\x15\x1fIpZ\ +T)\xee\xdf\xfa\xef\xb5\xe5\xa0\xab)\xf5\xf5\xaf\xb6\xae\ +R\x9c\xbf?j\xda,\xb7\xec\xb8+p\xb1\x11\x8a\xb5\ +\x93\xbf)[\xea\xf6\x95c9\x99gJ\xfaD\xf7\xf3\ +\xc3QW\xca\xc6\xc6O\xdc\xc9H\x9b\x9a\xb7\xb83\xe9\ +\x0ef\x9e\xbb\xee\xe63%}\x92LM\x9f,\xd3\x9d\ +\x16\xc6\xa4~\xcaPto\xf1\x83\x03\x16\xfc\x8a\xae\xe6\ +\x1c\x92g+\x00\x9d\xcdyd\xe6T\xf7s\xb0\x04m\ +\xc3\xd8P\x09@w\xb4\xfdU\xe9\x13nK \xe6\x15\ +\xea<9ffMw?\xfb\x8eE\x94\xb7W\xb8\xaf\ +%u\xba\xab\x0a\xa1\xcdibk\xa0\xe9\xcd\xa9\xff\x8f\ +\xca)+!\xc3}\xfa\xe9\xabF\xab\xb9\xfc}\xe1\xd9\ +\xaa\x17eC?\xcc\xfb?\x10\xba\x9a\xf3\xc4\xbc\xe3=\ +w\x0fik\x00\x01\xf8\x18\xbd\xb9u\x9a\xec@,\xef\ +\xcdq\x9e\x1e\xfa\x99\xec\xe1D\xa3\xda<^\xbc\xe7\x91\ +\x01?\x8e\xf7\x1b>\xf2d\xfd\x04U\x00qa\x11\x80\ +\xce\x0bX\xb4\xeb>2\xdb~\x0d:\xe0w\xeb\x8eE\ +\x032\xf0\xb7?\xdaJ\xfa\xb4e;\x02@\x00\xb1\xb9\ +\xb9\xeer$\x00\x7f(\xc6;w\xde\xe3&T\xf5\x0a\ +\xabk_\xf7\x5c=\xe9\xc0\xa0_\xb3C!\x80}x\ +\xb3~\x9d\xfc\xaa\xf4q\x22\xff\xff\xf8\xf7\xdd\xbf\x94\xb7\ +\xea\xdf\xf3\xd41\xad\xae]k\x96 \x84V\x00\x02\xf8\ +#\x1e-_&\xcb*\x9f\x0f}\xf0\xdfS\xbcX~\ +W\xbd\xdas\xc7\xa5\xaf\xea\x96W\xad\xf2\xdcq\xf9-\ +1\x0c\x028\x00\xf7\x97\xfcZ\x9e\xacX\x11\xcas\xd7\ +\xb7\x0f\xff\xbc\xeb^yn\x00f\xfb\xf5\x16\xbd6\xf5\ +F\xbb=\xd3\x02@\x00_\xdb\xf7\xd5Q\xef_\x14?\ +$=\xd1\x9e\xd0\x9cwCW\xa3\xdc\xb4\xfd\xa7\x9e\xec\ +g\xef\x8bNG\xfe\xf9\xee\x07\x10\x00\x02\x88-\xda\xd4\ +\xbc\xd1\x09\x88\xfeJ{5\x90\xe8l\xb6\xcb\xb7\xdc \ +\x1f6~\xe2\x8b\xe3}\xa3n\x9d<\x5c\xf64\x02@\ +\x00\xb1E\x13_\x5c\xb6\xe5\x87\xb2f\xef\x1b\x81=G\ +}\xc5\xa7SY\xab:k|u\xdc\x0f\x97=%\x0f\ +\x96>\x86\x00bD\xfc\xd8+\x8bnG\x01\x22\xed=\ +\x1d\xf2z\xdd;\xeeT\xd4I\xe9\xe3\xdd\x89;AB\ +w\xcc\xd1\x19\x87\xeb\x1b7\xfa\xee\xd8?n\xda\xe2\xae\ +\xb5\x98\x9eq\xf8\x80\x06\xa1&\x99\xf1\xe2\x1c\x05\x04`\ +HYG\x85\xbb\xa8\xa7\xdc\xf9=&u\x94;=7\ +(\xe8\x96\xe7o\xd5\xaf\x97\xda\xae:\xdf\x1d{i{\ +\xb9\xac\xac~\xd9\x15\xb5f\xfc\xd1E;\xfd.\xa2\xe6\ +-\xa6;Oy\x81P\xac\x06<\xe8\xcaq~t{\ +0\xcd\x07\xa8\xfb\x04\x06a\x22\x88>\xc1\xae\xd9\xfac\ +w\x10\xd4\xafh\xf2\x93y9\xb3e\xe1\xa0\xf92-\ +\xa3(f\xcb}\xcb;*\xdd%\xca;[w\xcb\x8e\ +\x96]\xb2\xa9y\xab\x9b)\x09\x01\x84\x90A\x89yr\ +B\xee\x1c9>\xe7X9<c\x92\xafep_\xf1\ +\x83\xb2\xa2\xea\x85@\x5c\x17\xdd\x05iz\xc6\x14\x99\xec\ +t\xdb\xc6\xa5\x8eqS\xa2\xeb\x82\xaa\xdel\xed\xae\x19\ +\x8f4\xa0u\x00xO{\x85\xd3\xca(sw\x95\xd2\ +u\x11\xba,:\x0c\xd3\xc6\x11\xc0A\xa0\x9bO\xcc\xcc\ +\x9c\xe6<}\xa6\xb8\x8b\x8b\xc6:]\x05?\x09Ao\ +\xec\x8b7\xff \xd0o>T\x0c\xf9\x8e\xb4u-\x7f\ +\x5c$\xce]\xef\xdf\x1d\xed\x91\xd6\xee6i\xedi\x95\ +f\xa7\x0et\x95h\xe8[\xb9\x08\xc0\xe2fK\x921\ +)#\xdd<\x81\x85\xc9\xc3\xdc\xd4\xdcC\x93\x0b$/\ +1Wr\x13\xb2\xdd\xc1\xb7\xbe\xa0O\xa6R\xe7\x89T\ +\xdc\xbe\xc7\x1d\xfc\x9a\x96>E\x8e\xc9\x9eaz\xcc:\ +\xe0y\xfb\xe7\xff\xca\xc5C\x00\x08 \xd6\xe8\xda~\x9d\ +F\xaa\x0bJ\xb4\xbf\x9a\xea<\x8d\xe2#\xff\xff\x06V\ +\x9fJ\xfatj\xeeiq'\xea\xec\x9fQH3\x00\ +-\x99r\xafy\x8e;}-\xf8\xb6\xe16j\x80\x00\ + F\x9c?\xe4,\xb9\xaa\xf0\x22\xd32+;\xaa\xe5\ +\x12\xa7+\xe0\xc5\x857\xd0?0\x11\xc8'\xe8\xe2%\ +\x1d\x8d\xb6D[\x16\x97\x0c\xfb6\x95\x8b\x00\xc0\xebt\ +G\xbb\xdd\xd5{\xd6|\xab\xe0\x0c\xcf\xecq\x00\x08\x00\ +\x0e\x80\xce\x88{\xd1x\xbb.\x1d!\xbfa\xd4\xd5\x81\ +Lv\x01\x08 p\xfc\xe7\x9eG\xa4\xb1\xbb\xc9\xb4L\ +\x9d!xf\xfe)Tn\xf8h@\x00>C\xd7\xc8\ +/\xde\xf3\xa8y\xb9\x97\x0f\xff\x8e\x0cJ\xcc\xa5\x82C\ +\x14\xfc\xceg!\x02\xf0!\xab\xaaW\xbb\xf3\x03,\xd1\ +W\x95\x7f;\xe2R*7D\xc1\xff\xea\xccg\xdeE\ +\x00>D\xe7\xf1\xdf\xb3{\xb1y\x22\x13\xddF\xcbz\ +\xc2\x11x7\xf8\x19\x03\xf01\xdb[w\xca\xf2\x18\xcc\ +\xe7\xbfn\xe4\x15\xee4Z\x08~\xf0#\x00\x9f\xb3\xa4\ +\xec\x09\xf3\xd5i\xba\x90\xe6\xe2a\xe7S\xb9!\x08~\ +\x04\xe0stQ\xcf\xfd%K\xcc\xcb=\x8f\xb9\x01\xa1\ +\x08~\x04\x10\x00^\xdd\xfb\xa6lh\xb4\xddNK\xb7\ + \xd7MN\x99\x1b\x10\xec\xe0G\x00\x01\xe1\xde\xdd\x8b\ +\xdd\x15\x84\x96\xe8\xce\xc4\xa7\x0f^H\xe5\x068\xf8\x11\ +@@\xd0\x04\x16\x8f\x97/7/\xf7\x8a\xc2\xef\xb8\xdb\ +\x94C0\x83\x1f\x01\x04\x88\xc7+\x96IY{\x85\xe9\ +\xf8\x82\xe6F\x0c\xd3\x9e\x09a\x0b~%\x81\xba\x0a\x06\ +\x1d=\x9dro\xf1\x7f\xc9\xa2\xf1?9\xa4rj;\ +\xebdY\xd5\xf3\xb2\xb2\xeaei\xean\xa6b\x03\x1c\ +\xfc\x08 `\xack\xf8@\xfe\xa7\xeem\x99\x97s\xdc\ +Au#\x9e\xaexV^\xaayM:\xa3\x9dTf\ +\x08\x82\x1f\x01\x04\x90\xfb\x8b\x97\xc8\xd1YG\xf5:{\ +\x90f\x09~\xb2|\x85\x9b\x22\xcc\xcf\x99\x82\xa1\xef\xc1\ +\x8f\x00\x02\x88\xee\xfc\xa3\xbb\xe9\x5cUx\xf1\x01\xff\xbb\ +\xf5\x0d\x1b\xe5\x89\x8a\xe5\xf2A\xe3\xc7TZH\x83\x1f\ +\x01\x04\x94e\x95\xbf\x93\x85y\xf3\xffh2\x8f\x0e\xe8\ +\xbdV\xf7\x96\xfb\xc4\xd7\xa9\xc4\x10\xee\xe0G\x00\x01\xe5\ +\xcb\xecA\xf7M\xbc\xd3\xfd[\x07\x08W\xd5\xac\x96\xa5\ +\x15\xcfIYG%\x15\x14\x1c\xaa\x9d\xcf\x89N\xf0\x1f\ +\xf4L0\x04\x10Pt\x0b\xab\xa5\x95+\xa5\xad\xbbM\ +\x9e\xa9Z\xe5\xe6\x11\x80\xc0\x05\xff\x09N\xf0\x1fR\x1f\ +\x8e\xac\xc0\x00!\x0d~\x85\x89@\x00!\x0d~\x04\x00\ +\x10\xe2\xe0G\x00\x00!\x0e~\x04\x00\x10\xe2\xe0G\x00\ +\x00!\x0e~\x04\x00\x10\xe2\xe0G\x00\x00!\x0e~\x04\ +\x00\x10\xe2\xe0G\x00\x00!\x0e~\x04\x00\x10\xe2\xe0G\ +\x00\x00!\x0e~\x04\x00\x10\xe2\xe0G\x00\x00!\x0e~\ +\x04\x00\x10\xe2\xe0G\x00\x00!\x0e~\x04\x00\x10\xe2\xe0\ +G\x00\x00!\x0e~%\x12\x8d\x92\x10\x08 \xac\xd0\x02\ +\x00@\x00\x00\x80\x00\x00\x00\x01\x00\x00\x02\x00\x00\x04\x00\ +\x00\x08\x00\x00\x10\x00\x00 \x00\x00@\x00\x00\x80\x00\x00\ +\x00\x01\x00\x00\x02\x00\x00\x04\x00\x00\x08\x00\x00\x10\x00\x00\ + \x00\x00@\x00\x00\x80\x00\x00\x00\x01\x00\x00\x02\x00\x00\ +\x04\x00\x00\x08\x00\x00\x10\x00\x00 \x00\x00@\x00\x00\x80\ +\x00\x00\x00\x01\x00\x00\x02\x00\x00\x04\x00\x00\x08\x00\x00\x10\ +\x00\x00 \x00\x008\x00\xff+\xc0\x00\x1c{0\x19G\ +\x03\xd4k\x00\x00\x00\x00IEND\xaeB`\x82\ +" + +qt_resource_name = b"\ +\x00\x06\ +\x07\x9e\x88\xb4\ +\x00s\ +\x00h\x00a\x00r\x00e\x00d\ +\x00\x0c\ +\x00V'\xdc\ +\x00C\ +\x00h\x00e\x00c\x00k\x00B\x00o\x00x\x00.\x00q\x00m\x00l\ +\x00\x0d\ +\x01\xb8P\x9c\ +\x00T\ +\x00e\x00x\x00t\x00F\x00i\x00e\x00l\x00d\x00.\x00q\x00m\x00l\ +\x00\x09\ +\x08\xbf\xf4\xdc\ +\x00L\ +\x00a\x00b\x00e\x00l\x00.\x00q\x00m\x00l\ +\x00\x1a\ +\x04'S\xdc\ +\x00S\ +\x00i\x00m\x00p\x00l\x00e\x00L\x00a\x00u\x00n\x00c\x00h\x00e\x00r\x00D\x00e\x00l\ +\x00e\x00g\x00a\x00t\x00e\x00.\x00q\x00m\x00l\ +\x00\x10\ +\x09\x8e}\x5c\ +\x00L\ +\x00a\x00u\x00n\x00c\x00h\x00e\x00r\x00L\x00i\x00s\x00t\x00.\x00q\x00m\x00l\ +\x00\x0a\ +\x0a\xce\x15\xdc\ +\x00S\ +\x00l\x00i\x00d\x00e\x00r\x00.\x00q\x00m\x00l\ +\x00\x12\ +\x06\xc0(<\ +\x00F\ +\x00l\x00i\x00c\x00k\x00r\x00R\x00s\x00s\x00M\x00o\x00d\x00e\x00l\x00.\x00q\x00m\ +\x00l\ +\x00\x06\ +\x07\x03}\xc3\ +\x00i\ +\x00m\x00a\x00g\x00e\x00s\ +\x00\x06\ +\x07\x84+\x02\ +\x00q\ +\x00m\x00l\x00d\x00i\x00r\ +\x00\x0a\ +\x09\xcc\x1a\xdc\ +\x00T\ +\x00a\x00b\x00S\x00e\x00t\x00.\x00q\x00m\x00l\ +\x00\x0a\ +\x0d\xd0R\xdc\ +\x00I\ +\x00m\x00a\x00g\x00e\x00s\x00.\x00q\x00m\x00l\ +\x00\x0a\ +\x0bhq\x5c\ +\x00B\ +\x00u\x00t\x00t\x00o\x00n\x00.\x00q\x00m\x00l\ +\x00\x0d\ +\x0b]\x12\x87\ +\x00c\ +\x00h\x00e\x00c\x00k\x00m\x00a\x00r\x00k\x00.\x00p\x00n\x00g\ +\x00\x07\ +\x0auW\xa7\ +\x00t\ +\x00a\x00b\x00.\x00p\x00n\x00g\ +\x00\x08\ +\x07\x9eZG\ +\x00b\ +\x00a\x00c\x00k\x00.\x00p\x00n\x00g\ +\x00\x08\ +\x0c\xf7Y\xc7\ +\x00n\ +\x00e\x00x\x00t\x00.\x00p\x00n\x00g\ +\x00\x11\ +\x02G!g\ +\x00s\ +\x00l\x00i\x00d\x00e\x00r\x00_\x00h\x00a\x00n\x00d\x00l\x00e\x00.\x00p\x00n\x00g\ +\ +\x00\x0b\ +\x05R\xbf'\ +\x00q\ +\x00t\x00-\x00l\x00o\x00g\x00o\x00.\x00p\x00n\x00g\ +" + +qt_resource_struct = b"\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x0c\x00\x00\x00\x02\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ +\x00\x00\x01\x82Y\xad^\x0f\ +\x00\x00\x000\x00\x00\x00\x00\x00\x01\x00\x00\x06\x9f\ +\x00\x00\x01\x82Y\xad^\x0f\ +\x00\x00\x00h\x00\x00\x00\x00\x00\x01\x00\x00\x0b\x8a\ +\x00\x00\x01\x82Y\xad^\x0f\ +\x00\x00\x00\xe2\x00\x00\x00\x00\x00\x01\x00\x00&\x02\ +\x00\x00\x01\x82Y\xad^\x0f\ +\x00\x00\x01\x0c\x00\x02\x00\x00\x00\x06\x00\x00\x00\x0e\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x01\x1e\x00\x00\x00\x00\x00\x01\x00\x00,\xcb\ +\x00\x00\x01\x82_\xc7\xcc\xde\ +\x00\x00\x00P\x00\x00\x00\x00\x00\x01\x00\x00\x0a\xbf\ +\x00\x00\x01\x82Y\xad^\x0f\ +\x00\x00\x00\xa2\x00\x01\x00\x00\x00\x01\x00\x00\x16\x06\ +\x00\x00\x01\x82Y\xad^\x0f\ +\x00\x00\x010\x00\x00\x00\x00\x00\x01\x00\x00.\x07\ +\x00\x00\x01\x82Y\xad^\x0f\ +\x00\x00\x00\xc8\x00\x00\x00\x00\x00\x01\x00\x00\x1b\xb6\ +\x00\x00\x01\x82Y\xad^\x0f\ +\x00\x00\x01d\x00\x00\x00\x00\x00\x01\x00\x009S\ +\x00\x00\x01\x82Y\xad^\x0f\ +\x00\x00\x01J\x00\x00\x00\x00\x00\x01\x00\x006\xe7\ +\x00\x00\x01\x82Y\xad^\x0f\ +\x00\x00\x01\xde\x00\x00\x00\x00\x00\x01\x00\x00N\xca\ +\x00\x00\x01\x82Y\xad^\x0f\ +\x00\x00\x02\x06\x00\x00\x00\x00\x00\x01\x00\x00RE\ +\x00\x00\x01\x82_\xc1\xa7\xb9\ +\x00\x00\x01\xb2\x00\x00\x00\x00\x00\x01\x00\x00C1\ +\x00\x00\x01\x82Y\xad^\x0f\ +\x00\x00\x01\x9e\x00\x00\x00\x00\x00\x01\x00\x00A\xf8\ +\x00\x00\x01\x82Y\xad^\x0f\ +\x00\x00\x01~\x00\x00\x00\x00\x00\x01\x00\x00>\xcb\ +\x00\x00\x01\x82Y\xad^\x0f\ +\x00\x00\x01\xc8\x00\x00\x00\x00\x00\x01\x00\x00Ik\ +\x00\x00\x01\x82Y\xad^\x0f\ +" + +def qInitResources(): + QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data) + +def qCleanupResources(): + QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data) + +qInitResources() diff --git a/examples/declarative/window/AllScreens.qml b/examples/declarative/window/AllScreens.qml new file mode 100644 index 000000000..25438f21a --- /dev/null +++ b/examples/declarative/window/AllScreens.qml @@ -0,0 +1,42 @@ +// Copyright (C) 2021 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +import QtQuick +import QtQuick.Controls + +Column { + id: root + spacing: 8 + + Label { + text: "Total number of screens: " + screenInfo.count + font.bold: true + } + + Flow { + spacing: 12 + width: parent.width + + Repeater { + id: screenInfo + model: (Qt.application as Application).screens + Label { + required property string name + required property int virtualX + required property int virtualY + required property var modelData // avoid shadowing Label.width and height + + lineHeight: 1.5 + text: name + "\n" + virtualX + ", " + virtualY + " " + modelData.width + "x" + modelData.height + } + } + } + + Component.onCompleted: { + var screens = (Qt.application as Application).screens; + for (var i = 0; i < screens.length; ++i) + console.log("screen " + screens[i].name + " has geometry " + + screens[i].virtualX + ", " + screens[i].virtualY + " " + + screens[i].width + "x" + screens[i].height) + } +} diff --git a/examples/declarative/window/CurrentScreen.qml b/examples/declarative/window/CurrentScreen.qml new file mode 100644 index 000000000..1f4da7f0b --- /dev/null +++ b/examples/declarative/window/CurrentScreen.qml @@ -0,0 +1,83 @@ +// Copyright (C) 2021 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +import QtQuick +import QtQuick.Controls + +Item { + id: root + width: 400 + height: propertyGrid.implicitHeight + 16 + + function orientationToString(o) { + switch (o) { + case Qt.PrimaryOrientation: + return "primary"; + case Qt.PortraitOrientation: + return "portrait"; + case Qt.LandscapeOrientation: + return "landscape"; + case Qt.InvertedPortraitOrientation: + return "inverted portrait"; + case Qt.InvertedLandscapeOrientation: + return "inverted landscape"; + } + return "unknown"; + } + + Grid { + id: propertyGrid + columns: 2 + spacing: 8 + x: spacing + y: spacing + + //! [screen] + Label { + text: "Screen \"" + Screen.name + "\":" + font.bold: true + } + Item { width: 1; height: 1 } // spacer + + Label { text: "manufacturer" } + Label { text: Screen.manufacturer ? Screen.manufacturer : "unknown" } + + Label { text: "model" } + Label { text: Screen.model ? Screen.model : "unknown" } + + Label { text: "serial number" } + Label { text: Screen.serialNumber ? Screen.serialNumber : "unknown" } + + Label { text: "dimensions" } + Label { text: Screen.width + "x" + Screen.height } + + Label { text: "pixel density" } + Label { text: Screen.pixelDensity.toFixed(2) + " dots/mm (" + (Screen.pixelDensity * 25.4).toFixed(2) + " dots/inch)" } + + Label { text: "logical pixel density" } + Label { text: Screen.logicalPixelDensity.toFixed(2) + " dots/mm (" + (Screen.logicalPixelDensity * 25.4).toFixed(2) + " dots/inch)" } + + Label { text: "device pixel ratio" } + Label { text: Screen.devicePixelRatio.toFixed(2) } + + Label { text: "available virtual desktop" } + Label { text: Screen.desktopAvailableWidth + "x" + Screen.desktopAvailableHeight } + + Label { text: "position in virtual desktop" } + Label { text: Screen.virtualX + ", " + Screen.virtualY } + + Label { text: "orientation" } + Label { text: root.orientationToString(Screen.orientation) + " (" + Screen.orientation + ")" } + + Label { text: "primary orientation" } + Label { text: root.orientationToString(Screen.primaryOrientation) + " (" + Screen.primaryOrientation + ")" } + //! [screen] + + Label { text: "10mm rectangle" } + Rectangle { + color: "red" + width: Screen.pixelDensity * 10 + height: width + } + } +} diff --git a/examples/declarative/window/Splash.qml b/examples/declarative/window/Splash.qml new file mode 100644 index 000000000..0a7da219d --- /dev/null +++ b/examples/declarative/window/Splash.qml @@ -0,0 +1,42 @@ +// Copyright (C) 2021 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +import QtQuick +import shared + +//! [splash-properties] +Window { + id: splash + color: "transparent" + title: "Splash Window" + modality: Qt.ApplicationModal + flags: Qt.SplashScreen + property int timeoutInterval: 2000 + signal timeout +//! [splash-properties] +//! [screen-properties] + x: (Screen.width - splashImage.width) / 2 + y: (Screen.height - splashImage.height) / 2 +//! [screen-properties] + width: splashImage.width + height: splashImage.height + + Image { + id: splashImage + source: Images.qtLogo + MouseArea { + anchors.fill: parent + onClicked: Qt.quit() + } + } + //! [timer] + Timer { + interval: splash.timeoutInterval; running: true; repeat: false + onTriggered: { + splash.visible = false + splash.timeout() + } + } + //! [timer] + Component.onCompleted: visible = true +} diff --git a/examples/declarative/window/doc/window.png b/examples/declarative/window/doc/window.png Binary files differnew file mode 100644 index 000000000..72487b4d9 --- /dev/null +++ b/examples/declarative/window/doc/window.png diff --git a/examples/declarative/window/doc/window.rst b/examples/declarative/window/doc/window.rst new file mode 100644 index 000000000..8736bb629 --- /dev/null +++ b/examples/declarative/window/doc/window.rst @@ -0,0 +1,35 @@ +Qt Quick Examples - Window and Screen +===================================== + +This example demonstrates the Window and Screen types in QML. + +.. image:: window.png + :width: 392 + :alt: Window and Screen screenshot + +In addition, this example demonstrates the usage of the Qt Resource System in +Qt for Python for more advanced scenarios. There are several QML files, one of +which imports a module from this sibling directory. Both this "shared" module +and the QML files of the example need to be compiled into Python modules with +the resource compiler rcc. + +For the "shared" module approach to work with QML and rcc, you need: + +* A module definition *qmldir* file +* A Qt Resource Collection file (.qrc) specifying all the QML files and other +resources, plus the *qmldir* file + +The .qrc file is the input to rcc. This will generate a Python module (called +*shared_rc* here) that can then be imported from the Python code. At runtime, +only this Python module is needed, not the .qrc file or any of the .qml files +or even the image resources, as they have all been compiled into the Python +module. + +For the example, rcc needs: + +* A Qt Resource Collection file (.qrc) specifying all the QML files and other +resources. There is no qmldir file here because this is not a module. + +This will generate a Python module (called *window_rc* here) that can then be +imported from the Python code. Again, only the Python module is needed at +runtime. diff --git a/examples/declarative/window/main.py b/examples/declarative/window/main.py new file mode 100644 index 000000000..8f8260b56 --- /dev/null +++ b/examples/declarative/window/main.py @@ -0,0 +1,37 @@ +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +import os +from pathlib import Path +import sys + +from PySide6.QtCore import QUrl, qWarning +from PySide6.QtGui import QGuiApplication +from PySide6.QtQml import QQmlComponent, QQmlEngine +from PySide6.QtQuick import QQuickWindow + +import window_rc + +# Append the parent directory of this file so that Python can find and +# import from the "shared" sibling directory. +sys.path.append(os.fspath(Path(__file__).parent.parent)) +from shared import shared_rc + + +if __name__ == "__main__": + app = QGuiApplication(sys.argv) + engine = QQmlEngine() + + # Add the qrc root as QML import path so that the "shared" module + # can be found. + engine.addImportPath(":/") + + component = QQmlComponent(engine) + QQuickWindow.setDefaultAlphaBuffer(True) + component.loadUrl(QUrl("qrc:///window/window.qml")) + if component.isReady(): + component.create() + else: + qWarning(component.errorString()) + app.exit(1) + app.exec() diff --git a/examples/declarative/window/resources/icon.icns b/examples/declarative/window/resources/icon.icns Binary files differnew file mode 100644 index 000000000..88b4b2444 --- /dev/null +++ b/examples/declarative/window/resources/icon.icns diff --git a/examples/declarative/window/resources/icon.ico b/examples/declarative/window/resources/icon.ico Binary files differnew file mode 100644 index 000000000..52af30a6c --- /dev/null +++ b/examples/declarative/window/resources/icon.ico diff --git a/examples/declarative/window/resources/icon.svg b/examples/declarative/window/resources/icon.svg new file mode 100644 index 000000000..0b6153206 --- /dev/null +++ b/examples/declarative/window/resources/icon.svg @@ -0,0 +1,208 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="128" + height="128" + id="svg2" + sodipodi:version="0.32" + inkscape:version="0.48.2 r9819" + version="1.0" + sodipodi:docname="icon.svg" + inkscape:export-filename="/Users/rutledge/dev/qt5-stable/qtdeclarative/examples/quick/window/window/icon80.png" + inkscape:export-xdpi="61.509998" + inkscape:export-ydpi="61.509998" + inkscape:output_extension="org.inkscape.output.svg.inkscape"> + <defs + id="defs4"> + <linearGradient + id="linearGradient4009"> + <stop + style="stop-color:#ffffff;stop-opacity:1;" + offset="0" + id="stop4011" /> + <stop + id="stop4019" + offset="0.875" + style="stop-color:#ffffff;stop-opacity:0.49803922;" /> + <stop + style="stop-color:#ffffff;stop-opacity:0;" + offset="1" + id="stop4013" /> + </linearGradient> + <inkscape:perspective + sodipodi:type="inkscape:persp3d" + inkscape:vp_x="0 : 186.64798 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_z="559.62469 : 186.64798 : 1" + inkscape:persp3d-origin="279.81235 : 124.43199 : 1" + id="perspective4876" /> + <inkscape:perspective + id="perspective2836" + inkscape:persp3d-origin="22 : 14.666667 : 1" + inkscape:vp_z="44 : 22 : 1" + inkscape:vp_y="0 : 1000 : 0" + inkscape:vp_x="0 : 22 : 1" + sodipodi:type="inkscape:persp3d" /> + <filter + inkscape:collect="always" + id="filter4063" + x="-0.195491" + width="1.390982" + y="-0.16235915" + height="1.3247183"> + <feGaussianBlur + inkscape:collect="always" + stdDeviation="3.3077485" + id="feGaussianBlur4065" /> + </filter> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + gridtolerance="10" + guidetolerance="10" + objecttolerance="10000" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="2.9775825" + inkscape:cx="62.656189" + inkscape:cy="42.423381" + inkscape:document-units="px" + inkscape:current-layer="layer1" + inkscape:window-width="1280" + inkscape:window-height="744" + inkscape:window-x="2003" + inkscape:window-y="156" + showgrid="true" + borderlayer="true" + showguides="true" + inkscape:guide-bbox="true" + inkscape:snap-global="false" + inkscape:window-maximized="0"> + <inkscape:grid + type="xygrid" + id="grid7194" + visible="true" + enabled="true" + spacingx="8px" + spacingy="8px" /> + </sodipodi:namedview> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-66.38047,-391.3222)"> + <path + id="path7304" + d="M 95.556318,434.65407 L 165.25811,434.65407 L 165.25811,490.10429 L 95.556318,490.10429 L 95.556318,434.65407 z" + style="fill:#01afaf;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:5.24121141000000000;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + <path + style="fill:#a7c706;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" + d="m 96.869177,465.30846 c 27.677903,3.04574 41.155393,12.11589 48.000003,24 l -48.000003,0 0,-24 z" + id="path7300" + sodipodi:nodetypes="cccc" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="cccc" + id="path7302" + d="M 165.46767,465.22201 C 137.78977,468.26775 124.31228,477.33791 117.46767,489.22201 L 165.46767,489.22201 L 165.46767,465.22201 z" + style="fill:#966406;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;fill-opacity:1" /> + <path + style="fill:#80ffff;fill-rule:evenodd;stroke:#000000;stroke-width:5.24121141000000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;opacity:1;fill-opacity:1" + d="M 95.532809,434.35736 L 74.567964,420.38079 L 74.567964,497.25189 L 95.532809,490.26361 L 95.532809,434.35736 z" + id="path7270" + sodipodi:nodetypes="ccccc" /> + <path + style="fill:#00ffff;fill-rule:evenodd;stroke:#000000;stroke-width:5.24121141;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="M 74.567964,455.3222 L 95.532809,462.31048" + id="path7272" + sodipodi:nodetypes="cc" /> + <g + style="fill:#80ffff;fill-opacity:1" + id="g7278" + transform="matrix(-0.8735352,0,0,0.8735352,244.36615,64.570513)"> + <path + style="fill:#80ffff;fill-rule:evenodd;stroke:#000000;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1" + d="M 24,32 L 0,16 L 0,104 L 24,96 L 24,32 z" + id="path7280" + transform="translate(66.38047,391.3222)" /> + <path + style="fill:#80ffff;fill-rule:evenodd;stroke:#000000;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1" + d="M 0,56 L 24,64" + id="path7282" + transform="translate(66.38047,391.3222)" + sodipodi:nodetypes="cc" /> + </g> + <path + style="fill:#ffffff;fill-opacity:1;filter:url(#filter4063)" + d="m 119.74679,437.94232 c -0.0487,0.003 -0.0932,0.0315 -0.14149,0.0354 -0.1659,0.0132 -0.33372,0.008 -0.49523,0.0354 -0.96156,0.0643 -1.9037,0.14607 -2.86523,0.21224 -2.94807,0.23566 -5.19987,2.66253 -5.19987,6.01345 l 0,39.51194 3.32508,3.07747 0,-0.0354 33.2155,-5.58898 c 2.28673,-0.39587 4.06792,-3.06727 4.06792,-5.97808 l 0,-32.18967 -30.5625,-5.023 c -0.45263,-0.0748 -0.91269,-0.0942 -1.34418,-0.0708 z" + id="path3987" + inkscape:connector-curvature="0" /> + <g + id="g3" + transform="matrix(0.20572087,0,0,0.20572087,113.4162,440.80626)"> + <path + sodipodi:nodetypes="cccccccc" + id="path5" + style="fill:#006225" + d="M 43.09,0.3586 C 40.94,0.0036 38.84,-0.0824 36.81,0.0776 31.968136,0.39505671 27.122677,0.73638425 22.28,1.0696 9.62,2.0816 0,12.4996 0,26.8896 l 0,169.7 14.19,13.2 28.87,-209.42 0.03,-0.011 z" + inkscape:connector-curvature="0" /> + <path + id="path7" + style="fill:#80c342" + d="m 174.4,160 c 0,12.5 -7.75,24.07 -17.57,25.77 L 14.23,209.73 V 25.93 C 14.23,9.21 27.57,-2.27 43.12,0.3 l 131.3,21.52 v 138.2 z" + inkscape:connector-curvature="0" /> + <path + id="path11" + style="fill:#006225" + d="m 154.9,80.96 -12.96,-0.598 0,0.278 6.945,0.32 6.016,0 z" + inkscape:connector-curvature="0" /> + <path + id="path13" + style="fill:#006225" + d="m 144.6,135.6 c 0.66,0.328 1.43,0.476 2.351,0.476 0.161,0 0.329,-0.004 0.497,-0.016 2.55,-0.148 5.32,-0.933 8.343,-2.308 h -6.015 c -1.821,0.832 -3.532,1.457 -5.176,1.848 z" + inkscape:connector-curvature="0" /> + <path + d="m 91.15,132.4 c 2.351,-6.051 3.511,-17.91 3.511,-35.62 0,-15.89 -1.148,-26.82 -3.484,-32.81 -2.336,-6.027 -5.832,-9.281 -10.52,-9.691 -0.359,-0.031 -0.714,-0.051 -1.058,-0.051 -4.34,0 -7.68,2.535 -10.01,7.625 -2.52,5.543 -3.793,17.04 -3.793,34.44 0,16.82 1.238,28.75 3.734,35.75 2.356,6.672 5.879,9.976 10.5,9.976 0.207,0 0.41,-0.008 0.621,-0.019 4.633,-0.293 8.121,-3.496 10.49,-9.602 m 17.98,3.75 c -4.117,9.707 -10.39,16.06 -18.99,19 0.867,4.449 2.176,7.441 3.922,9.019 1.351,1.211 3.433,1.821 6.222,1.821 0.805,0 1.668,-0.055 2.59,-0.157 v 13.12 l -5.961,0.782 c -1.758,0.23 -3.426,0.343 -5.004,0.343 -5.218,0 -9.445,-1.265 -12.62,-3.824 -4.207,-3.379 -7.308,-9.894 -9.297,-19.54 -9.136,-1.945 -16.26,-7.754 -21.19,-17.5 -5.004,-9.902 -7.551,-24.39 -7.551,-43.34 0,-20.43 3.484,-35.51 10.34,-45.07 5.789,-8.07 13.86,-12.04 24.02,-12.04 1.629,0 3.309,0.102 5.043,0.305 11.95,1.375 20.62,7.016 26.26,16.79 5.535,9.562 8.254,23.27 8.254,41.26 0,16.48 -2,29.45 -6.043,39.02 z M 130.4,45.91 l 11.52,1.238 0,20.21 12.96,0.914 0,12.68 -12.96,-0.598 0,46.33 c 0,4.032 0.445,6.625 1.34,7.789 0.8,1.067 2.046,1.594 3.71,1.594 0.161,0 0.329,-0.004 0.497,-0.016 2.55,-0.148 5.32,-0.933 8.343,-2.308 v 11.65 c -5.136,2.258 -10.18,3.598 -15.12,4.02 -0.718,0.055 -1.41,0.086 -2.078,0.086 -4.48,0 -7.906,-1.301 -10.25,-3.934 -2.73,-3.051 -4.09,-7.949 -4.09,-14.67 V 79.535 L 118.046,79.25 V 65.66 l 7.586,0.547 4.773,-20.3 z" + style="fill:#ffffff" + id="path17" + inkscape:connector-curvature="0" /> + <path + id="path19" + style="fill:#006225" + d="m 100.3,166 c 0.809,0 1.672,-0.055 2.59,-0.157 H 98.054 C 98.73,165.949 99.507,166 100.3,166 z" + inkscape:connector-curvature="0" /> + <path + d="m 84.85,63.98 c 2.336,5.997 3.484,16.92 3.484,32.81 0,17.7 -1.16,29.57 -3.512,35.62 -1.894,4.879 -4.527,7.902 -7.863,9.07 0.965,0.368 1.992,0.551 3.078,0.551 0.207,0 0.41,-0.008 0.621,-0.019 4.633,-0.293 8.121,-3.496 10.49,-9.602 2.351,-6.051 3.511,-17.91 3.511,-35.62 0,-15.89 -1.148,-26.82 -3.484,-32.81 -2.336,-6.027 -5.832,-9.281 -10.52,-9.691 -0.359,-0.031 -0.714,-0.051 -1.058,-0.051 -1.09,0 -2.117,0.16 -3.082,0.481 h -0.004 c 3.601,1.121 6.379,4.215 8.336,9.261 z m -2.344,114.3 c -0.113,-0.05 -0.227,-0.105 -0.336,-0.16 -0.012,-0.004 -0.023,-0.012 -0.035,-0.015 -0.102,-0.051 -0.207,-0.106 -0.309,-0.157 -0.019,-0.011 -0.039,-0.019 -0.058,-0.031 -0.09,-0.051 -0.184,-0.098 -0.278,-0.148 -0.027,-0.016 -0.054,-0.036 -0.086,-0.051 -0.082,-0.043 -0.164,-0.09 -0.242,-0.137 -0.039,-0.023 -0.078,-0.047 -0.113,-0.07 -0.07,-0.039 -0.145,-0.082 -0.215,-0.125 -0.047,-0.031 -0.094,-0.059 -0.14,-0.09 -0.059,-0.039 -0.118,-0.074 -0.176,-0.113 -0.059,-0.039 -0.114,-0.075 -0.168,-0.114 -0.051,-0.031 -0.102,-0.066 -0.149,-0.097 -0.066,-0.047 -0.132,-0.094 -0.195,-0.137 -0.039,-0.027 -0.078,-0.055 -0.113,-0.082 -0.078,-0.055 -0.153,-0.113 -0.231,-0.172 -0.023,-0.016 -0.05,-0.035 -0.078,-0.055 -0.098,-0.078 -0.199,-0.156 -0.297,-0.234 -4.207,-3.379 -7.308,-9.894 -9.297,-19.54 -9.136,-1.945 -16.26,-7.754 -21.19,-17.5 -5.004,-9.902 -7.551,-24.39 -7.551,-43.34 0,-20.43 3.484,-35.51 10.34,-45.07 5.789,-8.07 13.86,-12.04 24.02,-12.04 h -6.351 c -10.15,0.008 -18.22,3.977 -24,12.04 -6.855,9.563 -10.34,24.64 -10.34,45.07 0,18.95 2.547,33.44 7.551,43.34 4.934,9.75 12.05,15.56 21.19,17.5 1.989,9.641 5.09,16.16 9.297,19.54 3.176,2.559 7.403,3.824 12.62,3.824 0.098,0 0.199,0 0.297,-0.004 h 5.539 c -3.406,-0.05 -6.383,-0.66 -8.906,-1.828 L 82.498,178.28 z M 128.4,145.6 c -2.73,-3.051 -4.09,-7.949 -4.09,-14.67 V 79.57 l -6.226,-0.285 v -13.59 h -6.016 v 3.035 c 0.871,3.273 1.555,6.82 2.063,10.64 l 4.164,0.192 v 51.36 c 0,6.723 1.367,11.62 4.09,14.67 2.343,2.633 5.765,3.934 10.25,3.934 h 6.015 c -4.48,0 -7.906,-1.301 -10.25,-3.934 z m 2.043,-99.66 -6.016,0 -4.668,19.88 5.911,0.422 4.773,-20.3 z" + style="fill:#006225" + id="path21" + inkscape:connector-curvature="0" /> + </g> + <path + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:5.24121141;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" + d="M 96.506224,434.65407 L 166.20801,434.65407 L 166.20801,490.10429 L 96.506224,490.10429 L 96.506224,434.65407 z" + id="rect7265" /> + </g> +</svg> diff --git a/examples/declarative/window/resources/icon64.png b/examples/declarative/window/resources/icon64.png Binary files differnew file mode 100644 index 000000000..0fa324401 --- /dev/null +++ b/examples/declarative/window/resources/icon64.png diff --git a/examples/declarative/window/window.pyproject b/examples/declarative/window/window.pyproject new file mode 100644 index 000000000..8ce352cd2 --- /dev/null +++ b/examples/declarative/window/window.pyproject @@ -0,0 +1,3 @@ +{ + "files": ["main.py", "window.qml", "Splash.qml", "AllScreens.qml", "CurrentScreen.qml"] +} diff --git a/examples/declarative/window/window.qml b/examples/declarative/window/window.qml new file mode 100644 index 000000000..47cc5257b --- /dev/null +++ b/examples/declarative/window/window.qml @@ -0,0 +1,151 @@ +// Copyright (C) 2021 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +import QtQuick +import QtQuick.Controls + +QtObject { + id: root + property real defaultSpacing: 10 + property SystemPalette palette: SystemPalette { } + + property var controlWindow: Window { + width: col.implicitWidth + root.defaultSpacing * 2 + height: col.implicitHeight + root.defaultSpacing * 2 + color: root.palette.window + title: "Control Window" + Column { + id: col + anchors.fill: parent + anchors.margins: root.defaultSpacing + spacing: root.defaultSpacing + property real cellWidth: col.width / 3 - spacing + Label { text: "Control the second window:" } + Grid { + id: grid + columns: 3 + spacing: root.defaultSpacing + width: parent.width + Button { + id: showButton + width: col.cellWidth + text: root.testWindow.visible ? "Hide" : "Show" + onClicked: root.testWindow.visible = !root.testWindow.visible + } + //! [windowedCheckbox] + CheckBox { + text: "Windowed" + height: showButton.height + width: col.cellWidth + Binding on checked { value: root.testWindow.visibility === Window.Windowed } + onClicked: root.testWindow.visibility = Window.Windowed + } + //! [windowedCheckbox] + CheckBox { + height: showButton.height + width: col.cellWidth + text: "Full Screen" + Binding on checked { value: root.testWindow.visibility === Window.FullScreen } + onClicked: root.testWindow.visibility = Window.FullScreen + } + Button { + id: autoButton + width: col.cellWidth + text: "Automatic" + onClicked: root.testWindow.visibility = Window.AutomaticVisibility + } + CheckBox { + height: autoButton.height + text: "Minimized" + Binding on checked { value: root.testWindow.visibility === Window.Minimized } + onClicked: root.testWindow.visibility = Window.Minimized + } + CheckBox { + height: autoButton.height + text: "Maximized" + Binding on checked { value: root.testWindow.visibility === Window.Maximized } + onClicked: root.testWindow.visibility = Window.Maximized + } + } + function visibilityToString(v) { + switch (v) { + case Window.Windowed: + return "windowed"; + case Window.Minimized: + return "minimized"; + case Window.Maximized: + return "maximized"; + case Window.FullScreen: + return "fullscreen"; + case Window.AutomaticVisibility: + return "automatic"; + case Window.Hidden: + return "hidden"; + } + return "unknown"; + } + Label { + id: visibilityLabel + text: "second window is " + (root.testWindow.visible ? "visible" : "invisible") + + " and has visibility " + parent.visibilityToString(root.testWindow.visibility) + } + Rectangle { + color: root.palette.text + width: parent.width + height: 1 + } + CurrentScreen { } + Rectangle { + color: root.palette.text + width: parent.width + height: 1 + } + AllScreens { width: parent.width } + } + } + + property var testWindow: Window { + width: 320 + height: 240 + color: "#215400" + title: "Test Window with color " + color + flags: Qt.Window | Qt.WindowFullscreenButtonHint + Rectangle { + anchors.fill: parent + anchors.margins: root.defaultSpacing + Label { + anchors.centerIn: parent + text: "Second Window" + } + MouseArea { + anchors.fill: parent + onClicked: root.testWindow.color = "#e0c31e" + } + Button { + anchors.right: parent.right + anchors.top: parent.top + anchors.margins: root.defaultSpacing + text: root.testWindow.visibility === Window.FullScreen ? "exit fullscreen" : "go fullscreen" + width: 150 + onClicked: { + if (root.testWindow.visibility === Window.FullScreen) + root.testWindow.visibility = Window.AutomaticVisibility + else + root.testWindow.visibility = Window.FullScreen + } + } + Button { + anchors.left: parent.left + anchors.top: parent.top + anchors.margins: root.defaultSpacing + text: "X" + width: 30 + onClicked: root.testWindow.close() + } + } + } + + property var splashWindow: Splash { + onTimeout: root.controlWindow.visible = true + } +} diff --git a/examples/declarative/window/window.qrc b/examples/declarative/window/window.qrc new file mode 100644 index 000000000..89d1de1b1 --- /dev/null +++ b/examples/declarative/window/window.qrc @@ -0,0 +1,8 @@ +<RCC> + <qresource prefix="/window"> + <file>window.qml</file> + <file>Splash.qml</file> + <file>CurrentScreen.qml</file> + <file>AllScreens.qml</file> + </qresource> +</RCC> diff --git a/examples/declarative/window/window_rc.py b/examples/declarative/window/window_rc.py new file mode 100644 index 000000000..71a65fc44 --- /dev/null +++ b/examples/declarative/window/window_rc.py @@ -0,0 +1,328 @@ +# Resource object code (Python 3) +# Created by: object code +# Created by: The Resource Compiler for Qt version 6.5.0 +# WARNING! All changes made in this file will be lost! + +from PySide6 import QtCore + +qt_resource_data = b"\ +\x00\x00\x04\xe8\ +/\ +/ Copyright (C) \ +2021 The Qt Comp\ +any Ltd.\x0a// SPDX\ +-License-Identif\ +ier: LicenseRef-\ +Qt-Commercial OR\ + BSD-3-Clause\x0a\x0ai\ +mport QtQuick\x0aim\ +port QtQuick.Con\ +trols\x0a\x0aColumn {\x0a\ + id: root\x0a \ + spacing: 8\x0a\x0a \ + Label {\x0a \ + text: \x22Total nu\ +mber of screens:\ + \x22 + screenInfo.\ +count\x0a fo\ +nt.bold: true\x0a \ + }\x0a\x0a Flow {\x0a\ + spacing:\ + 12\x0a widt\ +h: parent.width\x0a\ +\x0a Repeate\ +r {\x0a \ +id: screenInfo\x0a \ + model\ +: (Qt.applicatio\ +n as Application\ +).screens\x0a \ + Label {\x0a \ + re\ +quired property \ +string name\x0a \ + requ\ +ired property in\ +t virtualX\x0a \ + requi\ +red property int\ + virtualY\x0a \ + requir\ +ed property var \ +modelData // avo\ +id shadowing Lab\ +el.width and hei\ +ght\x0a\x0a \ + lineHeight:\ + 1.5\x0a \ + text: name \ ++ \x22\x5cn\x22 + virtual\ +X + \x22, \x22 + virtu\ +alY + \x22 \x22 + mode\ +lData.width + \x22x\ +\x22 + modelData.he\ +ight\x0a \ + }\x0a }\x0a \ + }\x0a\x0a Componen\ +t.onCompleted: {\ +\x0a var scr\ +eens = (Qt.appli\ +cation as Applic\ +ation).screens;\x0a\ + for (var\ + i = 0; i < scre\ +ens.length; ++i)\ +\x0a con\ +sole.log(\x22screen\ + \x22 + screens[i].\ +name + \x22 has geo\ +metry \x22 +\x0a \ + \ + screens[i].vir\ +tualX + \x22, \x22 + s\ +creens[i].virtua\ +lY + \x22 \x22 +\x0a \ + \ + screens[i].wi\ +dth + \x22x\x22 + scre\ +ens[i].height)\x0a \ + }\x0a}\x0a\ +\x00\x00\x04\x8e\ +\x00\ +\x00\x16\x10x\x9c\xcdXKo\xdb8\x10\xbe\xfbW\xb0\ +\xdaK\xb2\x85\xdf\xed\xc5E\xb0H\x5ctS E\x9b\ +8h\x0a,\xf6\xa0Hc\x8b\x1bZ4H*v6\ +\x9b\xff\xbe#\x91\xd4\xc3\xa2d\xa7q\xb7\xcb\x8b%r\ +\xf8q\xe6\x9b\x878\xee\xf7\xc9\x94\xaf\x1e\x04]D\x8a\ +\x1cM\x8f\xc9h0\x1a\x92\xeb\x08\xc8\xa5\xc2\x95\xe5\xca\ +\x8f\x1f\xc8\x85\x0a{\x9d~\x9f\xcc\xbe\xbc\xff\xd6\xbd\xa0\ +\x01\xc4\x12\xba\x1fC\x88\x15\x9dS\x10\x13b\xe6\xae`\ +\xde\xbdT]\xdc\xb6\x04\x11P\x9f\x91\xcfW\xe4l\xf6\ +\xbe;\xeeN\x99\x9fH\xe8t\xe8r\xc5\x85B\xf0\xcb\ +\x84\x06w[\xaf\xbd)\x8f\x95\xe0Lv:\x97\xea\xf3\ +\xed_\x10(\xf2\xd8!8h8!\x82s\x95\xbd\xac\ +\x04_\x81P\x0fD\x00\x1e\x11\xc2\xdcO\x98\x9a\xad\xfc\ +\x80\xc6\x8b\x09\x19\x0e\xaaB\xb3\x07\xa9`\xf9\xc5g\xa0\ +\x14\x90\x95\xfe\x9dlM?\x92\xa7Nu\xdb\xbd/H\ +\xa0\xd5\xb9\xa1q\xc8\xd7\x13\xa2\x7f\x8dF\xe9X\xd3P\ +E\x13\x14c=4\x84\xd1\x80\xaa\x9bt\x8a\xbc\xce\x94\ +\xedUU#\xbf\x92Q\xbe5\x82\x94\xf1\xea\xde\xf3l\ +n\x8f\xcd\xb8\x89\x0bMH\xcf\x18\xd4[g\xca\xe5\x22\ +\x8a*\x86Vz\x86Q\xa3\xbb\x97\xafO9K\x96q\ +\xc9\x16\xcb2bW\xe6\xfc8\x88\xb8\x90\xbd9el\ +\x82\xf4\x09\xf4\xbaS`\xe9\x8b\x05\x8d\xe5\xc4\xa5}e\ +\x83\xb4\x9e\xda%X\xf5s\x00\x8c\xdd\x14\x84g\xdc\x93\ +>\x19\x93\xaeE\xacl\xbe\xf0o\x81\xa1_\x15lT\ +\x89\x07\x85\x91-\x01\x1d\x1b\x12\xcd\xd8\xc4C\xd7\x977\ +\xfe.h\xb8\xc5\x8b\xe5f\x81K\xb5\x85 c\x12\xed\ +\x1e\xd7\x96\xf6\xb64\x1d&\x984\xc3\xda\xbc\x9a\xccY\ +\xa2\x14\xdf\xf6ZYC\x19\xf1\xb5\x16r\x8a\x94\x026\ +\xa7\xd3)\xa8Y\xcb\xd4V \x95\x8e\x9e\xde=\x95\xf4\ +\x96\x01\xf9\x8dx\xe74\x04\x8f \xb1\xb3\xa8\x1cV\xe5\ +\xc1\xe3)\x86\xf5\x1d\x84\xcd@'\xe4U\xc3R\x0d\xf1\ +\xa96\xd3\xef\xbf\x22\x7fh'B8\x8d \xb8\xbb\xe5\ +\x9b?kb\xd9\xca\x19\xdf4\xb0f\xe2\xe3\xc6\xe0\xb8\ +M\xb1\xd9Z\xd0\xdb\xd3S/c\xf9\x0c\x0fMs\x1b\ +]\x1a\xa4Z\x02\x06\x1e\x16\x1e\x96@\x03e\x94QL\ +\x87\x93\x93\x13\x93\xcf=\xab\xb6\x83\x9et\xecr\x81\xc1\ +\xdbF\xfb\xcf\xc8\xffA\xbc\x1a\x9f~H\x18#\xb3@\ +\x00\xc4n\xb7\xbe\x9c\xff\xf4\x08}\xc2a<P\xe0\xed\ +\xe1\x83\x9d\xd5\xc0O\x14?\x5c5\xf0N\x11n\xe9+\ +\x1a|_\xbeo\x99\x9a\xa3}\xcd\x17\xf7\xb0y\xcf\x80\ +*,o\x0b(c\xd7'\x1a\xd3%\xfd\xbb)\xf9_\ +\x1e%\xf9\x01\x87\x09\x92\x1c\xeeg\xf1\xe5o~0_\ +\xf6\x80\x03\xf1e\xe1v\xf0U}\x9b'q\xa0(\x1a\ +Q@^\xf3\x99\x12h\xda\xd1\xfd\xb1\x83O\xb9\xa6*\ +\x88\x88{1\xf0%l\x97\xd9\x89\xd38\x01*\x111\ +\xf1lq\xf5\xde\xb5\x82\xe5\xc1\xd0\x8e\xb6\xccc|\x07\ +\x9c\xe5j\x07\x5c\x1e\x02\xedpE=k\xc7\x9b\xa3\x9c\ +\xd4\x95\xba\x1d\xd0Q5\xda\x91\xfd\xbch\xb5\x03\xe3\x85\ +&\xdc\xa5e\x94\xc98\x80\xeaaj\xb7$\xf1]\xcc\ +\xd7\xdb{\xaa\xf2\xe6\xaa\xea\xbcr\x16\xc1\x97I\xd5d\ +LJV\xae\xb4\x84J\xe2a\x1bq\xd4r\x7f3\x8f\ +\xd9\x15\x8e\xc6\xf6\xed\x98\xbcv\x12@\x10\xcfG\xfc\xc8\ +\x97%\x8d\xb2C\xcc}\xd5\x91$\xcd\xa9y\xdcB\xc6\ +\x156}~\xbc@-\x1dI\xe4\xe8{R\x02\xbe\xeb\ +.mK\xdf\xb0E\x99i\x22R\x04\xf3\x85\x7f\xfc?\ +\xabzj\x13M\xa2\x9e\x0e\xd0\x92\xb8~r5\xbc\x85\ +\xb7\x9a\xbb\xdd\xf1hP\xebbGo\x8a9c\xb9\xf7\ +\xcbh\xf8\xf6\xcd`P|#lKz\x8d\x87Xt\ +,\x99\x91\xde\x91\x05S\xf6\x94o\x983\x7f\x81}\xd5\ +\xa52\x15\x93\xfcS<\x7f\xc8\x0b\x86\xfel\x9d\xd3R\ +[\xda\xe4\x98\xc3\xf7\xb2M\xa9k\x81\x02<\x01\xc4\xc7\ +\xd8yZF\x8a\xce\xdf\x99\xce\xdf\xed.\xbd\xee\xe6O\ +<\x91p\x8a\x0dq\xcb\xa1\x8d\xe6\xa5\xa3\xe5\xdb\xa9\xfd\ +p\x82\xae\x83A0\x1eB\x9b\x1e\x8dwO\xab\x84\xd0\ +\x91aBP8\xef\x14VV\xf1U.\x89\xcf\x8dr\ +{\xbb\xa5`\xf6\xd9\xd7x\xac\x8d\xb0\xa1\x8a\x94\xbeH\ +i\x8d\x5c\xf0\xf2LS\x16\x0f\xdf\x0e\xda\x08o\xb8\xa9\ +\xcf\x1b*u\x8b\x9a\xc7N\xa4t\x1c\xea\xea\x9d\x0e`\ +\xb2\xde\x88?\xe7\xa0\xbd\xdb\x99g\x06\x17\x83y\x11[\ +\xe9\xcb\xcf\x08-\xef[c\x1c\x8c[\xc3\xa0\x96w\x8c\ +K8j\xfa(6Wk\xb9b\xbe\x8cl\xbd\x9ee\ +o%\xd2x|M\x97\xc0\x13\x9b\x05\x95\x7f3K\x7f\ +\xc1(\x91\x809\xe3\xa9\xf3/I\x8e\xfe,\ +\x00\x00\x03\xfa\ +/\ +/ Copyright (C) \ +2021 The Qt Comp\ +any Ltd.\x0a// SPDX\ +-License-Identif\ +ier: LicenseRef-\ +Qt-Commercial OR\ + BSD-3-Clause\x0a\x0ai\ +mport QtQuick\x0aim\ +port shared\x0a\x0a//!\ + [splash-propert\ +ies]\x0aWindow {\x0a \ + id: splash\x0a \ + color: \x22transpa\ +rent\x22\x0a title:\ + \x22Splash Window\x22\ +\x0a modality: Q\ +t.ApplicationMod\ +al\x0a flags: Qt\ +.SplashScreen\x0a \ + property int t\ +imeoutInterval: \ +2000\x0a signal \ +timeout\x0a//! [spl\ +ash-properties]\x0a\ +//! [screen-prop\ +erties]\x0a x: (\ +Screen.width - s\ +plashImage.width\ +) / 2\x0a y: (Sc\ +reen.height - sp\ +lashImage.height\ +) / 2\x0a//! [scree\ +n-properties]\x0a \ + width: splashI\ +mage.width\x0a h\ +eight: splashIma\ +ge.height\x0a\x0a I\ +mage {\x0a i\ +d: splashImage\x0a \ + source: I\ +mages.qtLogo\x0a \ + MouseArea {\ +\x0a anc\ +hors.fill: paren\ +t\x0a on\ +Clicked: Qt.quit\ +()\x0a }\x0a \ + }\x0a //! [time\ +r]\x0a Timer {\x0a \ + interval:\ + splash.timeoutI\ +nterval; running\ +: true; repeat: \ +false\x0a on\ +Triggered: {\x0a \ + splash.\ +visible = false\x0a\ + spla\ +sh.timeout()\x0a \ + }\x0a }\x0a \ + //! [timer]\x0a \ + Component.onCom\ +pleted: visible \ += true\x0a}\x0a\ +\x00\x00\x02\xff\ +\x00\ +\x00\x0adx\x9c\xadV\xdfo\xda0\x10~\xcf_q\ +\xcb\x13l#\x01\xd6MS\xfa0mT[+\xa1\xb5\ +\x85J\xeb\xb4\xee\xc1$\x07XM\xec\xc8q(h\xe2\ +\x7f\x9f\x9d_8\x90\x12\xaa-O\xb9\xf3w\xf7}\xf1\ +\x9d}q]\x18\xf1x#\xe8b)\xa13\xea\xc2\xb0\ +?\x1c\xc0\xdd\x12\xe1V\xaa\x95(&l\x03c\x198\ +\x96\xeb\xc2\xf4\xe6\xe2\xbe7\xa6>\xb2\x04{W\x012\ +I\xe7\x14\x85\x07\x85o\x82\xf3\xde\xad\xec\xa9\xb0\x08\x85\ +OI\x08\xd7\x13\xf82\xbd\xe8\xbd\xeb\x8dB\x92&h\ +Y4\x8a\xb9\x90*\xf9mJ\xfd\xc7=\xd3\x19q&\ +\x05\x0f\x13\xcb\xba\x92\x18\xc1\x1f\x0b\xd4C\x03\x0f\x04\xe7\ +23\x9eh \x97\x1e\x9c\xf5\xfb\x99\xb9D-\xdc\x83\ +X\xf0\x18\x85\xdc|\x134pT\xd2\x90\xfaT^f\ +\x8b\xf0\x06\x06\x1f\xac\x0c=O\x99/)g\xc0\x05U\ +\xe2\x89~\xbf\xe3S)([tx\xb7\xe0\xd3O\xf2\ +D\xa5\xbf\x84\xba\xd3'\x89\xde\x16\xe7F\xd0\x88\x88\xcd\ +\xf5.\x89Wa\xf4#P\xa6\x82\x81\x1d\xe78\xfb\xfc\ +0\x83\xfahA\xa8lOQ\x00\x1br\x8c\x09\x0b\x12\ +\x9f\xc4\xd8\x9a$,\x91\x0dY\xae\xd8J\xed\x1b\x06'\ ++\xa2E\x00\x1c\x91V&=]b\x95\xb5I\xeb\xd6\ +\xda\x87\xa7\xec\x91\xf1'V`\xb6yuu\xed\x8dj\ +\xe9\xb61\xdbb\xa7\x92\x87i\xc4\x12\x0f\x86\xbbr\xc7\ +\xc4W=\xe0\xc1\xc7\xca\xb5\xf6Jo\xe5\xda\xec\x5c\x95\ +\xcfu_\xc1\xaf\xc4\x17\x88\xecw\xe5\x1c\x93\x19\x86\x86\ +\x14\xfdH\x5c\xab>\xb5\xa7\x19\x14\x1el[\xf5en\ +8\x8cD\xa8,\xfb\xc1\xf6\xecZ\xcc\x5c\x1d\x07g\xc6\ +C\xf5%R\xa4\xd8\xb0!\xf91)O\xc5\xe0\xbc:\ +\x10\x03\xd8*m\x99^\x14\xd6\xbe\xb2RMDX:\ +'\xbe\xdaT\x14\xb6\x91\xb6\x0e+d\x9a`\xf8\xd4\xe8\ +\xf5v\xa5)\xab\xd2\xc4\xca\x03\x0c\xdb\xe94\xca\xe0\xc9\ +\xcc\xd3\x08\x12\x14\xfa\xf2ai4;\xe1\xbbr\xf4\xf7\ +\x0c\xbc\xe3\xabyO\xa3\x0dh\xa4nA\xd5\xe3I+\ +gV0]\xf3\xb5\xd1\x07y\xed\x8e\x10\xc4t\xad\xcc\ +@\x93\xc8M+G\x86\xbe\xc8\xc1\x8e\xe4_\x95\x19t\ +\x86]\xcd\x0a\x01\x97\x89\x1bE\xd0\xd1\xf4\x9d\x86\x00x\ +\x0d\xc3\xf7\xceY\xb71\x902\x7f\xd9=\xb6\x13!_\ +P_U\xe0e\x82\x8b\xa8\x9b\x97\xean\x88\xfb7\xf9\ +\x01\xae\xd4@+\xd4\x0b}m\xb5j\xcfC2\x09\x13\ +\x1d`\x12?ODV\x84\x86d\x16\x22\xac\xa8\x90)\ +\xd1{\x95<J\x1e\x9f\xc0\x97\xe1>\x97\x09~45\ +\xd4>\xe8\xb2\xb5\xc1\xb8\xda<= ){\xb1\xa2\x02\ +\x7f\xafE\xbc\x05CE\xb1\xf0\xf3\x08\xaf1\x8f\x9f\xe7\ +\xd1\xff\x00N\xd3\xe4.x\x8c\xa5\xbc\xd8\x1dC\x84\xb1\ +\xa8\xd7\x8e\x96\xbf\x98\xdb\xf0_T\xc5\x07?\x0b\x87\xe2\ +\x0e1\x95\xc6\x92\xb46g\x9e\x13>\xe8\xab\xa3!\xd0\ +\x97\x84-B4\xc3'\xa5so*\xa9Y\xc8\xd5\xff\ +\x9b-0\xa8\x8f\x9eb\xa24\xdf\x0c\x83~\x0d[\xce\ +\x9c,foHm\xad\xad\xf5\x17o|\x1ar\ +" + +qt_resource_name = b"\ +\x00\x06\ +\x07\xe0Kg\ +\x00w\ +\x00i\x00n\x00d\x00o\x00w\ +\x00\x0e\ +\x0ei\x17\x5c\ +\x00A\ +\x00l\x00l\x00S\x00c\x00r\x00e\x00e\x00n\x00s\x00.\x00q\x00m\x00l\ +\x00\x0a\ +\x0bi\x98\xbc\ +\x00w\ +\x00i\x00n\x00d\x00o\x00w\x00.\x00q\x00m\x00l\ +\x00\x0a\ +\x08\x90\x1a|\ +\x00S\ +\x00p\x00l\x00a\x00s\x00h\x00.\x00q\x00m\x00l\ +\x00\x11\ +\x02YG\x1c\ +\x00C\ +\x00u\x00r\x00r\x00e\x00n\x00t\x00S\x00c\x00r\x00e\x00e\x00n\x00.\x00q\x00m\x00l\ +\ +" + +qt_resource_struct = b"\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00\x00\x00\x02\x00\x00\x00\x04\x00\x00\x00\x02\ +\x00\x00\x00\x00\x00\x00\x00\x00\ +\x00\x00\x00h\x00\x01\x00\x00\x00\x01\x00\x00\x0d|\ +\x00\x00\x01\x82Y\xad^\x0f\ +\x00\x00\x00N\x00\x00\x00\x00\x00\x01\x00\x00\x09~\ +\x00\x00\x01\x82Y\xad^\x0f\ +\x00\x00\x004\x00\x01\x00\x00\x00\x01\x00\x00\x04\xec\ +\x00\x00\x01\x82Y\xad^\x0f\ +\x00\x00\x00\x12\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\ +\x00\x00\x01\x82Y\xad^\x0f\ +" + +def qInitResources(): + QtCore.qRegisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data) + +def qCleanupResources(): + QtCore.qUnregisterResourceData(0x03, qt_resource_struct, qt_resource_name, qt_resource_data) + +qInitResources() |