summaryrefslogtreecommitdiff
path: root/examples/quick
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@theqtcompany.com>2015-01-16 13:47:50 +0100
committerJ-P Nurmi <jpnurmi@theqtcompany.com>2015-01-16 13:48:15 +0100
commit7497dc48e674ee155aeebf0986be5a929ce15877 (patch)
tree87f575b7ce612b7130b91fd4c9b4e3dc437ff612 /examples/quick
parent46d983e08cdece92a62833dc74f37e2f11a66324 (diff)
parent5abfd7c00bc7ebfec2f059adc9bc22eb989ae10d (diff)
downloadqtquickcontrols-7497dc48e674ee155aeebf0986be5a929ce15877.tar.gz
Merge remote-tracking branch 'origin/5.4' into dev
Conflicts: .qmake.conf tests/auto/controls/data/tst_stackview.qml Change-Id: I54b55d51452e812315f97bcdfd1a8e361a427f56
Diffstat (limited to 'examples/quick')
-rw-r--r--examples/quick/controls/controls.pro1
-rw-r--r--examples/quick/controls/gallery/content/Controls.qml280
-rw-r--r--examples/quick/controls/gallery/content/Styles.qml382
-rw-r--r--examples/quick/controls/gallery/gallery.pro25
-rw-r--r--examples/quick/controls/gallery/gallery.qmlproject16
-rw-r--r--examples/quick/controls/gallery/gallery.qrc12
-rw-r--r--examples/quick/controls/gallery/images/bubble.pngbin214 -> 0 bytes
-rw-r--r--examples/quick/controls/gallery/images/button-pressed.pngbin3094 -> 0 bytes
-rw-r--r--examples/quick/controls/gallery/images/button.pngbin3164 -> 0 bytes
-rw-r--r--examples/quick/controls/gallery/images/document-open.pngbin1550 -> 0 bytes
-rw-r--r--examples/quick/controls/gallery/images/document-open@2x.pngbin3355 -> 0 bytes
-rw-r--r--examples/quick/controls/gallery/images/document-save-as.pngbin1837 -> 0 bytes
-rw-r--r--examples/quick/controls/gallery/images/document-save-as@2x.pngbin4500 -> 0 bytes
-rw-r--r--examples/quick/controls/gallery/images/folder_new.pngbin1199 -> 0 bytes
-rw-r--r--examples/quick/controls/gallery/images/go-next.pngbin1219 -> 0 bytes
-rw-r--r--examples/quick/controls/gallery/images/go-previous.pngbin1200 -> 0 bytes
-rw-r--r--examples/quick/controls/gallery/images/preferences-system.pngbin2129 -> 0 bytes
-rw-r--r--examples/quick/controls/gallery/images/process-stop.pngbin1927 -> 0 bytes
-rw-r--r--examples/quick/controls/gallery/images/progress-background.pngbin456 -> 0 bytes
-rw-r--r--examples/quick/controls/gallery/images/progress-fill.pngbin507 -> 0 bytes
-rw-r--r--examples/quick/controls/gallery/images/slider-handle.pngbin3523 -> 0 bytes
-rw-r--r--examples/quick/controls/gallery/images/tab.pngbin9877 -> 0 bytes
-rw-r--r--examples/quick/controls/gallery/images/tab_selected.pngbin10184 -> 0 bytes
-rw-r--r--examples/quick/controls/gallery/images/textfield.pngbin3023 -> 0 bytes
-rw-r--r--examples/quick/controls/gallery/images/toplevel_window.pngbin3690 -> 0 bytes
-rw-r--r--examples/quick/controls/gallery/images/view-refresh.pngbin2024 -> 0 bytes
-rw-r--r--examples/quick/controls/gallery/images/window-new@2x.pngbin1900 -> 0 bytes
-rw-r--r--examples/quick/controls/gallery/main.cpp (renamed from examples/quick/controls/gallery/src/main.cpp)3
-rw-r--r--examples/quick/controls/gallery/main.qml84
-rw-r--r--examples/quick/controls/gallery/qml/+android/UI.js (renamed from examples/quick/controls/splitview/src/main.cpp)14
-rw-r--r--examples/quick/controls/gallery/qml/+ios/UI.js (renamed from examples/quick/controls/gallery/content/AboutDialog.qml)14
-rw-r--r--examples/quick/controls/gallery/qml/+osx/UI.js (renamed from examples/quick/controls/gallery/content/ImageViewer.qml)24
-rw-r--r--examples/quick/controls/gallery/qml/ButtonPage.qml128
-rw-r--r--examples/quick/controls/gallery/qml/InputPage.qml114
-rw-r--r--examples/quick/controls/gallery/qml/ProgressPage.qml (renamed from examples/quick/controls/splitview/main.qml)66
-rw-r--r--examples/quick/controls/gallery/qml/UI.js45
-rw-r--r--examples/quick/controls/gallery/resources.qrc24
-rw-r--r--examples/quick/controls/gallery/src/src.pri2
-rw-r--r--examples/quick/controls/shared/shared.pri3
-rw-r--r--examples/quick/controls/splitview/splitview.pro12
-rw-r--r--examples/quick/controls/splitview/splitview.qmlproject16
-rw-r--r--examples/quick/controls/splitview/src/src.pri2
-rw-r--r--examples/quick/controls/tableview/images/header.pngbin356 -> 0 bytes
-rw-r--r--examples/quick/controls/tableview/images/selectedrow.pngbin303 -> 0 bytes
-rw-r--r--examples/quick/controls/tableview/images/sort-up.pngbin205 -> 0 bytes
-rw-r--r--examples/quick/controls/tableview/main.qml469
-rw-r--r--examples/quick/controls/tableview/resources.qrc8
-rw-r--r--examples/quick/controls/tableview/src/main.cpp14
-rw-r--r--examples/quick/controls/tableview/src/sortfilterproxymodel.cpp189
-rw-r--r--examples/quick/controls/tableview/src/sortfilterproxymodel.h (renamed from examples/quick/controls/gallery/content/ModelView.qml)121
-rw-r--r--examples/quick/controls/tableview/src/src.pri8
-rw-r--r--examples/quick/controls/tableview/tableview.pro11
-rw-r--r--examples/quick/controls/tableview/tableview.qmlproject16
-rw-r--r--examples/quick/controls/tableview/tableview.qrc (renamed from examples/quick/controls/splitview/resources.qrc)0
-rw-r--r--examples/quick/dialogs/systemdialogs/ColorDialogs.qml5
-rw-r--r--examples/quick/dialogs/systemdialogs/CustomDialogs.qml77
-rw-r--r--examples/quick/dialogs/systemdialogs/FileDialogs.qml143
-rw-r--r--examples/quick/dialogs/systemdialogs/FontDialogs.qml10
-rw-r--r--examples/quick/dialogs/systemdialogs/MessageDialogs.qml369
-rw-r--r--examples/quick/dialogs/systemdialogs/systemdialogs.qml10
60 files changed, 1136 insertions, 1581 deletions
diff --git a/examples/quick/controls/controls.pro b/examples/quick/controls/controls.pro
index 134a25e3..f6696bc5 100644
--- a/examples/quick/controls/controls.pro
+++ b/examples/quick/controls/controls.pro
@@ -2,7 +2,6 @@ TEMPLATE = subdirs
SUBDIRS += \
gallery \
- splitview \
tableview \
touch \
basiclayouts \
diff --git a/examples/quick/controls/gallery/content/Controls.qml b/examples/quick/controls/gallery/content/Controls.qml
deleted file mode 100644
index 54ee99b9..00000000
--- a/examples/quick/controls/gallery/content/Controls.qml
+++ /dev/null
@@ -1,280 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the Qt Quick Controls module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
-** of its contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick 2.2
-import QtQuick.Controls 1.2
-import QtQuick.Layouts 1.1
-import QtQuick.Controls.Styles 1.1
-
-Item {
- id: flickable
- anchors.fill: parent
- enabled: enabledCheck.checked
-
- property int tabPosition: tabPositionGroup.current === r2 ? Qt.BottomEdge : Qt.TopEdge
-
- property string loremIpsum:
- "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor "+
- "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor "+
- "incididunt ut labore et dolore magna aliqua.\n Ut enim ad minim veniam, quis nostrud "+
- "exercitation ullamco laboris nisi ut aliquip ex ea commodo cosnsequat. ";
-
- ListModel {
- id: choices
- ListElement { text: "Banana" }
- ListElement { text: "Orange" }
- ListElement { text: "Apple" }
- ListElement { text: "Coconut" }
- }
-
- RowLayout {
- id: contentRow
- anchors.fill:parent
- anchors.margins: 8
- spacing: 16
- ColumnLayout {
- id: firstColumn
- Layout.minimumWidth: implicitWidth
- Layout.fillWidth: false
- RowLayout {
- id: buttonrow
- Button {
- id: button1
- text: "Button 1"
- tooltip:"This is an interesting tool tip"
- Layout.fillWidth: true
- }
- Button {
- id:button2
- text:"Button 2"
- Layout.fillWidth: true
- menu: Menu {
- MenuItem { text: "This Button" }
- MenuItem { text: "Happens To Have" }
- MenuItem { text: "A Menu Assigned" }
- }
- }
- }
- ComboBox {
- id: combo
- model: choices
- currentIndex: 2
- Layout.fillWidth: true
- }
- ComboBox {
- model: Qt.fontFamilies()
- Layout.fillWidth: true
- currentIndex: 47
- }
- ComboBox {
- id: editableCombo
- editable: true
- model: choices
- Layout.fillWidth: true
- currentIndex: 2
- onAccepted: {
- if (editableCombo.find(currentText) === -1) {
- choices.append({text: editText})
- currentIndex = editableCombo.find(editText)
- }
- }
- }
- RowLayout {
- SpinBox {
- id: t1
- Layout.fillWidth: true
- minimumValue: -50
- value: -20
- }
- SpinBox {
- id: t2
- Layout.fillWidth: true
- }
- }
- TextField {
- id: t3
- placeholderText: "This is a placeholder for a TextField"
- Layout.fillWidth: true
- }
- ProgressBar {
- // normalize value [0.0 .. 1.0]
- value: (slider.value - slider.minimumValue) / (slider.maximumValue - slider.minimumValue)
- Layout.fillWidth: true
- }
- ProgressBar {
- indeterminate: true
- Layout.fillWidth: true
- }
- Slider {
- id: slider
- value: 0.5
- Layout.fillWidth: true
- tickmarksEnabled: tickmarkCheck.checked
- stepSize: tickmarksEnabled ? 0.1 : 0
- }
- MouseArea {
- id: busyCheck
- Layout.fillWidth: true
- Layout.fillHeight: true
- hoverEnabled:true
- Layout.preferredHeight: busyIndicator.height
- BusyIndicator {
- id: busyIndicator
- running: busyCheck.containsMouse
- anchors.horizontalCenter: parent.horizontalCenter
- }
- }
- }
- ColumnLayout {
- id: rightcol
- Layout.fillWidth: true
- anchors {
- top: parent.top
- bottom: parent.bottom
- }
-
- GroupBox {
- id: group1
- title: "CheckBox"
- Layout.fillWidth: true
- RowLayout {
- Layout.fillWidth: true
- CheckBox {
- id: frameCheckbox
- text: "Text frame"
- checked: true
- Layout.minimumWidth: 100
- }
- CheckBox {
- id: tickmarkCheck
- text: "Tickmarks"
- checked: false
- Layout.minimumWidth: 100
- }
- CheckBox {
- id: wrapCheck
- text: "Word wrap"
- checked: true
- Layout.minimumWidth: 100
- }
- }
- }
- GroupBox {
- id: group2
- title:"Tab Position"
- Layout.fillWidth: true
- RowLayout {
- ExclusiveGroup { id: tabPositionGroup }
- RadioButton {
- id: r1
- text: "Top"
- checked: true
- exclusiveGroup: tabPositionGroup
- Layout.minimumWidth: 100
- }
- RadioButton {
- id: r2
- text: "Bottom"
- exclusiveGroup: tabPositionGroup
- Layout.minimumWidth: 100
- }
- }
- }
-
- TextArea {
- id: area
- frameVisible: frameCheckbox.checked
- text: loremIpsum + loremIpsum
- textFormat: Qt.RichText
- wrapMode: wrapCheck.checked ? TextEdit.WordWrap : TextEdit.NoWrap
- Layout.fillWidth: true
- Layout.fillHeight: true
- menu: editmenu
- }
- }
- }
-
- ExclusiveGroup {
- id: textFormatGroup
-
- Action {
- id: a1
- text: "Align &Left"
- checkable: true
- Component.onCompleted: checked = true
- }
-
- Action {
- id: a2
- text: "&Center"
- checkable: true
- }
-
- Action {
- id: a3
- text: "Align &Right"
- checkable: true
- }
- }
-
- Component {
- id: editmenu
- Menu {
- MenuItem { action: cutAction }
- MenuItem { action: copyAction }
- MenuItem { action: pasteAction }
- MenuSeparator {}
- Menu {
- title: "Text &Format"
- MenuItem { action: a1 }
- MenuItem { action: a2 }
- MenuItem { action: a3 }
- MenuSeparator { }
- MenuItem { text: "Allow &Hyphenation"; checkable: true }
- }
- Menu {
- title: "Font &Style"
- MenuItem { text: "&Bold"; checkable: true }
- MenuItem { text: "&Italic"; checkable: true }
- MenuItem { text: "&Underline"; checkable: true }
- }
- }
- }
-}
diff --git a/examples/quick/controls/gallery/content/Styles.qml b/examples/quick/controls/gallery/content/Styles.qml
deleted file mode 100644
index 03be93fd..00000000
--- a/examples/quick/controls/gallery/content/Styles.qml
+++ /dev/null
@@ -1,382 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the Qt Quick Controls module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-** * Redistributions of source code must retain the above copyright
-** notice, this list of conditions and the following disclaimer.
-** * Redistributions in binary form must reproduce the above copyright
-** notice, this list of conditions and the following disclaimer in
-** the documentation and/or other materials provided with the
-** distribution.
-** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
-** of its contributors may be used to endorse or promote products derived
-** from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick 2.2
-import QtQuick.Controls 1.2
-import QtQuick.Controls.Styles 1.1
-import QtQuick.Particles 2.0
-import QtQuick.Layouts 1.0
-
-Item {
- id: root
- width: 300
- height: 200
-
- property int columnWidth: 120
- GridLayout {
- rowSpacing: 12
- columnSpacing: 30
- anchors.top: parent.top
- anchors.horizontalCenter: parent.horizontalCenter
- anchors.margins: 30
-
- Button {
- text: "Push me"
- style: ButtonStyle { }
- implicitWidth: columnWidth
- }
- Button {
- text: "Push me"
- style: ButtonStyle {
- background: BorderImage {
- source: control.pressed ? "../images/button-pressed.png" : "../images/button.png"
- border.left: 4 ; border.right: 4 ; border.top: 4 ; border.bottom: 4
- }
- }
- implicitWidth: columnWidth
- }
- Button {
- text: "Push me"
- style: buttonStyle
- implicitWidth: columnWidth
- }
-
- TextField {
- Layout.row: 1
- style: TextFieldStyle { }
- implicitWidth: columnWidth
- }
- TextField {
- style: TextFieldStyle {
- background: BorderImage {
- source: "../images/textfield.png"
- border.left: 4 ; border.right: 4 ; border.top: 4 ; border.bottom: 4
- }
- }
- implicitWidth: columnWidth
- }
- TextField {
- style: textfieldStyle
- implicitWidth: columnWidth
- }
-
- Slider {
- id: slider1
- Layout.row: 2
- value: 0.5
- implicitWidth: columnWidth
- style: SliderStyle { }
- }
- Slider {
- id: slider2
- value: 0.5
- implicitWidth: columnWidth
- style: SliderStyle {
- groove: BorderImage {
- height: 6
- border.top: 1
- border.bottom: 1
- source: "../images/progress-background.png"
- border.left: 6
- border.right: 6
- BorderImage {
- anchors.verticalCenter: parent.verticalCenter
- source: "../images/progress-fill.png"
- border.left: 5 ; border.top: 1
- border.right: 5 ; border.bottom: 1
- width: styleData.handlePosition
- height: parent.height
- }
- }
- handle: Item {
- width: 13
- height: 13
- Image {
- anchors.centerIn: parent
- source: "../images/slider-handle.png"
- }
- }
- }
- }
- Slider {
- id: slider3
- value: 0.5
- implicitWidth: columnWidth
- style: sliderStyle
- }
-
- ProgressBar {
- Layout.row: 3
- value: slider1.value
- implicitWidth: columnWidth
- style: ProgressBarStyle{ }
- }
- ProgressBar {
- value: slider2.value
- implicitWidth: columnWidth
- style: progressBarStyle
- }
- ProgressBar {
- value: slider3.value
- implicitWidth: columnWidth
- style: progressBarStyle2
- }
-
- CheckBox {
- text: "CheckBox"
- style: CheckBoxStyle{}
- Layout.row: 4
- implicitWidth: columnWidth
- }
- RadioButton {
- style: RadioButtonStyle{}
- text: "RadioButton"
- implicitWidth: columnWidth
- }
-
- ComboBox {
- model: ["Paris", "Oslo", "New York"]
- style: ComboBoxStyle{}
- implicitWidth: columnWidth
- }
-
- TabView {
- Layout.row: 5
- Layout.columnSpan: 3
- Layout.fillWidth: true
- implicitHeight: 30
- Tab { title: "One" ; Item {}}
- Tab { title: "Two" ; Item {}}
- Tab { title: "Three" ; Item {}}
- Tab { title: "Four" ; Item {}}
- style: TabViewStyle {}
- }
-
- TabView {
- Layout.row: 6
- Layout.columnSpan: 3
- Layout.fillWidth: true
- implicitHeight: 30
- Tab { title: "One" ; Item {}}
- Tab { title: "Two" ; Item {}}
- Tab { title: "Three" ; Item {}}
- Tab { title: "Four" ; Item {}}
- style: tabViewStyle
- }
- }
-
- // Style delegates:
-
- property Component buttonStyle: ButtonStyle {
- background: Rectangle {
- implicitHeight: 22
- implicitWidth: columnWidth
- color: control.pressed ? "darkGray" : control.activeFocus ? "#cdd" : "#ccc"
- antialiasing: true
- border.color: "gray"
- radius: height/2
- Rectangle {
- anchors.fill: parent
- anchors.margins: 1
- color: "transparent"
- antialiasing: true
- visible: !control.pressed
- border.color: "#aaffffff"
- radius: height/2
- }
- }
- }
-
- property Component textfieldStyle: TextFieldStyle {
- background: Rectangle {
- implicitWidth: columnWidth
- implicitHeight: 22
- color: "#f0f0f0"
- antialiasing: true
- border.color: "gray"
- radius: height/2
- Rectangle {
- anchors.fill: parent
- anchors.margins: 1
- color: "transparent"
- antialiasing: true
- border.color: "#aaffffff"
- radius: height/2
- }
- }
- }
-
- property Component sliderStyle: SliderStyle {
- handle: Rectangle {
- width: 18
- height: 18
- color: control.pressed ? "darkGray" : "lightGray"
- border.color: "gray"
- antialiasing: true
- radius: height/2
- Rectangle {
- anchors.fill: parent
- anchors.margins: 1
- color: "transparent"
- antialiasing: true
- border.color: "#eee"
- radius: height/2
- }
- }
-
- groove: Rectangle {
- height: 8
- implicitWidth: columnWidth
- implicitHeight: 22
-
- antialiasing: true
- color: "#ccc"
- border.color: "#777"
- radius: height/2
- Rectangle {
- anchors.fill: parent
- anchors.margins: 1
- color: "transparent"
- antialiasing: true
- border.color: "#66ffffff"
- radius: height/2
- }
- }
- }
-
- property Component progressBarStyle: ProgressBarStyle {
- background: BorderImage {
- source: "../images/progress-background.png"
- border.left: 2 ; border.right: 2 ; border.top: 2 ; border.bottom: 2
- }
- progress: Item {
- clip: true
- BorderImage {
- anchors.fill: parent
- anchors.rightMargin: (control.value < control.maximumValue) ? -4 : 0
- source: "../images/progress-fill.png"
- border.left: 10 ; border.right: 10
- Rectangle {
- width: 1
- color: "#a70"
- opacity: 0.8
- anchors.top: parent.top
- anchors.bottom: parent.bottom
- anchors.bottomMargin: 1
- anchors.right: parent.right
- visible: control.value < control.maximumValue
- anchors.rightMargin: -parent.anchors.rightMargin
- }
- }
- ParticleSystem{ id: bubbles; running: visible }
- ImageParticle{
- id: fireball
- system: bubbles
- source: "../images/bubble.png"
- opacity: 0.7
- }
- Emitter{
- system: bubbles
- anchors.bottom: parent.bottom
- anchors.margins: 4
- anchors.bottomMargin: -4
- anchors.left: parent.left
- anchors.right: parent.right
- size: 4
- sizeVariation: 4
- acceleration: PointDirection{ y: -6; xVariation: 3 }
- emitRate: 6 * control.value
- lifeSpan: 3000
- }
- }
- }
-
- property Component progressBarStyle2: ProgressBarStyle {
- background: Rectangle {
- implicitWidth: columnWidth
- implicitHeight: 24
- color: "#f0f0f0"
- border.color: "gray"
- }
- progress: Rectangle {
- color: "#ccc"
- border.color: "gray"
- Rectangle {
- color: "transparent"
- border.color: "#44ffffff"
- anchors.fill: parent
- anchors.margins: 1
- }
- }
- }
-
- property Component tabViewStyle: TabViewStyle {
- tabOverlap: 16
- frameOverlap: 4
- tabsMovable: true
-
- frame: Rectangle {
- gradient: Gradient{
- GradientStop { color: "#e5e5e5" ; position: 0 }
- GradientStop { color: "#e0e0e0" ; position: 1 }
- }
- border.color: "#898989"
- Rectangle { anchors.fill: parent ; anchors.margins: 1 ; border.color: "white" ; color: "transparent" }
- }
- tab: Item {
- property int totalOverlap: tabOverlap * (control.count - 1)
- implicitWidth: Math.min ((styleData.availableWidth + totalOverlap)/control.count - 4, image.sourceSize.width)
- implicitHeight: image.sourceSize.height
- BorderImage {
- id: image
- anchors.fill: parent
- source: styleData.selected ? "../images/tab_selected.png" : "../images/tab.png"
- border.left: 30
- smooth: false
- border.right: 30
- }
- Text {
- text: styleData.title
- anchors.centerIn: parent
- }
- }
- leftCorner: Item { implicitWidth: 12 }
- }
-}
diff --git a/examples/quick/controls/gallery/gallery.pro b/examples/quick/controls/gallery/gallery.pro
index 992dd891..f13f4213 100644
--- a/examples/quick/controls/gallery/gallery.pro
+++ b/examples/quick/controls/gallery/gallery.pro
@@ -1,17 +1,20 @@
-QT += qml quick
+TEMPLATE = app
TARGET = gallery
-!no_desktop: QT += widgets
-include(src/src.pri)
-include(../shared/shared.pri)
+SOURCES += \
+ main.cpp
+
+RESOURCES += \
+ gallery.qrc
OTHER_FILES += \
main.qml \
- content/AboutDialog.qml \
- content/Controls.qml \
- content/ImageViewer.qml \
- content/ModelView.qml \
- content/Styles.qml
+ qml/ButtonPage.qml \
+ qml/InputPage.qml \
+ qml/ProgressPage.qml \
+ qml/UI.js \
+ qml/+android/UI.js \
+ qml/+ios/UI.js \
+ qml/+osx/UI.js
-RESOURCES += \
- resources.qrc
+include(../shared/shared.pri)
diff --git a/examples/quick/controls/gallery/gallery.qmlproject b/examples/quick/controls/gallery/gallery.qmlproject
deleted file mode 100644
index e5a8bf02..00000000
--- a/examples/quick/controls/gallery/gallery.qmlproject
+++ /dev/null
@@ -1,16 +0,0 @@
-import QmlProject 1.1
-
-Project {
- mainFile: "main.qml"
-
- /* Include .qml, .js, and image files from current directory and subdirectories */
- QmlFiles {
- directory: "."
- }
- JavaScriptFiles {
- directory: "."
- }
- ImageFiles {
- directory: "."
- }
-}
diff --git a/examples/quick/controls/gallery/gallery.qrc b/examples/quick/controls/gallery/gallery.qrc
new file mode 100644
index 00000000..873c8b5c
--- /dev/null
+++ b/examples/quick/controls/gallery/gallery.qrc
@@ -0,0 +1,12 @@
+<RCC>
+ <qresource prefix="/">
+ <file>main.qml</file>
+ <file>qml/ButtonPage.qml</file>
+ <file>qml/InputPage.qml</file>
+ <file>qml/ProgressPage.qml</file>
+ <file>qml/UI.js</file>
+ <file>qml/+android/UI.js</file>
+ <file>qml/+ios/UI.js</file>
+ <file>qml/+osx/UI.js</file>
+ </qresource>
+</RCC>
diff --git a/examples/quick/controls/gallery/images/bubble.png b/examples/quick/controls/gallery/images/bubble.png
deleted file mode 100644
index 62aa1efe..00000000
--- a/examples/quick/controls/gallery/images/bubble.png
+++ /dev/null
Binary files differ
diff --git a/examples/quick/controls/gallery/images/button-pressed.png b/examples/quick/controls/gallery/images/button-pressed.png
deleted file mode 100644
index d64cdaa7..00000000
--- a/examples/quick/controls/gallery/images/button-pressed.png
+++ /dev/null
Binary files differ
diff --git a/examples/quick/controls/gallery/images/button.png b/examples/quick/controls/gallery/images/button.png
deleted file mode 100644
index 8ab41cc8..00000000
--- a/examples/quick/controls/gallery/images/button.png
+++ /dev/null
Binary files differ
diff --git a/examples/quick/controls/gallery/images/document-open.png b/examples/quick/controls/gallery/images/document-open.png
deleted file mode 100644
index f35f2583..00000000
--- a/examples/quick/controls/gallery/images/document-open.png
+++ /dev/null
Binary files differ
diff --git a/examples/quick/controls/gallery/images/document-open@2x.png b/examples/quick/controls/gallery/images/document-open@2x.png
deleted file mode 100644
index 9fdbb665..00000000
--- a/examples/quick/controls/gallery/images/document-open@2x.png
+++ /dev/null
Binary files differ
diff --git a/examples/quick/controls/gallery/images/document-save-as.png b/examples/quick/controls/gallery/images/document-save-as.png
deleted file mode 100644
index 5c9f6b34..00000000
--- a/examples/quick/controls/gallery/images/document-save-as.png
+++ /dev/null
Binary files differ
diff --git a/examples/quick/controls/gallery/images/document-save-as@2x.png b/examples/quick/controls/gallery/images/document-save-as@2x.png
deleted file mode 100644
index a15e34c9..00000000
--- a/examples/quick/controls/gallery/images/document-save-as@2x.png
+++ /dev/null
Binary files differ
diff --git a/examples/quick/controls/gallery/images/folder_new.png b/examples/quick/controls/gallery/images/folder_new.png
deleted file mode 100644
index 8d8bb9bd..00000000
--- a/examples/quick/controls/gallery/images/folder_new.png
+++ /dev/null
Binary files differ
diff --git a/examples/quick/controls/gallery/images/go-next.png b/examples/quick/controls/gallery/images/go-next.png
deleted file mode 100644
index a68e2db7..00000000
--- a/examples/quick/controls/gallery/images/go-next.png
+++ /dev/null
Binary files differ
diff --git a/examples/quick/controls/gallery/images/go-previous.png b/examples/quick/controls/gallery/images/go-previous.png
deleted file mode 100644
index c37bc041..00000000
--- a/examples/quick/controls/gallery/images/go-previous.png
+++ /dev/null
Binary files differ
diff --git a/examples/quick/controls/gallery/images/preferences-system.png b/examples/quick/controls/gallery/images/preferences-system.png
deleted file mode 100644
index 6e52db7c..00000000
--- a/examples/quick/controls/gallery/images/preferences-system.png
+++ /dev/null
Binary files differ
diff --git a/examples/quick/controls/gallery/images/process-stop.png b/examples/quick/controls/gallery/images/process-stop.png
deleted file mode 100644
index e7a8d172..00000000
--- a/examples/quick/controls/gallery/images/process-stop.png
+++ /dev/null
Binary files differ
diff --git a/examples/quick/controls/gallery/images/progress-background.png b/examples/quick/controls/gallery/images/progress-background.png
deleted file mode 100644
index 55a069df..00000000
--- a/examples/quick/controls/gallery/images/progress-background.png
+++ /dev/null
Binary files differ
diff --git a/examples/quick/controls/gallery/images/progress-fill.png b/examples/quick/controls/gallery/images/progress-fill.png
deleted file mode 100644
index b588c958..00000000
--- a/examples/quick/controls/gallery/images/progress-fill.png
+++ /dev/null
Binary files differ
diff --git a/examples/quick/controls/gallery/images/slider-handle.png b/examples/quick/controls/gallery/images/slider-handle.png
deleted file mode 100644
index ac4d4a0d..00000000
--- a/examples/quick/controls/gallery/images/slider-handle.png
+++ /dev/null
Binary files differ
diff --git a/examples/quick/controls/gallery/images/tab.png b/examples/quick/controls/gallery/images/tab.png
deleted file mode 100644
index 74fefab7..00000000
--- a/examples/quick/controls/gallery/images/tab.png
+++ /dev/null
Binary files differ
diff --git a/examples/quick/controls/gallery/images/tab_selected.png b/examples/quick/controls/gallery/images/tab_selected.png
deleted file mode 100644
index 665400cc..00000000
--- a/examples/quick/controls/gallery/images/tab_selected.png
+++ /dev/null
Binary files differ
diff --git a/examples/quick/controls/gallery/images/textfield.png b/examples/quick/controls/gallery/images/textfield.png
deleted file mode 100644
index 1d4a38ab..00000000
--- a/examples/quick/controls/gallery/images/textfield.png
+++ /dev/null
Binary files differ
diff --git a/examples/quick/controls/gallery/images/toplevel_window.png b/examples/quick/controls/gallery/images/toplevel_window.png
deleted file mode 100644
index 4dc6a8ce..00000000
--- a/examples/quick/controls/gallery/images/toplevel_window.png
+++ /dev/null
Binary files differ
diff --git a/examples/quick/controls/gallery/images/view-refresh.png b/examples/quick/controls/gallery/images/view-refresh.png
deleted file mode 100644
index 606ea9eb..00000000
--- a/examples/quick/controls/gallery/images/view-refresh.png
+++ /dev/null
Binary files differ
diff --git a/examples/quick/controls/gallery/images/window-new@2x.png b/examples/quick/controls/gallery/images/window-new@2x.png
deleted file mode 100644
index 36503018..00000000
--- a/examples/quick/controls/gallery/images/window-new@2x.png
+++ /dev/null
Binary files differ
diff --git a/examples/quick/controls/gallery/src/main.cpp b/examples/quick/controls/gallery/main.cpp
index 8971aa15..c456e1cb 100644
--- a/examples/quick/controls/gallery/src/main.cpp
+++ b/examples/quick/controls/gallery/main.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the Qt Quick Controls module of the Qt Toolkit.
@@ -41,7 +41,6 @@
#include "qtquickcontrolsapplication.h"
#include <QtQml/QQmlApplicationEngine>
#include <QtGui/QSurfaceFormat>
-#include <QtQuick/QQuickWindow>
int main(int argc, char *argv[])
{
diff --git a/examples/quick/controls/gallery/main.qml b/examples/quick/controls/gallery/main.qml
index 4d013c8b..2de810d8 100644
--- a/examples/quick/controls/gallery/main.qml
+++ b/examples/quick/controls/gallery/main.qml
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the Qt Quick Controls module of the Qt Toolkit.
@@ -39,37 +39,22 @@
****************************************************************************/
import QtQuick 2.2
+import QtQuick.Layouts 1.1
+import QtQuick.Dialogs 1.1
import QtQuick.Controls 1.2
-import QtQuick.Layouts 1.0
-import QtQuick.Dialogs 1.0
-import "content"
+import "qml/UI.js" as UI
+import "qml"
ApplicationWindow {
visible: true
title: "Qt Quick Controls Gallery"
- width: 640
- height: 420
- minimumHeight: 400
- minimumWidth: 600
-
- ImageViewer { id: imageViewer }
-
- FileDialog {
- id: fileDialog
- nameFilters: [ "Image files (*.png *.jpg)" ]
- onAccepted: imageViewer.open(fileUrl)
- }
-
- AboutDialog { id: aboutDialog }
-
- Action {
- id: openAction
- text: "&Open"
- shortcut: StandardKey.Open
- iconSource: "images/document-open.png"
- onTriggered: fileDialog.open()
- tooltip: "Open an image"
+ MessageDialog {
+ id: aboutDialog
+ icon: StandardIcon.Information
+ title: "About"
+ text: "Qt Quick Controls Gallery"
+ informativeText: "This example demonstrates most of the available Qt Quick Controls."
}
Action {
@@ -100,20 +85,15 @@ ApplicationWindow {
}
toolBar: ToolBar {
- id: toolbar
RowLayout {
- id: toolbarLayout
- spacing: 0
anchors.fill: parent
- ToolButton { action: openAction }
- ToolButton {
- Accessible.name: "Save as"
- iconSource: "images/document-save-as.png"
- tooltip: "(Pretend to) Save as..."
+ anchors.margins: spacing
+ Label {
+ text: UI.label
}
Item { Layout.fillWidth: true }
CheckBox {
- id: enabledCheck
+ id: enabler
text: "Enabled"
checked: true
}
@@ -123,7 +103,6 @@ ApplicationWindow {
menuBar: MenuBar {
Menu {
title: "&File"
- MenuItem { action: openAction }
MenuItem {
text: "E&xit"
shortcut: StandardKey.Quit
@@ -132,6 +111,7 @@ ApplicationWindow {
}
Menu {
title: "&Edit"
+ visible: tabView.currentIndex == 2
MenuItem { action: cutAction }
MenuItem { action: copyAction }
MenuItem { action: pasteAction }
@@ -146,24 +126,34 @@ ApplicationWindow {
}
TabView {
- id:frame
- enabled: enabledCheck.checked
- tabPosition: controlPage.item ? controlPage.item.tabPosition : Qt.TopEdge
+ id: tabView
+
anchors.fill: parent
- anchors.margins: Qt.platform.os === "osx" ? 12 : 2
+ anchors.margins: UI.margin
+ tabPosition: UI.tabPosition
+
+ Layout.minimumWidth: 360
+ Layout.minimumHeight: 360
+ Layout.preferredWidth: 480
+ Layout.preferredHeight: 640
Tab {
- id: controlPage
- title: "Controls"
- Controls { }
+ title: "Buttons"
+ ButtonPage {
+ enabled: enabler.checked
+ }
}
Tab {
- title: "Itemviews"
- ModelView { }
+ title: "Progress"
+ ProgressPage {
+ enabled: enabler.checked
+ }
}
Tab {
- title: "Styles"
- Styles { anchors.fill: parent }
+ title: "Input"
+ InputPage {
+ enabled: enabler.checked
+ }
}
}
}
diff --git a/examples/quick/controls/splitview/src/main.cpp b/examples/quick/controls/gallery/qml/+android/UI.js
index a757f485..6050d16e 100644
--- a/examples/quick/controls/splitview/src/main.cpp
+++ b/examples/quick/controls/gallery/qml/+android/UI.js
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the Qt Quick Controls module of the Qt Toolkit.
@@ -38,12 +38,8 @@
**
****************************************************************************/
-#include "qtquickcontrolsapplication.h"
-#include <QtQml/QQmlApplicationEngine>
+.pragma library
-int main(int argc, char *argv[])
-{
- QtQuickControlsApplication app(argc, argv);
- QQmlApplicationEngine engine(QUrl("qrc:/main.qml"));
- return app.exec();
-}
+var margin = 0
+var tabPosition = Qt.BottomEdge
+var label = "Gallery"
diff --git a/examples/quick/controls/gallery/content/AboutDialog.qml b/examples/quick/controls/gallery/qml/+ios/UI.js
index e4837ff7..6050d16e 100644
--- a/examples/quick/controls/gallery/content/AboutDialog.qml
+++ b/examples/quick/controls/gallery/qml/+ios/UI.js
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the Qt Quick Controls module of the Qt Toolkit.
@@ -38,12 +38,8 @@
**
****************************************************************************/
-import QtQuick 2.2
-import QtQuick.Dialogs 1.1
+.pragma library
-MessageDialog {
- icon: StandardIcon.Information
- text: "QtQuick.Controls gallery example"
- detailedText: "This example demonstrates most of the available Qt Quick Controls."
- title: "About Gallery"
-}
+var margin = 0
+var tabPosition = Qt.BottomEdge
+var label = "Gallery"
diff --git a/examples/quick/controls/gallery/content/ImageViewer.qml b/examples/quick/controls/gallery/qml/+osx/UI.js
index dfac2e00..2f078ea7 100644
--- a/examples/quick/controls/gallery/content/ImageViewer.qml
+++ b/examples/quick/controls/gallery/qml/+osx/UI.js
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the Qt Quick Controls module of the Qt Toolkit.
@@ -38,22 +38,8 @@
**
****************************************************************************/
-import QtQuick 2.2
-import QtQuick.Window 2.1
+.pragma library
-Window {
- id: imageViewer
- minimumWidth: viewerImage.width
- minimumHeight: viewerImage.height
- function open(source) {
- viewerImage.source = source
- width = viewerImage.implicitWidth + 20
- height = viewerImage.implicitHeight + 20
- title = source
- visible = true
- }
- Image {
- id: viewerImage
- anchors.centerIn: parent
- }
-}
+var margin = 12
+var tabPosition = Qt.TopEdge
+var label = ""
diff --git a/examples/quick/controls/gallery/qml/ButtonPage.qml b/examples/quick/controls/gallery/qml/ButtonPage.qml
new file mode 100644
index 00000000..0ed7e2d6
--- /dev/null
+++ b/examples/quick/controls/gallery/qml/ButtonPage.qml
@@ -0,0 +1,128 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt Quick Controls module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.2
+import QtQuick.Layouts 1.1
+import QtQuick.Controls 1.2
+
+ScrollView {
+ id: page
+
+ horizontalScrollBarPolicy: Qt.ScrollBarAlwaysOff
+
+ Item {
+ id: content
+
+ width: Math.max(page.viewport.width, grid.implicitWidth + 2 * grid.rowSpacing)
+ height: Math.max(page.viewport.height, grid.implicitHeight + 2 * grid.columnSpacing)
+
+ GridLayout {
+ id: grid
+
+ anchors.top: parent.top
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.leftMargin: grid.rowSpacing
+ anchors.rightMargin: grid.rowSpacing
+ anchors.topMargin: grid.columnSpacing
+
+ columns: page.width < page.height ? 1 : 2
+
+ GroupBox {
+ title: "Button"
+ Layout.fillWidth: true
+ Layout.columnSpan: grid.columns
+ RowLayout {
+ anchors.fill: parent
+ Button { text: "OK"; isDefault: true }
+ Button { text: "Cancel" }
+ Item { Layout.fillWidth: true }
+ Button {
+ text: "Attach"
+ menu: Menu {
+ MenuItem { text: "Image" }
+ MenuItem { text: "Document" }
+ }
+ }
+ }
+ }
+
+ GroupBox {
+ title: "CheckBox"
+ Layout.fillWidth: true
+ ColumnLayout {
+ anchors.fill: parent
+ CheckBox { text: "E-mail"; checked: true }
+ CheckBox { text: "Calendar"; checked: true }
+ CheckBox { text: "Contacts" }
+ }
+ }
+
+ GroupBox {
+ title: "RadioButton"
+ Layout.fillWidth: true
+ ColumnLayout {
+ anchors.fill: parent
+ ExclusiveGroup { id: radioGroup }
+ RadioButton { text: "Portrait"; exclusiveGroup: radioGroup }
+ RadioButton { text: "Landscape"; exclusiveGroup: radioGroup }
+ RadioButton { text: "Automatic"; exclusiveGroup: radioGroup; checked: true }
+ }
+ }
+
+ GroupBox {
+ title: "Switch"
+ Layout.fillWidth: true
+ Layout.columnSpan: grid.columns
+ ColumnLayout {
+ anchors.fill: parent
+ RowLayout {
+ Label { text: "Wi-Fi"; Layout.fillWidth: true }
+ Switch { checked: true }
+ }
+ RowLayout {
+ Label { text: "Bluetooth"; Layout.fillWidth: true }
+ Switch { checked: false }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/examples/quick/controls/gallery/qml/InputPage.qml b/examples/quick/controls/gallery/qml/InputPage.qml
new file mode 100644
index 00000000..cb1878d0
--- /dev/null
+++ b/examples/quick/controls/gallery/qml/InputPage.qml
@@ -0,0 +1,114 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt Quick Controls module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.2
+import QtQuick.Layouts 1.1
+import QtQuick.Controls 1.2
+
+ScrollView {
+ id: page
+
+ horizontalScrollBarPolicy: Qt.ScrollBarAlwaysOff
+
+ Item {
+ id: content
+
+ width: Math.max(page.viewport.width, column.implicitWidth + 2 * column.spacing)
+ height: Math.max(page.viewport.height, column.implicitHeight + 2 * column.spacing)
+
+ ColumnLayout {
+ id: column
+
+ anchors.top: parent.top
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.margins: column.spacing
+
+ GroupBox {
+ title: "TextField"
+ Layout.fillWidth: true
+ ColumnLayout {
+ anchors.fill: parent
+ TextField { placeholderText: "..."; Layout.fillWidth: true; z: 1 }
+ TextField { placeholderText: "Password"; echoMode: TextInput.Password; Layout.fillWidth: true }
+ }
+ }
+
+ GroupBox {
+ title: "ComboBox"
+ Layout.fillWidth: true
+ ColumnLayout {
+ anchors.fill: parent
+ ComboBox {
+ model: Qt.fontFamilies()
+ Layout.fillWidth: true
+ }
+ ComboBox {
+ editable: true
+ model: ListModel {
+ id: listModel
+ ListElement { text: "Apple" }
+ ListElement { text: "Banana" }
+ ListElement { text: "Coconut" }
+ ListElement { text: "Orange" }
+ }
+ onAccepted: {
+ if (find(currentText) === -1) {
+ listModel.append({text: editText})
+ currentIndex = find(editText)
+ }
+ }
+ Layout.fillWidth: true
+ }
+ }
+ }
+
+ GroupBox {
+ title: "SpinBox"
+ Layout.fillWidth: true
+ ColumnLayout {
+ anchors.fill: parent
+ SpinBox { value: 99; Layout.fillWidth: true; z: 1 }
+ SpinBox { decimals: 2; Layout.fillWidth: true }
+ }
+ }
+ }
+ }
+}
diff --git a/examples/quick/controls/splitview/main.qml b/examples/quick/controls/gallery/qml/ProgressPage.qml
index 8707b6cc..a1fa596f 100644
--- a/examples/quick/controls/splitview/main.qml
+++ b/examples/quick/controls/gallery/qml/ProgressPage.qml
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the Qt Quick Controls module of the Qt Toolkit.
@@ -38,44 +38,52 @@
**
****************************************************************************/
-
-
-
-
import QtQuick 2.2
+import QtQuick.Layouts 1.1
import QtQuick.Controls 1.2
-import QtQuick.Layouts 1.0
-ApplicationWindow {
- visible: true
- width: 600
- height: 400
+ScrollView {
+ id: page
+
+ horizontalScrollBarPolicy: Qt.ScrollBarAlwaysOff
- SplitView {
- anchors.fill: parent
+ Item {
+ id: content
- Rectangle {
+ width: Math.max(page.viewport.width, column.implicitWidth + 2 * column.spacing)
+ height: Math.max(page.viewport.height, column.implicitHeight + 2 * column.spacing)
+
+ ColumnLayout {
id: column
- width: 200
- Layout.minimumWidth: 100
- Layout.maximumWidth: 300
- color: "lightsteelblue"
- }
- SplitView {
- orientation: Qt.Vertical
- Layout.fillWidth: true
+ anchors.top: parent.top
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.margins: column.spacing
+
+ GroupBox {
+ title: "ProgressBar"
+ Layout.fillWidth: true
+ ColumnLayout {
+ anchors.fill: parent
+ ProgressBar { indeterminate: true; Layout.fillWidth: true }
+ ProgressBar { value: slider.value; Layout.fillWidth: true }
+ }
+ }
- Rectangle {
- id: row1
- height: 200
- color: "lightblue"
- Layout.minimumHeight: 1
+ GroupBox {
+ title: "Slider"
+ Layout.fillWidth: true
+ ColumnLayout {
+ anchors.fill: parent
+ Slider { id: slider; value: 0.5; Layout.fillWidth: true }
+ }
}
- Rectangle {
- id: row2
- color: "lightgray"
+ GroupBox {
+ title: "BusyIndicator"
+ Layout.fillWidth: true
+ BusyIndicator { running: true }
}
}
}
diff --git a/examples/quick/controls/gallery/qml/UI.js b/examples/quick/controls/gallery/qml/UI.js
new file mode 100644
index 00000000..0286ac56
--- /dev/null
+++ b/examples/quick/controls/gallery/qml/UI.js
@@ -0,0 +1,45 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt Quick Controls module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+.pragma library
+
+var margin = 2
+var tabPosition = Qt.TopEdge
+var label = ""
diff --git a/examples/quick/controls/gallery/resources.qrc b/examples/quick/controls/gallery/resources.qrc
deleted file mode 100644
index 57d803b2..00000000
--- a/examples/quick/controls/gallery/resources.qrc
+++ /dev/null
@@ -1,24 +0,0 @@
-<RCC>
- <qresource prefix="/">
- <file>main.qml</file>
- <file>content/AboutDialog.qml</file>
- <file>content/Controls.qml</file>
- <file>content/ImageViewer.qml</file>
- <file>content/ModelView.qml</file>
- <file>content/Styles.qml</file>
- <file>images/document-open.png</file>
- <file>images/document-open@2x.png</file>
- <file>images/document-save-as.png</file>
- <file>images/document-save-as@2x.png</file>
- <file>images/folder_new.png</file>
- <file>images/tab.png</file>
- <file>images/tab_selected.png</file>
- <file>images/bubble.png</file>
- <file>images/button-pressed.png</file>
- <file>images/button.png</file>
- <file>images/progress-background.png</file>
- <file>images/progress-fill.png</file>
- <file>images/textfield.png</file>
- <file>images/slider-handle.png</file>
- </qresource>
-</RCC>
diff --git a/examples/quick/controls/gallery/src/src.pri b/examples/quick/controls/gallery/src/src.pri
deleted file mode 100644
index 66d903ea..00000000
--- a/examples/quick/controls/gallery/src/src.pri
+++ /dev/null
@@ -1,2 +0,0 @@
-SOURCES += \
- $$PWD/main.cpp
diff --git a/examples/quick/controls/shared/shared.pri b/examples/quick/controls/shared/shared.pri
index 8ca34737..1d9e0592 100644
--- a/examples/quick/controls/shared/shared.pri
+++ b/examples/quick/controls/shared/shared.pri
@@ -1,3 +1,6 @@
+QT += quick
+!no_desktop: QT += widgets
+
INCLUDEPATH += $$PWD
SOURCES += \
diff --git a/examples/quick/controls/splitview/splitview.pro b/examples/quick/controls/splitview/splitview.pro
deleted file mode 100644
index 40adf3d1..00000000
--- a/examples/quick/controls/splitview/splitview.pro
+++ /dev/null
@@ -1,12 +0,0 @@
-QT += qml quick
-TARGET = splitview
-!no_desktop: QT += widgets
-
-include(src/src.pri)
-include(../shared/shared.pri)
-
-OTHER_FILES += \
- main.qml
-
-RESOURCES += \
- resources.qrc
diff --git a/examples/quick/controls/splitview/splitview.qmlproject b/examples/quick/controls/splitview/splitview.qmlproject
deleted file mode 100644
index e5a8bf02..00000000
--- a/examples/quick/controls/splitview/splitview.qmlproject
+++ /dev/null
@@ -1,16 +0,0 @@
-import QmlProject 1.1
-
-Project {
- mainFile: "main.qml"
-
- /* Include .qml, .js, and image files from current directory and subdirectories */
- QmlFiles {
- directory: "."
- }
- JavaScriptFiles {
- directory: "."
- }
- ImageFiles {
- directory: "."
- }
-}
diff --git a/examples/quick/controls/splitview/src/src.pri b/examples/quick/controls/splitview/src/src.pri
deleted file mode 100644
index 66d903ea..00000000
--- a/examples/quick/controls/splitview/src/src.pri
+++ /dev/null
@@ -1,2 +0,0 @@
-SOURCES += \
- $$PWD/main.cpp
diff --git a/examples/quick/controls/tableview/images/header.png b/examples/quick/controls/tableview/images/header.png
deleted file mode 100644
index dba66460..00000000
--- a/examples/quick/controls/tableview/images/header.png
+++ /dev/null
Binary files differ
diff --git a/examples/quick/controls/tableview/images/selectedrow.png b/examples/quick/controls/tableview/images/selectedrow.png
deleted file mode 100644
index 71192ea4..00000000
--- a/examples/quick/controls/tableview/images/selectedrow.png
+++ /dev/null
Binary files differ
diff --git a/examples/quick/controls/tableview/images/sort-up.png b/examples/quick/controls/tableview/images/sort-up.png
deleted file mode 100644
index 27fcb191..00000000
--- a/examples/quick/controls/tableview/images/sort-up.png
+++ /dev/null
Binary files differ
diff --git a/examples/quick/controls/tableview/main.qml b/examples/quick/controls/tableview/main.qml
index b85f2d1d..49386289 100644
--- a/examples/quick/controls/tableview/main.qml
+++ b/examples/quick/controls/tableview/main.qml
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the Qt Quick Controls module of the Qt Toolkit.
@@ -38,385 +38,150 @@
**
****************************************************************************/
-
-
-
-
import QtQuick 2.2
-import QtQuick.Window 2.1
+import QtQuick.Layouts 1.1
import QtQuick.Controls 1.2
-import QtQuick.XmlListModel 2.0
+import org.qtproject.example 1.0
-Window {
+ApplicationWindow {
+ id: window
visible: true
- width: 538 + frame.margins * 2
- height: 360 + frame.margins * 2
-
- ToolBar {
- id: toolbar
- width: parent.width
+ title: "Table View Example"
- ListModel {
- id: delegatemenu
- ListElement { text: "Shiny delegate" }
- ListElement { text: "Scale selected" }
- ListElement { text: "Editable items" }
- }
+ toolBar: ToolBar {
+ TextField {
+ id: searchBox
- ComboBox {
- id: delegateChooser
- enabled: frame.currentIndex === 3 ? 1 : 0
- model: delegatemenu
- width: 150
- anchors.left: parent.left
- anchors.leftMargin: 8
- anchors.verticalCenter: parent.verticalCenter
- }
+ placeholderText: "Search..."
+ inputMethodHints: Qt.ImhNoPredictiveText
- CheckBox {
- id: enabledCheck
- text: "Enabled"
- checked: true
+ width: window.width / 5 * 2
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
}
}
- SystemPalette {id: syspal}
- color: syspal.window
-
- XmlListModel {
- id: flickerModel
- source: "http://api.flickr.com/services/feeds/photos_public.gne?format=rss2&tags=" + "Qt"
- query: "/rss/channel/item"
- namespaceDeclarations: "declare namespace media=\"http://search.yahoo.com/mrss/\";"
- XmlRole { name: "title"; query: "title/string()" }
- XmlRole { name: "imagesource"; query: "media:thumbnail/@url/string()" }
- XmlRole { name: "credit"; query: "media:credit/string()" }
- }
-
- ListModel {
- id: nestedModel
- ListElement{content: ListElement { description: "Core" ; color:"#ffaacc"}}
- ListElement{content: ListElement { description: "Second" ; color:"#ffccaa"}}
- ListElement{content: ListElement { description: "Third" ; color:"#ffffaa"}}
- }
+ TableView {
+ id: tableView
- ListModel {
- id: largeModel
- Component.onCompleted: {
- for (var i=0 ; i< 500 ; ++i)
- largeModel.append({"name":"Person "+i , "age": Math.round(Math.random()*100), "gender": Math.random()>0.5 ? "Male" : "Female"})
- }
- }
+ frameVisible: false
+ sortIndicatorVisible: true
- Column {
- anchors.top: toolbar.bottom
- anchors.right: parent.right
- anchors.left: parent.left
- anchors.bottom: parent.bottom
- anchors.margins: 8
+ anchors.fill: parent
- TabView {
- id:frame
- focus:true
- enabled: enabledCheck.checked
+ Layout.minimumWidth: 400
+ Layout.minimumHeight: 240
+ Layout.preferredWidth: 600
+ Layout.preferredHeight: 400
- property int margins: Qt.platform.os === "osx" ? 16 : 0
+ TableViewColumn {
+ id: titleColumn
+ title: "Title"
+ role: "title"
+ movable: false
+ resizable: false
+ width: tableView.viewport.width - authorColumn.width
+ }
- height: parent.height - 34
- anchors.right: parent.right
- anchors.left: parent.left
- anchors.margins: margins
+ TableViewColumn {
+ id: authorColumn
+ title: "Author"
+ role: "author"
+ movable: false
+ resizable: false
+ width: tableView.viewport.width / 3
+ }
- Tab {
- title: "XmlListModel"
+ model: SortFilterProxyModel {
+ id: proxyModel
+ source: sourceModel.count > 0 ? sourceModel : null
- TableView {
- model: flickerModel
- anchors.fill: parent
- anchors.margins: 12
+ sortOrder: tableView.sortIndicatorOrder
+ sortCaseSensitivity: Qt.CaseInsensitive
+ sortRole: sourceModel.count > 0 ? tableView.getColumn(tableView.sortIndicatorColumn).role : ""
- TableViewColumn {
- role: "title"
- title: "Title"
- width: 120
- }
- TableViewColumn {
- role: "credit"
- title: "Credit"
- width: 120
- }
- TableViewColumn {
- role: "imagesource"
- title: "Image source"
- width: 200
- visible: true
- }
+ filterString: "*" + searchBox.text + "*"
+ filterSyntax: SortFilterProxyModel.Wildcard
+ filterCaseSensitivity: Qt.CaseInsensitive
+ }
- frameVisible: frameCheckbox.checked
- headerVisible: headerCheckbox.checked
- sortIndicatorVisible: sortableCheckbox.checked
- alternatingRowColors: alternateCheckbox.checked
- }
+ ListModel {
+ id: sourceModel
+ ListElement {
+ title: "Moby-Dick"
+ author: "Herman Melville"
}
- Tab {
- title: "Multivalue"
-
- TableView {
- model: nestedModel
- anchors.fill: parent
- anchors.margins: 12
-
- TableViewColumn {
- role: "content"
- title: "Text and Color"
- width: 220
- }
-
- itemDelegate: Item {
- Rectangle{
- color: styleData.value.get(0).color
- anchors.top:parent.top
- anchors.right:parent.right
- anchors.bottom:parent.bottom
- anchors.margins: 4
- width:32
- border.color:"#666"
- }
- Text {
- width: parent.width
- anchors.margins: 4
- anchors.left: parent.left
- anchors.verticalCenter: parent.verticalCenter
- elide: styleData.elideMode
- text: styleData.value.get(0).description
- color: styleData.textColor
- }
- }
-
- frameVisible: frameCheckbox.checked
- headerVisible: headerCheckbox.checked
- sortIndicatorVisible: sortableCheckbox.checked
- alternatingRowColors: alternateCheckbox.checked
- }
+ ListElement {
+ title: "The Adventures of Tom Sawyer"
+ author: "Mark Twain"
}
- Tab {
- title: "Generated"
-
- TableView {
- model: largeModel
- anchors.margins: 12
- anchors.fill: parent
- TableViewColumn {
- role: "name"
- title: "Name"
- width: 120
- }
- TableViewColumn {
- role: "age"
- title: "Age"
- width: 120
- }
- TableViewColumn {
- role: "gender"
- title: "Gender"
- width: 120
- }
- frameVisible: frameCheckbox.checked
- headerVisible: headerCheckbox.checked
- sortIndicatorVisible: sortableCheckbox.checked
- alternatingRowColors: alternateCheckbox.checked
- }
+ ListElement {
+ title: "Cat’s Cradle"
+ author: "Kurt Vonnegut"
}
-
- Tab {
- title: "Delegates"
- Item {
- anchors.fill: parent
-
- Component {
- id: delegate1
- Item {
- clip: true
- Text {
- width: parent.width
- anchors.margins: 4
- anchors.left: parent.left
- anchors.verticalCenter: parent.verticalCenter
- elide: styleData.elideMode
- text: styleData.value !== undefined ? styleData.value : ""
- color: styleData.textColor
- }
- }
- }
-
- Component {
- id: delegate2
- Text {
- width: parent.width
- anchors.margins: 4
- anchors.left: parent.left
- anchors.verticalCenter: parent.verticalCenter
- elide: styleData.elideMode
- text: styleData.value !== undefined ? styleData.value : ""
- color: styleData.textColor
- }
- }
-
- Component {
- id: editableDelegate
- Item {
-
- Text {
- width: parent.width
- anchors.margins: 4
- anchors.left: parent.left
- anchors.verticalCenter: parent.verticalCenter
- elide: styleData.elideMode
- text: styleData.value !== undefined ? styleData.value : ""
- color: styleData.textColor
- visible: !styleData.selected
- }
- Loader { // Initialize text editor lazily to improve performance
- id: loaderEditor
- anchors.fill: parent
- anchors.margins: 4
- Connections {
- target: loaderEditor.item
- onAccepted: {
- if (typeof styleData.value === 'number')
- largeModel.setProperty(styleData.row, styleData.role, Number(parseFloat(loaderEditor.item.text).toFixed(0)))
- else
- largeModel.setProperty(styleData.row, styleData.role, loaderEditor.item.text)
- }
- }
- sourceComponent: styleData.selected ? editor : null
- Component {
- id: editor
- TextInput {
- id: textinput
- color: styleData.textColor
- text: styleData.value
- MouseArea {
- id: mouseArea
- anchors.fill: parent
- hoverEnabled: true
- onClicked: textinput.forceActiveFocus()
- }
- }
- }
- }
- }
- }
- TableView {
- id: delegatesView
- model: largeModel
- anchors.margins: 12
- anchors.fill:parent
- frameVisible: frameCheckbox.checked
- headerVisible: headerCheckbox.checked
- sortIndicatorVisible: sortableCheckbox.checked
- alternatingRowColors: alternateCheckbox.checked
-
- TableViewColumn {
- role: "name"
- title: "Name"
- width: 120
- }
- TableViewColumn {
- role: "age"
- title: "Age"
- width: 120
- }
- TableViewColumn {
- role: "gender"
- title: "Gender"
- width: 120
- }
-
- headerDelegate: BorderImage{
- source: "images/header.png"
- border{left:2;right:2;top:2;bottom:2}
- Text {
- anchors.verticalCenter: parent.verticalCenter
- anchors.left: parent.left
- anchors.right: indicator.visible ? indicator.left : parent.right
- anchors.margins: 6
- text: styleData.value
- elide: Text.ElideRight
- color:"#333"
- }
- // Sort indicator
- Image {
- id: indicator
- anchors.verticalCenter: parent.verticalCenter
- anchors.right: parent.right
- anchors.rightMargin: 6
- source: "images/sort-up.png"
- visible: delegatesView.sortIndicatorVisible &&
- styleData.column === delegatesView.sortIndicatorColumn
- rotation: delegatesView.sortIndicatorOrder === Qt.AscendingOrder ? 180 : 0
- Behavior on rotation { NumberAnimation { } }
- }
-
- }
-
- rowDelegate: Rectangle {
- height: (delegateChooser.currentIndex == 1 && styleData.selected) ? 30 : 20
- Behavior on height{ NumberAnimation{} }
-
- color: styleData.selected ? "#448" : (styleData.alternate? "#eee" : "#fff")
- BorderImage{
- id: selected
- anchors.fill: parent
- source: "images/selectedrow.png"
- visible: styleData.selected
- border{left:2; right:2; top:2; bottom:2}
- SequentialAnimation {
- running: true; loops: Animation.Infinite
- NumberAnimation { target:selected; property: "opacity"; to: 1.0; duration: 900}
- NumberAnimation { target:selected; property: "opacity"; to: 0.5; duration: 900}
- }
- }
- }
-
- itemDelegate: {
- if (delegateChooser.currentIndex == 2)
- return editableDelegate;
- else
- return delegate1;
- }
- }
- }
+ ListElement {
+ title: "Farenheit 451"
+ author: "Ray Bradbury"
}
- }
- Row{
- x: 12
- height: 34
- CheckBox{
- id: alternateCheckbox
- checked: true
- text: "Alternate"
- anchors.verticalCenter: parent.verticalCenter
+ ListElement {
+ title: "It"
+ author: "Stephen King"
+ }
+ ListElement {
+ title: "On the Road"
+ author: "Jack Kerouac"
+ }
+ ListElement {
+ title: "Of Mice and Men"
+ author: "John Steinbeck"
+ }
+ ListElement {
+ title: "Do Androids Dream of Electric Sheep?"
+ author: "Philip K. Dick"
+ }
+ ListElement {
+ title: "Uncle Tom’s Cabin"
+ author: "Harriet Beecher Stowe"
+ }
+ ListElement {
+ title: "The Call of the Wild"
+ author: "Jack London"
+ }
+ ListElement {
+ title: "The Old Man and the Sea"
+ author: "Ernest Hemingway"
+ }
+ ListElement {
+ title: "A Streetcar Named Desire"
+ author: "Tennessee Williams"
+ }
+ ListElement {
+ title: "Catch-22"
+ author: "Joseph Heller"
+ }
+ ListElement {
+ title: "One Flew Over the Cuckoo’s Nest"
+ author: "Ken Kesey"
+ }
+ ListElement {
+ title: "The Murders in the Rue Morgue"
+ author: "Edgar Allan Poe"
+ }
+ ListElement {
+ title: "Breakfast at Tiffany’s"
+ author: "Truman Capote"
}
- CheckBox{
- id: sortableCheckbox
- checked: false
- text: "Sort indicator"
- anchors.verticalCenter: parent.verticalCenter
+ ListElement {
+ title: "Death of a Salesman"
+ author: "Arthur Miller"
}
- CheckBox{
- id: frameCheckbox
- checked: true
- text: "Frame"
- anchors.verticalCenter: parent.verticalCenter
+ ListElement {
+ title: "Post Office"
+ author: "Charles Bukowski"
}
- CheckBox{
- id: headerCheckbox
- checked: true
- text: "Headers"
- anchors.verticalCenter: parent.verticalCenter
+ ListElement {
+ title: "Herbert West—Reanimator"
+ author: "H. P. Lovecraft"
}
}
}
diff --git a/examples/quick/controls/tableview/resources.qrc b/examples/quick/controls/tableview/resources.qrc
deleted file mode 100644
index 83d3f6a7..00000000
--- a/examples/quick/controls/tableview/resources.qrc
+++ /dev/null
@@ -1,8 +0,0 @@
-<!DOCTYPE RCC><RCC version="1.0">
-<qresource prefix="/">
- <file>main.qml</file>
- <file>images/selectedrow.png</file>
- <file>images/header.png</file>
- <file>images/sort-up.png</file>
-</qresource>
-</RCC>
diff --git a/examples/quick/controls/tableview/src/main.cpp b/examples/quick/controls/tableview/src/main.cpp
index a757f485..1406b84c 100644
--- a/examples/quick/controls/tableview/src/main.cpp
+++ b/examples/quick/controls/tableview/src/main.cpp
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the Qt Quick Controls module of the Qt Toolkit.
@@ -39,11 +39,21 @@
****************************************************************************/
#include "qtquickcontrolsapplication.h"
-#include <QtQml/QQmlApplicationEngine>
+#include "sortfilterproxymodel.h"
+#include <QtQml/qqmlapplicationengine.h>
+#include <QtGui/qsurfaceformat.h>
+#include <QtQml/qqml.h>
int main(int argc, char *argv[])
{
QtQuickControlsApplication app(argc, argv);
+ if (QCoreApplication::arguments().contains(QLatin1String("--coreprofile"))) {
+ QSurfaceFormat fmt;
+ fmt.setVersion(4, 4);
+ fmt.setProfile(QSurfaceFormat::CoreProfile);
+ QSurfaceFormat::setDefaultFormat(fmt);
+ }
+ qmlRegisterType<SortFilterProxyModel>("org.qtproject.example", 1, 0, "SortFilterProxyModel");
QQmlApplicationEngine engine(QUrl("qrc:/main.qml"));
return app.exec();
}
diff --git a/examples/quick/controls/tableview/src/sortfilterproxymodel.cpp b/examples/quick/controls/tableview/src/sortfilterproxymodel.cpp
new file mode 100644
index 00000000..7b999470
--- /dev/null
+++ b/examples/quick/controls/tableview/src/sortfilterproxymodel.cpp
@@ -0,0 +1,189 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt Quick Controls module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+** of its contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "sortfilterproxymodel.h"
+#include <QtDebug>
+#include <QtQml>
+
+SortFilterProxyModel::SortFilterProxyModel(QObject *parent) : QSortFilterProxyModel(parent), m_complete(false)
+{
+ connect(this, SIGNAL(rowsInserted(QModelIndex,int,int)), this, SIGNAL(countChanged()));
+ connect(this, SIGNAL(rowsRemoved(QModelIndex,int,int)), this, SIGNAL(countChanged()));
+}
+
+int SortFilterProxyModel::count() const
+{
+ return rowCount();
+}
+
+QObject *SortFilterProxyModel::source() const
+{
+ return sourceModel();
+}
+
+void SortFilterProxyModel::setSource(QObject *source)
+{
+ setSourceModel(qobject_cast<QAbstractItemModel *>(source));
+}
+
+QByteArray SortFilterProxyModel::sortRole() const
+{
+ return m_sortRole;
+}
+
+void SortFilterProxyModel::setSortRole(const QByteArray &role)
+{
+ if (m_sortRole != role) {
+ m_sortRole = role;
+ if (m_complete)
+ QSortFilterProxyModel::setSortRole(roleKey(role));
+ }
+}
+
+void SortFilterProxyModel::setSortOrder(Qt::SortOrder order)
+{
+ QSortFilterProxyModel::sort(0, order);
+}
+
+QByteArray SortFilterProxyModel::filterRole() const
+{
+ return m_filterRole;
+}
+
+void SortFilterProxyModel::setFilterRole(const QByteArray &role)
+{
+ if (m_filterRole != role) {
+ m_filterRole = role;
+ if (m_complete)
+ QSortFilterProxyModel::setFilterRole(roleKey(role));
+ }
+}
+
+QString SortFilterProxyModel::filterString() const
+{
+ return filterRegExp().pattern();
+}
+
+void SortFilterProxyModel::setFilterString(const QString &filter)
+{
+ setFilterRegExp(QRegExp(filter, filterCaseSensitivity(), static_cast<QRegExp::PatternSyntax>(filterSyntax())));
+}
+
+SortFilterProxyModel::FilterSyntax SortFilterProxyModel::filterSyntax() const
+{
+ return static_cast<FilterSyntax>(filterRegExp().patternSyntax());
+}
+
+void SortFilterProxyModel::setFilterSyntax(SortFilterProxyModel::FilterSyntax syntax)
+{
+ setFilterRegExp(QRegExp(filterString(), filterCaseSensitivity(), static_cast<QRegExp::PatternSyntax>(syntax)));
+}
+
+QJSValue SortFilterProxyModel::get(int idx) const
+{
+ QJSEngine *engine = qmlEngine(this);
+ QJSValue value = engine->newObject();
+ if (idx >= 0 && idx < count()) {
+ QHash<int, QByteArray> roles = roleNames();
+ QHashIterator<int, QByteArray> it(roles);
+ while (it.hasNext()) {
+ it.next();
+ value.setProperty(QString::fromUtf8(it.value()), data(index(idx, 0), it.key()).toString());
+ }
+ }
+ return value;
+}
+
+void SortFilterProxyModel::classBegin()
+{
+}
+
+void SortFilterProxyModel::componentComplete()
+{
+ m_complete = true;
+ if (!m_sortRole.isEmpty())
+ QSortFilterProxyModel::setSortRole(roleKey(m_sortRole));
+ if (!m_filterRole.isEmpty())
+ QSortFilterProxyModel::setFilterRole(roleKey(m_filterRole));
+}
+
+int SortFilterProxyModel::roleKey(const QByteArray &role) const
+{
+ QHash<int, QByteArray> roles = roleNames();
+ QHashIterator<int, QByteArray> it(roles);
+ while (it.hasNext()) {
+ it.next();
+ if (it.value() == role)
+ return it.key();
+ }
+ return -1;
+}
+
+QHash<int, QByteArray> SortFilterProxyModel::roleNames() const
+{
+ if (QAbstractItemModel *source = sourceModel())
+ return source->roleNames();
+ return QHash<int, QByteArray>();
+}
+
+bool SortFilterProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const
+{
+ QRegExp rx = filterRegExp();
+ if (rx.isEmpty())
+ return true;
+ QAbstractItemModel *model = sourceModel();
+ if (filterRole().isEmpty()) {
+ QHash<int, QByteArray> roles = roleNames();
+ QHashIterator<int, QByteArray> it(roles);
+ while (it.hasNext()) {
+ it.next();
+ QModelIndex sourceIndex = model->index(sourceRow, 0, sourceParent);
+ QString key = model->data(sourceIndex, it.key()).toString();
+ if (key.contains(rx))
+ return true;
+ }
+ return false;
+ }
+ QModelIndex sourceIndex = model->index(sourceRow, 0, sourceParent);
+ if (!sourceIndex.isValid())
+ return true;
+ QString key = model->data(sourceIndex, roleKey(filterRole())).toString();
+ return key.contains(rx);
+}
diff --git a/examples/quick/controls/gallery/content/ModelView.qml b/examples/quick/controls/tableview/src/sortfilterproxymodel.h
index a5d07d15..026b5d12 100644
--- a/examples/quick/controls/gallery/content/ModelView.qml
+++ b/examples/quick/controls/tableview/src/sortfilterproxymodel.h
@@ -1,6 +1,6 @@
/****************************************************************************
**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
** Contact: http://www.qt-project.org/legal
**
** This file is part of the Qt Quick Controls module of the Qt Toolkit.
@@ -38,51 +38,74 @@
**
****************************************************************************/
-import QtQuick 2.2
-import QtQuick.Controls 1.2
-
-Item {
- id: root
- width: 600
- height: 300
- anchors.fill: parent
- anchors.margins: Qt.platform.os === "osx" ? 12 : 6
-
- ListModel {
- id: dummyModel
- Component.onCompleted: {
- for (var i = 0 ; i < 100 ; ++i) {
- append({"index": i, "title": "A title " + i, "imagesource" :"http://someurl.com", "credit" : "N/A"})
- }
- }
- }
-
- TableView{
- model: dummyModel
- anchors.fill: parent
-
- TableViewColumn {
- role: "index"
- title: "#"
- width: 36
- resizable: false
- movable: false
- }
- TableViewColumn {
- role: "title"
- title: "Title"
- width: 120
- }
- TableViewColumn {
- role: "credit"
- title: "Credit"
- width: 120
- }
- TableViewColumn {
- role: "imagesource"
- title: "Image source"
- width: 200
- visible: true
- }
- }
-}
+#ifndef SORTFILTERPROXYMODEL_H
+#define SORTFILTERPROXYMODEL_H
+
+#include <QtCore/qsortfilterproxymodel.h>
+#include <QtQml/qqmlparserstatus.h>
+#include <QtQml/qjsvalue.h>
+
+class SortFilterProxyModel : public QSortFilterProxyModel, public QQmlParserStatus
+{
+ Q_OBJECT
+ Q_INTERFACES(QQmlParserStatus)
+
+ Q_PROPERTY(int count READ count NOTIFY countChanged)
+ Q_PROPERTY(QObject *source READ source WRITE setSource)
+
+ Q_PROPERTY(QByteArray sortRole READ sortRole WRITE setSortRole)
+ Q_PROPERTY(Qt::SortOrder sortOrder READ sortOrder WRITE setSortOrder)
+
+ Q_PROPERTY(QByteArray filterRole READ filterRole WRITE setFilterRole)
+ Q_PROPERTY(QString filterString READ filterString WRITE setFilterString)
+ Q_PROPERTY(FilterSyntax filterSyntax READ filterSyntax WRITE setFilterSyntax)
+
+ Q_ENUMS(FilterSyntax)
+
+public:
+ explicit SortFilterProxyModel(QObject *parent = 0);
+
+ QObject *source() const;
+ void setSource(QObject *source);
+
+ QByteArray sortRole() const;
+ void setSortRole(const QByteArray &role);
+
+ void setSortOrder(Qt::SortOrder order);
+
+ QByteArray filterRole() const;
+ void setFilterRole(const QByteArray &role);
+
+ QString filterString() const;
+ void setFilterString(const QString &filter);
+
+ enum FilterSyntax {
+ RegExp,
+ Wildcard,
+ FixedString
+ };
+
+ FilterSyntax filterSyntax() const;
+ void setFilterSyntax(FilterSyntax syntax);
+
+ int count() const;
+ Q_INVOKABLE QJSValue get(int index) const;
+
+ void classBegin();
+ void componentComplete();
+
+signals:
+ void countChanged();
+
+protected:
+ int roleKey(const QByteArray &role) const;
+ QHash<int, QByteArray> roleNames() const;
+ bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const;
+
+private:
+ bool m_complete;
+ QByteArray m_sortRole;
+ QByteArray m_filterRole;
+};
+
+#endif // SORTFILTERPROXYMODEL_H
diff --git a/examples/quick/controls/tableview/src/src.pri b/examples/quick/controls/tableview/src/src.pri
index 66d903ea..491f851c 100644
--- a/examples/quick/controls/tableview/src/src.pri
+++ b/examples/quick/controls/tableview/src/src.pri
@@ -1,2 +1,8 @@
+INCLUDEPATH += $$PWD
+
+HEADERS += \
+ $$PWD/sortfilterproxymodel.h
+
SOURCES += \
- $$PWD/main.cpp
+ $$PWD/main.cpp \
+ $$PWD/sortfilterproxymodel.cpp
diff --git a/examples/quick/controls/tableview/tableview.pro b/examples/quick/controls/tableview/tableview.pro
index c982ac20..c0ed1a2f 100644
--- a/examples/quick/controls/tableview/tableview.pro
+++ b/examples/quick/controls/tableview/tableview.pro
@@ -1,12 +1,11 @@
-QT += qml quick
+TEMPLATE = app
TARGET = tableview
-!no_desktop: QT += widgets
-include(src/src.pri)
-include(../shared/shared.pri)
+RESOURCES += \
+ tableview.qrc
OTHER_FILES += \
main.qml
-RESOURCES += \
- resources.qrc
+include(src/src.pri)
+include(../shared/shared.pri)
diff --git a/examples/quick/controls/tableview/tableview.qmlproject b/examples/quick/controls/tableview/tableview.qmlproject
deleted file mode 100644
index e5a8bf02..00000000
--- a/examples/quick/controls/tableview/tableview.qmlproject
+++ /dev/null
@@ -1,16 +0,0 @@
-import QmlProject 1.1
-
-Project {
- mainFile: "main.qml"
-
- /* Include .qml, .js, and image files from current directory and subdirectories */
- QmlFiles {
- directory: "."
- }
- JavaScriptFiles {
- directory: "."
- }
- ImageFiles {
- directory: "."
- }
-}
diff --git a/examples/quick/controls/splitview/resources.qrc b/examples/quick/controls/tableview/tableview.qrc
index 3b111a90..3b111a90 100644
--- a/examples/quick/controls/splitview/resources.qrc
+++ b/examples/quick/controls/tableview/tableview.qrc
diff --git a/examples/quick/dialogs/systemdialogs/ColorDialogs.qml b/examples/quick/dialogs/systemdialogs/ColorDialogs.qml
index c44284df..8b26e081 100644
--- a/examples/quick/dialogs/systemdialogs/ColorDialogs.qml
+++ b/examples/quick/dialogs/systemdialogs/ColorDialogs.qml
@@ -65,7 +65,7 @@ Item {
anchors.fill: parent
anchors.margins: 12
spacing: 8
- Text {
+ Label {
font.bold: true
text: "Color dialog properties:"
}
@@ -99,9 +99,8 @@ Item {
onClicked: colorDialog.open()
}
}
- Text {
+ Label {
id: colorLabel
- color: palette.windowText
text: "<b>current color:</b> " + colorDialog.color
anchors.verticalCenter: parent.verticalCenter
}
diff --git a/examples/quick/dialogs/systemdialogs/CustomDialogs.qml b/examples/quick/dialogs/systemdialogs/CustomDialogs.qml
index 405dece3..90d012e1 100644
--- a/examples/quick/dialogs/systemdialogs/CustomDialogs.qml
+++ b/examples/quick/dialogs/systemdialogs/CustomDialogs.qml
@@ -67,7 +67,7 @@ Item {
onApply: lastChosen.text = "Apply"
onReset: lastChosen.text = "Reset"
- Text {
+ Label {
text: "Hello world!"
}
}
@@ -91,9 +91,8 @@ Item {
ColumnLayout {
id: column
width: parent ? parent.width : 100
- Text {
+ Label {
text: "<b>What</b> is the average airspeed velocity of an unladen European swallow?"
- textFormat: Text.StyledText
Layout.columnSpan: 2
Layout.fillWidth: true
wrapMode: Text.WordWrap
@@ -104,7 +103,7 @@ Item {
id: answer
onEditingFinished: spinboxDialog.click(StandardButton.Ok)
}
- Text {
+ Label {
text: "m/s"
Layout.alignment: Qt.AlignBaseline | Qt.AlignLeft
}
@@ -123,6 +122,7 @@ Item {
else
lastChosen.text = (clickedButton == StandardButton.Retry ? "(Retry)" : "(Ignore)")
}
+ onRejected: lastChosen.text = "Rejected"
Calendar {
id: calendar
@@ -135,26 +135,31 @@ Item {
id: filledDialog
modality: dialogModal.checked ? Qt.WindowModal : Qt.NonModal
title: customizeTitle.checked ? windowTitleField.text : "Customized content"
+ onRejected: lastChosen.text = "Rejected"
+ onAccepted: lastChosen.text = "Accepted " +
+ (clickedButton === StandardButton.Retry ? "(Retry)" : "(OK)")
+ onButtonClicked: if (clickedButton === StandardButton.Retry) lastChosen.text = "Retry"
contentItem: Rectangle {
color: "lightskyblue"
implicitWidth: 400
implicitHeight: 100
- Text {
+ Label {
text: "Hello blue sky!"
color: "navy"
anchors.centerIn: parent
}
- focus: true
- Keys.onEscapePressed: filledDialog.close()
+ Keys.onPressed: if (event.key === Qt.Key_R && (event.modifiers & Qt.ControlModifier)) filledDialog.click(StandardButton.Retry)
+ Keys.onEnterPressed: filledDialog.accept()
+ Keys.onEscapePressed: filledDialog.reject()
+ Keys.onBackPressed: filledDialog.reject() // especially necessary on Android
}
}
- Column {
+ ColumnLayout {
anchors.fill: parent
anchors.margins: 12
spacing: 8
- Text {
- color: palette.windowText
+ Label {
font.bold: true
text: "Message dialog properties:"
}
@@ -163,22 +168,26 @@ Item {
text: "Modal"
Binding on checked { value: helloDialog.modality != Qt.NonModal }
}
- CheckBox {
- id: customizeTitle
- text: "Window Title"
- checked: true
- width: parent.width
+ RowLayout {
+ CheckBox {
+ id: customizeTitle
+ text: "Window Title"
+ Layout.alignment: Qt.AlignBaseline
+ checked: true
+ }
TextField {
id: windowTitleField
- anchors.right: parent.right
+ Layout.alignment: Qt.AlignBaseline
+ Layout.fillWidth: true
text: "Custom Dialog"
- width: root.width - customizeTitle.implicitWidth - 30
}
}
-
+ Label {
+ text: "Buttons:"
+ }
Flow {
spacing: 8
- width: parent.width
+ Layout.fillWidth: true
property bool updating: false
function updateButtons(button, checked) {
if (updating) return
@@ -256,6 +265,24 @@ Item {
}
CheckBox {
+ text: "Apply"
+ property int button: StandardButton.Apply
+ onCheckedChanged: parent.updateButtons(button, checked)
+ }
+
+ CheckBox {
+ text: "Reset"
+ property int button: StandardButton.Reset
+ onCheckedChanged: parent.updateButtons(button, checked)
+ }
+
+ CheckBox {
+ text: "Restore Defaults"
+ property int button: StandardButton.RestoreDefaults
+ onCheckedChanged: parent.updateButtons(button, checked)
+ }
+
+ CheckBox {
text: "OK"
checked: true
property int button: StandardButton.Ok
@@ -264,12 +291,14 @@ Item {
Component.onCompleted: updateButtons()
}
- Text {
+ Label {
id: lastChosen
}
+ Item { Layout.fillHeight: true }
}
Rectangle {
+ id: bottomBar
anchors {
left: parent.left
right: parent.right
@@ -286,22 +315,22 @@ Item {
anchors.leftMargin: 12
width: parent.width
Button {
- text: "Hello World dialog"
+ text: "Hello World"
anchors.verticalCenter: parent.verticalCenter
onClicked: helloDialog.open()
}
Button {
- text: "Input dialog"
+ text: "Input"
anchors.verticalCenter: parent.verticalCenter
onClicked: spinboxDialog.open()
}
Button {
- text: "Date picker"
+ text: "Date"
anchors.verticalCenter: parent.verticalCenter
onClicked: dateDialog.open()
}
Button {
- text: "Buttonless marginless dialog"
+ text: "No buttons or margins"
anchors.verticalCenter: parent.verticalCenter
onClicked: filledDialog.open()
}
diff --git a/examples/quick/dialogs/systemdialogs/FileDialogs.qml b/examples/quick/dialogs/systemdialogs/FileDialogs.qml
index 79a58b98..9f50abcd 100644
--- a/examples/quick/dialogs/systemdialogs/FileDialogs.qml
+++ b/examples/quick/dialogs/systemdialogs/FileDialogs.qml
@@ -41,6 +41,7 @@
import QtQuick 2.2
import QtQuick.Controls 1.2
import QtQuick.Dialogs 1.1
+import QtQuick.Layouts 1.1
import QtQuick.Window 2.0
Item {
@@ -72,83 +73,79 @@ Item {
}
//! [filedialog]
- Column {
- anchors.fill: parent
- anchors.margins: 12
- spacing: 8
- Text {
- color: palette.windowText
- font.bold: true
- text: "File dialog properties:"
- }
- CheckBox {
- id: fileDialogModal
- text: "Modal"
- checked: true
- Binding on checked { value: fileDialog.modality != Qt.NonModal }
- }
- CheckBox {
- id: fileDialogSelectFolder
- text: "Select Folder"
- Binding on checked { value: fileDialog.selectFolder }
- }
- CheckBox {
- id: fileDialogSelectExisting
- text: "Select Existing Files"
- checked: true
- Binding on checked { value: fileDialog.selectExisting }
- }
- CheckBox {
- id: fileDialogSelectMultiple
- text: "Select Multiple Files"
- Binding on checked { value: fileDialog.selectMultiple }
- }
- CheckBox {
- id: fileDialogOpenFiles
- text: "Open Files After Accepting"
- }
- CheckBox {
- id: fileDialogSidebarVisible
- text: "Show Sidebar"
- checked: fileDialog.sidebarVisible
- Binding on checked { value: fileDialog.sidebarVisible }
- }
- CheckBox {
- id: fileDialogVisible
- text: "Visible"
- Binding on checked { value: fileDialog.visible }
- }
- Text {
- color: palette.windowText
- text: "<b>current view folder:</b> " + fileDialog.folder
- }
- Text {
- color: palette.windowText
- text: "<b>name filters:</b> {" + fileDialog.nameFilters + "}"
- width: parent.width
- wrapMode: Text.Wrap
- }
- Text {
- color: palette.windowText
- text: "<b>current filter:</b>" + fileDialog.selectedNameFilter
- width: parent.width
- wrapMode: Text.Wrap
- }
- Text {
- color: palette.windowText
- text: "<b>chosen files:</b> " + fileDialog.fileUrls
- width: parent.width
- wrapMode: Text.Wrap
- }
- Text {
- color: palette.windowText
- text: "<b>chosen single path:</b> " + fileDialog.fileUrl
- width: parent.width
- wrapMode: Text.Wrap
+ ScrollView {
+ id: scrollView
+ anchors {
+ left: parent.left
+ right: parent.right
+ top: parent.top
+ bottom: bottomBar.top
+ leftMargin: 12
+ }
+ ColumnLayout {
+ spacing: 8
+ Item { Layout.preferredHeight: 4 } // padding
+ Label {
+ font.bold: true
+ text: "File dialog properties:"
+ }
+ CheckBox {
+ id: fileDialogModal
+ text: "Modal"
+ checked: true
+ Binding on checked { value: fileDialog.modality != Qt.NonModal }
+ }
+ CheckBox {
+ id: fileDialogSelectFolder
+ text: "Select Folder"
+ Binding on checked { value: fileDialog.selectFolder }
+ }
+ CheckBox {
+ id: fileDialogSelectExisting
+ text: "Select Existing Files"
+ checked: true
+ Binding on checked { value: fileDialog.selectExisting }
+ }
+ CheckBox {
+ id: fileDialogSelectMultiple
+ text: "Select Multiple Files"
+ Binding on checked { value: fileDialog.selectMultiple }
+ }
+ CheckBox {
+ id: fileDialogOpenFiles
+ text: "Open Files After Accepting"
+ }
+ CheckBox {
+ id: fileDialogSidebarVisible
+ text: "Show Sidebar"
+ checked: fileDialog.sidebarVisible
+ Binding on checked { value: fileDialog.sidebarVisible }
+ }
+ CheckBox {
+ id: fileDialogVisible
+ text: "Visible"
+ Binding on checked { value: fileDialog.visible }
+ }
+ Label {
+ text: "<b>current view folder:</b> " + fileDialog.folder
+ }
+ Label {
+ text: "<b>name filters:</b> {" + fileDialog.nameFilters + "}"
+ }
+ Label {
+ text: "<b>current filter:</b>" + fileDialog.selectedNameFilter
+ }
+ Label {
+ text: "<b>chosen files:</b> " + fileDialog.fileUrls
+ }
+ Label {
+ text: "<b>chosen single path:</b> " + fileDialog.fileUrl
+ }
}
}
Rectangle {
+ id: bottomBar
anchors {
left: parent.left
right: parent.right
diff --git a/examples/quick/dialogs/systemdialogs/FontDialogs.qml b/examples/quick/dialogs/systemdialogs/FontDialogs.qml
index dc8f245b..3b6f86f7 100644
--- a/examples/quick/dialogs/systemdialogs/FontDialogs.qml
+++ b/examples/quick/dialogs/systemdialogs/FontDialogs.qml
@@ -42,12 +42,11 @@ import QtQuick 2.2
import QtQuick.Controls 1.2
import QtQuick.Dialogs 1.1
-Rectangle {
+Item {
width: 320
height: 360
SystemPalette { id: palette }
clip: true
- color: palette.window
FontDialog {
id: fontDialog
@@ -70,7 +69,7 @@ Rectangle {
anchors.fill: parent
anchors.margins: 12
spacing: 8
- Text {
+ Label {
font.bold: true
text: "Font dialog properties:"
}
@@ -105,12 +104,11 @@ Rectangle {
text: "Visible"
Binding on checked { value: fontDialog.visible }
}
- Text {
+ Label {
text: "Current font:"
}
- Text {
+ Label {
id: fontLabel
- color: palette.windowText
text: "<b>" + fontDialog.font.family + " - " + fontDialog.font.pointSize + "</b>"
MouseArea {
anchors.fill: parent
diff --git a/examples/quick/dialogs/systemdialogs/MessageDialogs.qml b/examples/quick/dialogs/systemdialogs/MessageDialogs.qml
index 1bc9a4b6..208a69d4 100644
--- a/examples/quick/dialogs/systemdialogs/MessageDialogs.qml
+++ b/examples/quick/dialogs/systemdialogs/MessageDialogs.qml
@@ -41,6 +41,7 @@
import QtQuick 2.2
import QtQuick.Controls 1.2
import QtQuick.Dialogs 1.1
+import QtQuick.Layouts 1.1
import QtQuick.Window 2.0
Item {
@@ -72,211 +73,229 @@ Item {
}
//! [messagedialog]
- Column {
- anchors.fill: parent
- anchors.margins: 12
- spacing: 8
- Text {
- color: palette.windowText
- font.bold: true
- text: "Message dialog properties:"
- }
- CheckBox {
- id: messageDialogModal
- text: "Modal"
- checked: true
- Binding on checked { value: messageDialog.modality != Qt.NonModal }
- }
- CheckBox {
- id: customizeTitle
- text: "Window Title"
- checked: true
- width: parent.width
- TextField {
- id: windowTitleField
- anchors.right: parent.right
- width: informativeTextField.width
- text: "Alert"
- }
+ ScrollView {
+ id: scrollView
+ anchors {
+ left: parent.left
+ right: parent.right
+ top: parent.top
+ bottom: bottomBar.top
+ leftMargin: 12
}
- Row {
+ ColumnLayout {
spacing: 8
- property bool updating: false
- function updateIcon(icon, checked) {
- if (updating) return
- updating = true
- messageDialog.icon = (checked ? icon : StandardIcon.NoIcon)
- for (var i = 0; i < children.length; ++i)
- if (children[i].icon !== icon)
- children[i].checked = false
- updating = false
+ Item { Layout.preferredHeight: 4 } // padding
+ Label {
+ font.bold: true
+ text: "Message dialog properties:"
}
-
CheckBox {
- id: iconInformation
- text: "Information"
- property int icon: StandardIcon.Information
- onCheckedChanged: parent.updateIcon(icon, checked)
- }
-
- CheckBox {
- id: iconWarning
- text: "Warning"
+ id: messageDialogModal
+ text: "Modal"
checked: true
- property int icon: StandardIcon.Warning
- onCheckedChanged: parent.updateIcon(icon, checked)
- Component.onCompleted: parent.updateIcon(icon, true)
+ Binding on checked { value: messageDialog.modality != Qt.NonModal }
}
-
- CheckBox {
- id: iconCritical
- text: "Critical"
- property int icon: StandardIcon.Critical
- onCheckedChanged: parent.updateIcon(icon, checked)
+ RowLayout {
+ CheckBox {
+ id: customizeTitle
+ text: "Window Title"
+ Layout.alignment: Qt.AlignBaseline
+ checked: true
+ }
+ TextField {
+ id: windowTitleField
+ Layout.alignment: Qt.AlignBaseline
+ Layout.fillWidth: true
+ text: "Alert"
+ }
}
+ Label { text: "Icon:" }
+ Flow {
+ spacing: 8
+ Layout.fillWidth: true
+ property bool updating: false
+ function updateIcon(icon, checked) {
+ if (updating) return
+ updating = true
+ messageDialog.icon = (checked ? icon : StandardIcon.NoIcon)
+ for (var i = 0; i < children.length; ++i)
+ if (children[i].icon !== icon)
+ children[i].checked = false
+ updating = false
+ }
- CheckBox {
- id: iconQuestion
- text: "Question"
- property int icon: StandardIcon.Question
- onCheckedChanged: parent.updateIcon(icon, checked)
- }
- }
+ CheckBox {
+ id: iconInformation
+ text: "Information"
+ property int icon: StandardIcon.Information
+ onCheckedChanged: parent.updateIcon(icon, checked)
+ }
- CheckBox {
- id: customizeText
- text: "Primary Text"
- checked: true
- width: parent.width
- TextField {
- id: textField
- anchors.right: parent.right
- width: informativeTextField.width
- text: "Attention Please"
+ CheckBox {
+ id: iconWarning
+ text: "Warning"
+ checked: true
+ property int icon: StandardIcon.Warning
+ onCheckedChanged: parent.updateIcon(icon, checked)
+ Component.onCompleted: parent.updateIcon(icon, true)
+ }
+
+ CheckBox {
+ id: iconCritical
+ text: "Critical"
+ property int icon: StandardIcon.Critical
+ onCheckedChanged: parent.updateIcon(icon, checked)
+ }
+
+ CheckBox {
+ id: iconQuestion
+ text: "Question"
+ property int icon: StandardIcon.Question
+ onCheckedChanged: parent.updateIcon(icon, checked)
+ }
}
- }
- CheckBox {
- id: customizeInformativeText
- text: "Informative Text"
- checked: true
- width: parent.width
- TextField {
- id: informativeTextField
- anchors.right: parent.right
- width: root.width - customizeInformativeText.implicitWidth - 20
- text: "Be alert!"
+
+ RowLayout {
+ CheckBox {
+ id: customizeText
+ text: "Primary Text"
+ Layout.alignment: Qt.AlignBaseline
+ checked: true
+ }
+ TextField {
+ id: textField
+ Layout.alignment: Qt.AlignBaseline
+ Layout.fillWidth: true
+ text: "Attention Please"
+ }
}
- }
- Text {
- text: "Buttons:"
- }
- Flow {
- spacing: 8
- width: parent.width
- property bool updating: false
- function updateButtons(button, checked) {
- if (updating) return
- updating = true
- var buttons = 0
- for (var i = 0; i < children.length; ++i)
- if (children[i].checked)
- buttons |= children[i].button
- if (!buttons)
- buttons = StandardButton.Ok
- messageDialog.standardButtons = buttons
- updating = false
+ RowLayout {
+ CheckBox {
+ id: customizeInformativeText
+ text: "Informative Text"
+ Layout.alignment: Qt.AlignBaseline
+ checked: true
+ }
+ TextField {
+ id: informativeTextField
+ Layout.alignment: Qt.AlignBaseline
+ Layout.fillWidth: true
+ text: "Be alert!"
+ }
}
+ Label { text: "Buttons:" }
+ Flow {
+ spacing: 8
+ Layout.fillWidth: true
+ Layout.preferredWidth: root.width - 30
+ property bool updating: false
+ function updateButtons(button, checked) {
+ if (updating) return
+ updating = true
+ var buttons = 0
+ for (var i = 0; i < children.length; ++i)
+ if (children[i].checked)
+ buttons |= children[i].button
+ if (!buttons)
+ buttons = StandardButton.Ok
+ messageDialog.standardButtons = buttons
+ updating = false
+ }
- CheckBox {
- text: "Help"
- property int button: StandardButton.Help
- onCheckedChanged: parent.updateButtons(button, checked)
- }
+ CheckBox {
+ text: "Help"
+ property int button: StandardButton.Help
+ onCheckedChanged: parent.updateButtons(button, checked)
+ }
- CheckBox {
- text: "Abort"
- property int button: StandardButton.Abort
- onCheckedChanged: parent.updateButtons(button, checked)
- }
+ CheckBox {
+ text: "Abort"
+ property int button: StandardButton.Abort
+ onCheckedChanged: parent.updateButtons(button, checked)
+ }
- CheckBox {
- text: "Close"
- property int button: StandardButton.Close
- onCheckedChanged: parent.updateButtons(button, checked)
- }
+ CheckBox {
+ text: "Close"
+ property int button: StandardButton.Close
+ onCheckedChanged: parent.updateButtons(button, checked)
+ }
- CheckBox {
- text: "Cancel"
- property int button: StandardButton.Cancel
- onCheckedChanged: parent.updateButtons(button, checked)
- }
+ CheckBox {
+ text: "Cancel"
+ property int button: StandardButton.Cancel
+ onCheckedChanged: parent.updateButtons(button, checked)
+ }
- CheckBox {
- text: "NoToAll"
- property int button: StandardButton.NoToAll
- onCheckedChanged: parent.updateButtons(button, checked)
- }
+ CheckBox {
+ text: "NoToAll"
+ property int button: StandardButton.NoToAll
+ onCheckedChanged: parent.updateButtons(button, checked)
+ }
- CheckBox {
- text: "No"
- property int button: StandardButton.No
- onCheckedChanged: parent.updateButtons(button, checked)
- }
+ CheckBox {
+ text: "No"
+ property int button: StandardButton.No
+ onCheckedChanged: parent.updateButtons(button, checked)
+ }
- CheckBox {
- text: "YesToAll"
- property int button: StandardButton.YesToAll
- onCheckedChanged: parent.updateButtons(button, checked)
- }
+ CheckBox {
+ text: "YesToAll"
+ property int button: StandardButton.YesToAll
+ onCheckedChanged: parent.updateButtons(button, checked)
+ }
- CheckBox {
- text: "Yes"
- property int button: StandardButton.Yes
- onCheckedChanged: parent.updateButtons(button, checked)
- }
+ CheckBox {
+ text: "Yes"
+ property int button: StandardButton.Yes
+ onCheckedChanged: parent.updateButtons(button, checked)
+ }
- CheckBox {
- text: "Ignore"
- property int button: StandardButton.Ignore
- onCheckedChanged: parent.updateButtons(button, checked)
- }
+ CheckBox {
+ text: "Ignore"
+ property int button: StandardButton.Ignore
+ onCheckedChanged: parent.updateButtons(button, checked)
+ }
- CheckBox {
- text: "Retry"
- property int button: StandardButton.Retry
- onCheckedChanged: parent.updateButtons(button, checked)
- }
+ CheckBox {
+ text: "Retry"
+ property int button: StandardButton.Retry
+ onCheckedChanged: parent.updateButtons(button, checked)
+ }
+ CheckBox {
+ text: "OK"
+ checked: true
+ property int button: StandardButton.Ok
+ onCheckedChanged: parent.updateButtons(button, checked)
+ }
+ }
+ RowLayout {
+ CheckBox {
+ id: customizeDetailedText
+ text: "Detailed Text"
+ Layout.alignment: Qt.AlignBaseline
+ checked: true
+ }
+ TextField {
+ id: detailedTextField
+ Layout.alignment: Qt.AlignBaseline
+ Layout.fillWidth: true
+ text: "The world needs more lerts."
+ }
+ }
CheckBox {
- text: "OK"
- checked: true
- property int button: StandardButton.Ok
- onCheckedChanged: parent.updateButtons(button, checked)
+ id: messageDialogVisible
+ text: "Visible"
+ Binding on checked { value: messageDialog.visible }
}
- }
- CheckBox {
- id: customizeDetailedText
- text: "Detailed Text"
- checked: true
- width: parent.width
- TextField {
- id: detailedTextField
- anchors.right: parent.right
- width: informativeTextField.width
- text: "The world needs more lerts."
+ Label {
+ id: lastChosen
}
}
- CheckBox {
- id: messageDialogVisible
- text: "Visible"
- Binding on checked { value: messageDialog.visible }
- }
- Text {
- id: lastChosen
- }
}
Rectangle {
+ id: bottomBar
anchors {
left: parent.left
right: parent.right
diff --git a/examples/quick/dialogs/systemdialogs/systemdialogs.qml b/examples/quick/dialogs/systemdialogs/systemdialogs.qml
index 0c30d9e5..5e8cb786 100644
--- a/examples/quick/dialogs/systemdialogs/systemdialogs.qml
+++ b/examples/quick/dialogs/systemdialogs/systemdialogs.qml
@@ -52,23 +52,23 @@ ApplicationWindow {
anchors.margins: 8
Tab {
id: controlPage
- title: "File Dialog"
+ title: "File"
FileDialogs { }
}
Tab {
- title: "Color Dialog"
+ title: "Color"
ColorDialogs { }
}
Tab {
- title: "Font Dialog"
+ title: "Font"
FontDialogs { anchors.fill: parent }
}
Tab {
- title: "Message Dialog"
+ title: "Message"
MessageDialogs { anchors.fill:parent }
}
Tab {
- title: "Custom Dialogs"
+ title: "Custom"
CustomDialogs { anchors.fill:parent }
}
}