aboutsummaryrefslogtreecommitdiffstats
path: root/examples/quickcontrols2
diff options
context:
space:
mode:
Diffstat (limited to 'examples/quickcontrols2')
-rw-r--r--examples/quickcontrols2/gallery/gallery.cpp1
-rw-r--r--examples/quickcontrols2/gallery/gallery.qml7
-rw-r--r--examples/quickcontrols2/gallery/pages/ComboBoxPage.qml25
-rw-r--r--examples/quickcontrols2/gallery/pages/DelayButtonPage.qml64
-rw-r--r--examples/quickcontrols2/quickcontrols2.pro2
-rw-r--r--examples/quickcontrols2/sidepanel/doc/images/qtquickcontrols2-sidepanel-landscape.pngbin0 -> 58907 bytes
-rw-r--r--examples/quickcontrols2/sidepanel/doc/images/qtquickcontrols2-sidepanel-portrait.pngbin0 -> 32492 bytes
-rw-r--r--examples/quickcontrols2/sidepanel/doc/src/qtquickcontrols2-sidepanel.qdoc81
-rw-r--r--examples/quickcontrols2/sidepanel/images/qt-logo.pngbin0 -> 2695 bytes
-rw-r--r--examples/quickcontrols2/sidepanel/images/qt-logo@2x.pngbin0 -> 5521 bytes
-rw-r--r--examples/quickcontrols2/sidepanel/images/qt-logo@3x.pngbin0 -> 8166 bytes
-rw-r--r--examples/quickcontrols2/sidepanel/images/qt-logo@4x.pngbin0 -> 11600 bytes
-rw-r--r--examples/quickcontrols2/sidepanel/sidepanel.cpp55
-rw-r--r--examples/quickcontrols2/sidepanel/sidepanel.pro13
-rw-r--r--examples/quickcontrols2/sidepanel/sidepanel.qml170
-rw-r--r--examples/quickcontrols2/swipetoremove/doc/images/qtquickcontrols2-swipetoremove.pngbin0 -> 23387 bytes
-rw-r--r--examples/quickcontrols2/swipetoremove/doc/src/qtquickcontrols2-swipetoremove.qdoc62
-rw-r--r--examples/quickcontrols2/swipetoremove/fonts/LICENSE.txt12
-rw-r--r--examples/quickcontrols2/swipetoremove/fonts/fontello.ttfbin0 -> 5164 bytes
-rw-r--r--examples/quickcontrols2/swipetoremove/swipetoremove.cpp58
-rw-r--r--examples/quickcontrols2/swipetoremove/swipetoremove.pro13
-rw-r--r--examples/quickcontrols2/swipetoremove/swipetoremove.qml167
22 files changed, 726 insertions, 4 deletions
diff --git a/examples/quickcontrols2/gallery/gallery.cpp b/examples/quickcontrols2/gallery/gallery.cpp
index bbf95a0d..02801bec 100644
--- a/examples/quickcontrols2/gallery/gallery.cpp
+++ b/examples/quickcontrols2/gallery/gallery.cpp
@@ -60,6 +60,7 @@ int main(int argc, char *argv[])
QQuickStyle::setStyle(settings.value("style").toString());
QQmlApplicationEngine engine;
+ engine.rootContext()->setContextProperty("availableStyles", QQuickStyle::availableStyles());
engine.load(QUrl("qrc:/gallery.qml"));
if (engine.rootObjects().isEmpty())
return -1;
diff --git a/examples/quickcontrols2/gallery/gallery.qml b/examples/quickcontrols2/gallery/gallery.qml
index 343ed0e2..4e2c05d6 100644
--- a/examples/quickcontrols2/gallery/gallery.qml
+++ b/examples/quickcontrols2/gallery/gallery.qml
@@ -40,7 +40,7 @@
import QtQuick 2.6
import QtQuick.Layouts 1.3
-import QtQuick.Controls 2.1
+import QtQuick.Controls 2.2
import QtQuick.Controls.Material 2.1
import QtQuick.Controls.Universal 2.1
import Qt.labs.settings 1.0
@@ -131,7 +131,7 @@ ApplicationWindow {
id: drawer
width: Math.min(window.width, window.height) / 3 * 2
height: window.height
- dragMargin: stackView.depth > 1 ? 0 : undefined
+ interactive: stackView.depth === 1
ListView {
id: listView
@@ -156,6 +156,7 @@ ApplicationWindow {
ListElement { title: "Button"; source: "qrc:/pages/ButtonPage.qml" }
ListElement { title: "CheckBox"; source: "qrc:/pages/CheckBoxPage.qml" }
ListElement { title: "ComboBox"; source: "qrc:/pages/ComboBoxPage.qml" }
+ ListElement { title: "DelayButton"; source: "qrc:/pages/DelayButtonPage.qml" }
ListElement { title: "Dial"; source: "qrc:/pages/DialPage.qml" }
ListElement { title: "Dialog"; source: "qrc:/pages/DialogPage.qml" }
ListElement { title: "Delegates"; source: "qrc:/pages/DelegatePage.qml" }
@@ -254,7 +255,7 @@ ApplicationWindow {
ComboBox {
id: styleBox
property int styleIndex: -1
- model: ["Default", "Material", "Universal"]
+ model: availableStyles
Component.onCompleted: {
styleIndex = find(settings.style, Qt.MatchFixedString)
if (styleIndex !== -1)
diff --git a/examples/quickcontrols2/gallery/pages/ComboBoxPage.qml b/examples/quickcontrols2/gallery/pages/ComboBoxPage.qml
index 65824325..6b9c45da 100644
--- a/examples/quickcontrols2/gallery/pages/ComboBoxPage.qml
+++ b/examples/quickcontrols2/gallery/pages/ComboBoxPage.qml
@@ -39,7 +39,7 @@
****************************************************************************/
import QtQuick 2.6
-import QtQuick.Controls 2.1
+import QtQuick.Controls 2.2
ScrollablePage {
id: page
@@ -60,5 +60,28 @@ ScrollablePage {
model: ["First", "Second", "Third"]
anchors.horizontalCenter: parent.horizontalCenter
}
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "ComboBox can be made \l editable. An editable combo box auto-"
+ + "completes its text based on what is available in the model."
+ }
+
+ ComboBox {
+ editable: true
+ model: ListModel {
+ id: model
+ ListElement { text: "Banana" }
+ ListElement { text: "Apple" }
+ ListElement { text: "Coconut" }
+ }
+ onAccepted: {
+ if (find(editText) === -1)
+ model.append({text: editText})
+ }
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
}
}
diff --git a/examples/quickcontrols2/gallery/pages/DelayButtonPage.qml b/examples/quickcontrols2/gallery/pages/DelayButtonPage.qml
new file mode 100644
index 00000000..f662245e
--- /dev/null
+++ b/examples/quickcontrols2/gallery/pages/DelayButtonPage.qml
@@ -0,0 +1,64 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the examples 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 The Qt Company Ltd 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.6
+import QtQuick.Controls 2.2
+
+ScrollablePage {
+ id: page
+
+ Column {
+ spacing: 40
+ width: parent.width
+
+ Label {
+ width: parent.width
+ wrapMode: Label.Wrap
+ horizontalAlignment: Qt.AlignHCenter
+ text: "DelayButton is a checkable button that incorporates a delay before the "
+ + "button is activated. This delay prevents accidental presses."
+ }
+
+ DelayButton {
+ text: "DelayButton"
+ anchors.horizontalCenter: parent.horizontalCenter
+ }
+ }
+}
diff --git a/examples/quickcontrols2/quickcontrols2.pro b/examples/quickcontrols2/quickcontrols2.pro
index f9a4a7ab..3e145a41 100644
--- a/examples/quickcontrols2/quickcontrols2.pro
+++ b/examples/quickcontrols2/quickcontrols2.pro
@@ -4,4 +4,6 @@ SUBDIRS += \
chattutorial \
texteditor \
contactlist \
+ sidepanel \
+ swipetoremove \
flatstyle
diff --git a/examples/quickcontrols2/sidepanel/doc/images/qtquickcontrols2-sidepanel-landscape.png b/examples/quickcontrols2/sidepanel/doc/images/qtquickcontrols2-sidepanel-landscape.png
new file mode 100644
index 00000000..73ad4307
--- /dev/null
+++ b/examples/quickcontrols2/sidepanel/doc/images/qtquickcontrols2-sidepanel-landscape.png
Binary files differ
diff --git a/examples/quickcontrols2/sidepanel/doc/images/qtquickcontrols2-sidepanel-portrait.png b/examples/quickcontrols2/sidepanel/doc/images/qtquickcontrols2-sidepanel-portrait.png
new file mode 100644
index 00000000..ad23add5
--- /dev/null
+++ b/examples/quickcontrols2/sidepanel/doc/images/qtquickcontrols2-sidepanel-portrait.png
Binary files differ
diff --git a/examples/quickcontrols2/sidepanel/doc/src/qtquickcontrols2-sidepanel.qdoc b/examples/quickcontrols2/sidepanel/doc/src/qtquickcontrols2-sidepanel.qdoc
new file mode 100644
index 00000000..822b25a4
--- /dev/null
+++ b/examples/quickcontrols2/sidepanel/doc/src/qtquickcontrols2-sidepanel.qdoc
@@ -0,0 +1,81 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Free Documentation License Usage
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of
+** this file. Please review the following information to ensure
+** the GNU Free Documentation License version 1.3 requirements
+** will be met: http://www.gnu.org/copyleft/fdl.html.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \example sidepanel
+ \title Qt Quick Controls 2 - Side Panel
+ \ingroup qtquickcontrols2-examples
+ \brief A non-closable persistent side panel with Drawer
+
+ This example demonstrates how \l Drawer can be used as a non-closable
+ persistent side panel.
+
+ \raw HTML
+ <div class="table"><table style="background:transparent; border:0px">
+ <tr><td style="border:0px">
+ \endraw
+ \image qtquickcontrols2-sidepanel-portrait.png
+ \caption An interactive Drawer in portrait mode
+ \raw HTML
+ </td><td style="border:0px">
+ \endraw
+ \image qtquickcontrols2-sidepanel-landscape.png
+ \caption A non-interactive Drawer in landscape mode
+ \raw HTML
+ </td></tr>
+ </table></div>
+ \endraw
+
+ When the application is in portrait mode, the drawer is an interactive
+ side panel that can be swiped open from the left edge. It appears on
+ top of the content, and blocks user interaction through its modal
+ background. When the application is in landscape mode, the drawer and
+ the content are laid out side by side.
+
+ The current orientation of the application is determined by comparing
+ the width and height of the window:
+
+ \snippet sidepanel/sidepanel.qml orientation
+
+ This is used to specify whether the drawer is \l {Popup::}{modal} and
+ \l {Drawer::}{interactive}, and to configure its \l {Drawer::}{position}
+ and \l {Popup::visible}{visibility} accordingly.
+
+ \quotefromfile sidepanel/sidepanel.qml
+ \skipto Drawer
+ \printline Drawer
+ \dots 8
+ \codeline
+ \skipto modal
+ \printuntil visible
+ \dots 8
+ \skipuntil ScrollIndicator
+ \skipuntil }
+ \printline }
+
+ \include examples-run.qdocinc
+*/
diff --git a/examples/quickcontrols2/sidepanel/images/qt-logo.png b/examples/quickcontrols2/sidepanel/images/qt-logo.png
new file mode 100644
index 00000000..90e6f905
--- /dev/null
+++ b/examples/quickcontrols2/sidepanel/images/qt-logo.png
Binary files differ
diff --git a/examples/quickcontrols2/sidepanel/images/qt-logo@2x.png b/examples/quickcontrols2/sidepanel/images/qt-logo@2x.png
new file mode 100644
index 00000000..22d111ad
--- /dev/null
+++ b/examples/quickcontrols2/sidepanel/images/qt-logo@2x.png
Binary files differ
diff --git a/examples/quickcontrols2/sidepanel/images/qt-logo@3x.png b/examples/quickcontrols2/sidepanel/images/qt-logo@3x.png
new file mode 100644
index 00000000..627746cd
--- /dev/null
+++ b/examples/quickcontrols2/sidepanel/images/qt-logo@3x.png
Binary files differ
diff --git a/examples/quickcontrols2/sidepanel/images/qt-logo@4x.png b/examples/quickcontrols2/sidepanel/images/qt-logo@4x.png
new file mode 100644
index 00000000..dc62286d
--- /dev/null
+++ b/examples/quickcontrols2/sidepanel/images/qt-logo@4x.png
Binary files differ
diff --git a/examples/quickcontrols2/sidepanel/sidepanel.cpp b/examples/quickcontrols2/sidepanel/sidepanel.cpp
new file mode 100644
index 00000000..acff3f34
--- /dev/null
+++ b/examples/quickcontrols2/sidepanel/sidepanel.cpp
@@ -0,0 +1,55 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the examples 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 The Qt Company Ltd 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 <QGuiApplication>
+#include <QQmlApplicationEngine>
+
+int main(int argc, char *argv[])
+{
+ QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
+ QGuiApplication app(argc, argv);
+
+ QQmlApplicationEngine engine;
+ engine.load(QUrl("qrc:/sidepanel.qml"));
+ if (engine.rootObjects().isEmpty())
+ return -1;
+
+ return app.exec();
+}
diff --git a/examples/quickcontrols2/sidepanel/sidepanel.pro b/examples/quickcontrols2/sidepanel/sidepanel.pro
new file mode 100644
index 00000000..e2fc4aff
--- /dev/null
+++ b/examples/quickcontrols2/sidepanel/sidepanel.pro
@@ -0,0 +1,13 @@
+TEMPLATE = app
+TARGET = sidepanel
+QT += quick
+
+SOURCES += \
+ sidepanel.cpp
+
+RESOURCES += \
+ sidepanel.qml \
+ $$files(images/*.png)
+
+target.path = $$[QT_INSTALL_EXAMPLES]/quickcontrols2/sidepanel
+INSTALLS += target
diff --git a/examples/quickcontrols2/sidepanel/sidepanel.qml b/examples/quickcontrols2/sidepanel/sidepanel.qml
new file mode 100644
index 00000000..d35356e3
--- /dev/null
+++ b/examples/quickcontrols2/sidepanel/sidepanel.qml
@@ -0,0 +1,170 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the examples 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 The Qt Company Ltd 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.6
+import QtQuick.Controls 2.2
+import QtQuick.Controls.Material 2.2
+
+ApplicationWindow {
+ id: window
+ width: 360
+ height: 520
+ visible: true
+ title: qsTr("Side Panel")
+
+ //! [orientation]
+ readonly property bool inPortrait: window.width < window.height
+ //! [orientation]
+
+ ToolBar {
+ id: overlayHeader
+
+ z: 1
+ width: parent.width
+ parent: window.overlay
+
+ Label {
+ id: label
+ anchors.centerIn: parent
+ text: "Qt Quick Controls 2"
+ }
+ }
+
+ Drawer {
+ id: drawer
+
+ y: overlayHeader.height
+ width: window.width / 2
+ height: window.height - overlayHeader.height
+
+ modal: inPortrait
+ interactive: inPortrait
+ position: inPortrait ? 0 : 1
+ visible: !inPortrait
+
+ ListView {
+ id: listView
+ anchors.fill: parent
+
+ headerPositioning: ListView.OverlayHeader
+ header: Pane {
+ id: header
+ z: 2
+ width: parent.width
+
+ contentHeight: logo.height
+
+ Image {
+ id: logo
+ width: parent.width
+ source: "images/qt-logo.png"
+ fillMode: implicitWidth > width ? Image.PreserveAspectFit : Image.Pad
+ }
+
+ MenuSeparator {
+ parent: header
+ width: parent.width
+ anchors.verticalCenter: parent.bottom
+ visible: !listView.atYBeginning
+ }
+ }
+
+ footer: ItemDelegate {
+ id: footer
+ text: qsTr("Footer")
+ width: parent.width
+
+ MenuSeparator {
+ parent: footer
+ width: parent.width
+ anchors.verticalCenter: parent.top
+ }
+ }
+
+ model: 10
+
+ delegate: ItemDelegate {
+ text: qsTr("Title %1").arg(index + 1)
+ width: parent.width
+ }
+
+ ScrollIndicator.vertical: ScrollIndicator { }
+ }
+ }
+
+ Flickable {
+ id: flickable
+
+ anchors.fill: parent
+ anchors.topMargin: overlayHeader.height
+ anchors.leftMargin: !inPortrait ? drawer.width : undefined
+
+ topMargin: 20
+ bottomMargin: 20
+ contentHeight: column.height
+
+ Column {
+ id: column
+ spacing: 20
+ anchors.margins: 20
+ anchors.left: parent.left
+ anchors.right: parent.right
+
+ Label {
+ font.pixelSize: 22
+ width: parent.width
+ elide: Label.ElideRight
+ horizontalAlignment: Qt.AlignHCenter
+ text: qsTr("Side Panel Example")
+ }
+
+ Label {
+ width: parent.width
+ wrapMode: Label.WordWrap
+ text: qsTr("This example demonstrates how Drawer can be used as a non-closable persistent side panel.\n\n" +
+ "When the application is in portrait mode, the drawer is an interactive side panel that can " +
+ "be swiped open from the left edge. When the application is in landscape mode, the drawer " +
+ "and the content are laid out side by side.\n\nThe application is currently in %1 mode.").arg(inPortrait ? qsTr("portrait") : qsTr("landscape"))
+ }
+ }
+
+ ScrollIndicator.vertical: ScrollIndicator { }
+ }
+}
diff --git a/examples/quickcontrols2/swipetoremove/doc/images/qtquickcontrols2-swipetoremove.png b/examples/quickcontrols2/swipetoremove/doc/images/qtquickcontrols2-swipetoremove.png
new file mode 100644
index 00000000..11005371
--- /dev/null
+++ b/examples/quickcontrols2/swipetoremove/doc/images/qtquickcontrols2-swipetoremove.png
Binary files differ
diff --git a/examples/quickcontrols2/swipetoremove/doc/src/qtquickcontrols2-swipetoremove.qdoc b/examples/quickcontrols2/swipetoremove/doc/src/qtquickcontrols2-swipetoremove.qdoc
new file mode 100644
index 00000000..84fd3873
--- /dev/null
+++ b/examples/quickcontrols2/swipetoremove/doc/src/qtquickcontrols2-swipetoremove.qdoc
@@ -0,0 +1,62 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see http://www.qt.io/terms-conditions. For further
+** information use the contact form at http://www.qt.io/contact-us.
+**
+** GNU Free Documentation License Usage
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of
+** this file. Please review the following information to ensure
+** the GNU Free Documentation License version 1.3 requirements
+** will be met: http://www.gnu.org/copyleft/fdl.html.
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+/*!
+ \example swipetoremove
+ \title Qt Quick Controls 2 - Swipe to Remove
+ \ingroup qtquickcontrols2-examples
+ \brief Demonstrates removing list items by swipe.
+
+ This example demonstrates how \l SwipeDelegate can be used to implement
+ removal of list items by swipe. This UI pattern is often used in touch
+ user interfaces.
+
+ \image qtquickcontrols2-swipetoremove.png
+
+ Each list item can be swiped to the left, which reveals a label on the
+ \l {SwipeDelegate::swipe}{right} side indicating that the item will be
+ removed if the swipe is completed. The following snippet contains the
+ implementation of the side item.
+
+ \snippet swipetoremove/swipetoremove.qml delegate
+
+ The following snippet presents how the logic of removing items is
+ implemented. When the swipe is \l {SwipeDelegate::swipe}{completed}, it
+ starts a timer tha waits a few seconds to let the user undo the remove
+ action. Once the undo timer triggers, the item is removed from the list:
+
+ \snippet swipetoremove/swipetoremove.qml removal
+
+ Finally, the removal of an item triggers the following transitions. The
+ \l {ListView::} {remove} transition applies to the item that is removed,
+ and the \l {ListView::}{displaced} transition applies to the other items
+ that got displaced due to the removal:
+
+ \snippet swipetoremove/swipetoremove.qml transitions
+
+ \include examples-run.qdocinc
+*/
diff --git a/examples/quickcontrols2/swipetoremove/fonts/LICENSE.txt b/examples/quickcontrols2/swipetoremove/fonts/LICENSE.txt
new file mode 100644
index 00000000..7394a58d
--- /dev/null
+++ b/examples/quickcontrols2/swipetoremove/fonts/LICENSE.txt
@@ -0,0 +1,12 @@
+Font license info
+
+
+## Elusive
+
+ Copyright (C) 2013 by Aristeides Stathopoulos
+
+ Author: Aristeides Stathopoulos
+ License: SIL (http://scripts.sil.org/OFL)
+ Homepage: http://aristeides.com/
+
+
diff --git a/examples/quickcontrols2/swipetoremove/fonts/fontello.ttf b/examples/quickcontrols2/swipetoremove/fonts/fontello.ttf
new file mode 100644
index 00000000..553fd2ef
--- /dev/null
+++ b/examples/quickcontrols2/swipetoremove/fonts/fontello.ttf
Binary files differ
diff --git a/examples/quickcontrols2/swipetoremove/swipetoremove.cpp b/examples/quickcontrols2/swipetoremove/swipetoremove.cpp
new file mode 100644
index 00000000..10a43a24
--- /dev/null
+++ b/examples/quickcontrols2/swipetoremove/swipetoremove.cpp
@@ -0,0 +1,58 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the examples 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 The Qt Company Ltd 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 <QGuiApplication>
+#include <QQmlApplicationEngine>
+#include <QFontDatabase>
+
+int main(int argc, char *argv[])
+{
+ QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
+ QGuiApplication app(argc, argv);
+
+ QFontDatabase::addApplicationFont(":/fonts/fontello.ttf");
+
+ QQmlApplicationEngine engine;
+ engine.load(QUrl("qrc:/swipetoremove.qml"));
+ if (engine.rootObjects().isEmpty())
+ return -1;
+
+ return app.exec();
+}
diff --git a/examples/quickcontrols2/swipetoremove/swipetoremove.pro b/examples/quickcontrols2/swipetoremove/swipetoremove.pro
new file mode 100644
index 00000000..8e6bd5f6
--- /dev/null
+++ b/examples/quickcontrols2/swipetoremove/swipetoremove.pro
@@ -0,0 +1,13 @@
+TEMPLATE = app
+TARGET = swipetoremove
+QT += qml
+
+SOURCES += \
+ swipetoremove.cpp
+
+RESOURCES += \
+ swipetoremove.qml \
+ fonts/fontello.ttf
+
+target.path = $$[QT_INSTALL_EXAMPLES]/quickcontrols2/swipetoremove
+INSTALLS += target
diff --git a/examples/quickcontrols2/swipetoremove/swipetoremove.qml b/examples/quickcontrols2/swipetoremove/swipetoremove.qml
new file mode 100644
index 00000000..5806423d
--- /dev/null
+++ b/examples/quickcontrols2/swipetoremove/swipetoremove.qml
@@ -0,0 +1,167 @@
+/****************************************************************************
+**
+** Copyright (C) 2016 The Qt Company Ltd.
+** Contact: http://www.qt.io/licensing/
+**
+** This file is part of the examples 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 The Qt Company Ltd 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.8
+import QtQuick.Controls 2.2
+import QtQuick.Controls.Material 2.2
+
+ApplicationWindow {
+ id: window
+ width: 300
+ height: 400
+ visible: true
+ title: qsTr("Swipe to Remove")
+
+ ListView {
+ id: listView
+ anchors.fill: parent
+
+ delegate: SwipeDelegate {
+ id: delegate
+
+ text: modelData
+ width: parent.width
+
+ //! [delegate]
+ swipe.right: Rectangle {
+ width: parent.width
+ height: parent.height
+
+ clip: true
+ color: SwipeDelegate.pressed ? "#555" : "#666"
+
+ Label {
+ font.family: "Fontello"
+ text: delegate.swipe.complete ? "\ue805" // icon-cw-circled
+ : "\ue801" // icon-cancel-circled-1
+
+ padding: 20
+ anchors.fill: parent
+ horizontalAlignment: Qt.AlignRight
+ verticalAlignment: Qt.AlignVCenter
+
+ opacity: 2 * -delegate.swipe.position
+
+ color: Material.color(delegate.swipe.complete ? Material.Green : Material.Red, Material.Shade200)
+ Behavior on color { ColorAnimation { } }
+ }
+
+ Label {
+ text: qsTr("Removed")
+ color: "white"
+
+ padding: 20
+ anchors.fill: parent
+ horizontalAlignment: Qt.AlignLeft
+ verticalAlignment: Qt.AlignVCenter
+
+ opacity: delegate.swipe.complete ? 1 : 0
+ Behavior on opacity { NumberAnimation { } }
+ }
+
+ SwipeDelegate.onClicked: delegate.swipe.close()
+ SwipeDelegate.onPressedChanged: undoTimer.stop()
+ }
+ //! [delegate]
+
+ //! [removal]
+ Timer {
+ id: undoTimer
+ interval: 3600
+ onTriggered: listModel.remove(index)
+ }
+
+ swipe.onCompleted: undoTimer.start()
+ //! [removal]
+ }
+
+ model: ListModel {
+ id: listModel
+ ListElement { text: "Lorem ipsum dolor sit amet" }
+ ListElement { text: "Curabitur sit amet risus" }
+ ListElement { text: "Suspendisse vehicula nisi" }
+ ListElement { text: "Mauris imperdiet libero" }
+ ListElement { text: "Sed vitae dui aliquet augue" }
+ ListElement { text: "Praesent in elit eu nulla" }
+ ListElement { text: "Etiam vitae magna" }
+ ListElement { text: "Pellentesque eget elit euismod" }
+ ListElement { text: "Nulla at enim porta" }
+ ListElement { text: "Fusce tincidunt odio" }
+ ListElement { text: "Ut non ex a ligula molestie" }
+ ListElement { text: "Nam vitae justo scelerisque" }
+ ListElement { text: "Vestibulum pulvinar tellus" }
+ ListElement { text: "Quisque dignissim leo sed gravida" }
+ }
+
+ //! [transitions]
+ remove: Transition {
+ SequentialAnimation {
+ PauseAnimation { duration: 125 }
+ NumberAnimation { property: "height"; to: 0; easing.type: Easing.InOutQuad }
+ }
+ }
+
+ displaced: Transition {
+ SequentialAnimation {
+ PauseAnimation { duration: 125 }
+ NumberAnimation { property: "y"; easing.type: Easing.InOutQuad }
+ }
+ }
+ //! [transitions]
+
+ ScrollIndicator.vertical: ScrollIndicator { }
+ }
+
+ Label {
+ id: placeholder
+ text: qsTr("Swipe no more")
+
+ anchors.margins: 60
+ anchors.fill: parent
+
+ opacity: 0.5
+ visible: listView.count === 0
+
+ horizontalAlignment: Qt.AlignHCenter
+ verticalAlignment: Qt.AlignVCenter
+ wrapMode: Label.WordWrap
+ font.pixelSize: 18
+ }
+}