aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2016-06-17 13:32:09 +0200
committerJ-P Nurmi <jpnurmi@qt.io>2016-06-20 05:19:41 +0000
commit6a8f7b88a7a71126ac8bbf1815362351b9db954b (patch)
tree4eeedad31b31ace0d0a5caf101d19ff9c0d67239
parent47744a1d5c91cad58b94ba3cc3b886793789e870 (diff)
Add QQuickContainer::increment|decrementCurrentIndex()
[ChangeLog][Container] Added incrementCurrentIndex() and decrementCurrentIndex() methods for changing the current index without losing its property binding. Change-Id: Id44e0db5e3d0951eb77b0124a83c5eb3df898012 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
-rw-r--r--src/imports/controls/SwipeView.qml4
-rw-r--r--src/imports/controls/TabBar.qml2
-rw-r--r--src/imports/controls/material/SwipeView.qml2
-rw-r--r--src/imports/controls/material/TabBar.qml2
-rw-r--r--src/imports/controls/qtquickcontrols2plugin.cpp1
-rw-r--r--src/imports/controls/universal/TabBar.qml2
-rw-r--r--src/imports/templates/qtquicktemplates2plugin.cpp1
-rw-r--r--src/quicktemplates2/qquickcontainer.cpp32
-rw-r--r--src/quicktemplates2/qquickcontainer_p.h2
-rw-r--r--tests/auto/controls/data/tst_swipeview.qml12
-rw-r--r--tests/auto/controls/data/tst_tabbar.qml12
11 files changed, 64 insertions, 8 deletions
diff --git a/src/imports/controls/SwipeView.qml b/src/imports/controls/SwipeView.qml
index 71676f12..736d963b 100644
--- a/src/imports/controls/SwipeView.qml
+++ b/src/imports/controls/SwipeView.qml
@@ -35,8 +35,8 @@
****************************************************************************/
import QtQuick 2.6
-import QtQuick.Controls 2.0
-import QtQuick.Templates 2.0 as T
+import QtQuick.Controls 2.1
+import QtQuick.Templates 2.1 as T
T.SwipeView {
id: control
diff --git a/src/imports/controls/TabBar.qml b/src/imports/controls/TabBar.qml
index 6f3e040b..5fa81f38 100644
--- a/src/imports/controls/TabBar.qml
+++ b/src/imports/controls/TabBar.qml
@@ -35,7 +35,7 @@
****************************************************************************/
import QtQuick 2.6
-import QtQuick.Templates 2.0 as T
+import QtQuick.Templates 2.1 as T
T.TabBar {
id: control
diff --git a/src/imports/controls/material/SwipeView.qml b/src/imports/controls/material/SwipeView.qml
index 38c12b6b..92e1b8a6 100644
--- a/src/imports/controls/material/SwipeView.qml
+++ b/src/imports/controls/material/SwipeView.qml
@@ -35,7 +35,7 @@
****************************************************************************/
import QtQuick 2.6
-import QtQuick.Templates 2.0 as T
+import QtQuick.Templates 2.1 as T
T.SwipeView {
id: control
diff --git a/src/imports/controls/material/TabBar.qml b/src/imports/controls/material/TabBar.qml
index 22a80efa..e6507d31 100644
--- a/src/imports/controls/material/TabBar.qml
+++ b/src/imports/controls/material/TabBar.qml
@@ -35,7 +35,7 @@
****************************************************************************/
import QtQuick 2.6
-import QtQuick.Templates 2.0 as T
+import QtQuick.Templates 2.1 as T
import QtQuick.Controls.Material 2.0
import QtQuick.Controls.Material.impl 2.0
diff --git a/src/imports/controls/qtquickcontrols2plugin.cpp b/src/imports/controls/qtquickcontrols2plugin.cpp
index fae77543..84c17267 100644
--- a/src/imports/controls/qtquickcontrols2plugin.cpp
+++ b/src/imports/controls/qtquickcontrols2plugin.cpp
@@ -137,6 +137,7 @@ void QtQuickControls2Plugin::registerTypes(const char *uri)
// QtQuick.Controls 2.1 (Qt 5.8)
qmlRegisterType<QQuickButtonGroup,1 >(uri, 2, 1, "ButtonGroup");
+ qmlRegisterType<QQuickContainer,1>(uri, 2, 1, "Container");
qmlRegisterType(selector.select(QStringLiteral("DialogButtonBox.qml")), uri, 2, 1, "DialogButtonBox");
qmlRegisterType(selector.select(QStringLiteral("Slider.qml")), uri, 2, 1, "Slider");
qmlRegisterType(selector.select(QStringLiteral("StackView.qml")), uri, 2, 1, "StackView");
diff --git a/src/imports/controls/universal/TabBar.qml b/src/imports/controls/universal/TabBar.qml
index 7c2e83a6..d41a24a5 100644
--- a/src/imports/controls/universal/TabBar.qml
+++ b/src/imports/controls/universal/TabBar.qml
@@ -35,7 +35,7 @@
****************************************************************************/
import QtQuick 2.7
-import QtQuick.Templates 2.0 as T
+import QtQuick.Templates 2.1 as T
import QtQuick.Controls.Universal 2.0
T.TabBar {
diff --git a/src/imports/templates/qtquicktemplates2plugin.cpp b/src/imports/templates/qtquicktemplates2plugin.cpp
index eee27e50..07a4653f 100644
--- a/src/imports/templates/qtquicktemplates2plugin.cpp
+++ b/src/imports/templates/qtquicktemplates2plugin.cpp
@@ -175,6 +175,7 @@ void QtQuickTemplates2Plugin::registerTypes(const char *uri)
// QtQuick.Controls 2.1 (Qt 5.8)
qmlRegisterType<QQuickButtonGroup, 1>(uri, 2, 1, "ButtonGroup");
+ qmlRegisterType<QQuickContainer, 1>(uri, 2, 1, "Container");
qmlRegisterType<QQuickDialogButtonBox>(uri, 2, 1, "DialogButtonBox");
qmlRegisterType<QQuickDialogButtonBoxAttached>();
qmlRegisterType<QQuickSlider, 1>(uri, 2, 1, "Slider");
diff --git a/src/quicktemplates2/qquickcontainer.cpp b/src/quicktemplates2/qquickcontainer.cpp
index ff5b694b..55e27887 100644
--- a/src/quicktemplates2/qquickcontainer.cpp
+++ b/src/quicktemplates2/qquickcontainer.cpp
@@ -437,6 +437,8 @@ QQmlListProperty<QQuickItem> QQuickContainer::contentChildren()
\qmlproperty int QtQuick.Controls::Container::currentIndex
This property holds the index of the current item in the container.
+
+ \sa incrementCurrentIndex(), decrementCurrentIndex()
*/
int QQuickContainer::currentIndex() const
{
@@ -456,6 +458,36 @@ void QQuickContainer::setCurrentIndex(int index)
}
/*!
+ \qmlmethod void QtQuick.Controls::Container::incrementCurrentIndex()
+ \since QtQuick.Controls 2.1
+
+ Increments the current index of the container.
+
+ \sa currentIndex
+*/
+void QQuickContainer::incrementCurrentIndex()
+{
+ Q_D(QQuickContainer);
+ if (d->currentIndex < count() - 1)
+ setCurrentIndex(d->currentIndex + 1);
+}
+
+/*!
+ \qmlmethod void QtQuick.Controls::Container::decrementCurrentIndex()
+ \since QtQuick.Controls 2.1
+
+ Decrements the current index of the container.
+
+ \sa currentIndex
+*/
+void QQuickContainer::decrementCurrentIndex()
+{
+ Q_D(QQuickContainer);
+ if (d->currentIndex > 0)
+ setCurrentIndex(d->currentIndex - 1);
+}
+
+/*!
\qmlproperty Item QtQuick.Controls::Container::currentItem
This property holds the current item.
diff --git a/src/quicktemplates2/qquickcontainer_p.h b/src/quicktemplates2/qquickcontainer_p.h
index 2ed30b77..98873c09 100644
--- a/src/quicktemplates2/qquickcontainer_p.h
+++ b/src/quicktemplates2/qquickcontainer_p.h
@@ -86,6 +86,8 @@ public:
public Q_SLOTS:
void setCurrentIndex(int index);
+ Q_REVISION(1) void incrementCurrentIndex();
+ Q_REVISION(1) void decrementCurrentIndex();
Q_SIGNALS:
void countChanged();
diff --git a/tests/auto/controls/data/tst_swipeview.qml b/tests/auto/controls/data/tst_swipeview.qml
index 74ae12c5..b131236d 100644
--- a/tests/auto/controls/data/tst_swipeview.qml
+++ b/tests/auto/controls/data/tst_swipeview.qml
@@ -40,7 +40,7 @@
import QtQuick 2.2
import QtTest 1.0
-import QtQuick.Controls 2.0
+import QtQuick.Controls 2.1
TestCase {
id: testCase
@@ -107,6 +107,16 @@ TestCase {
compare(control.currentItem.text, "2")
compare(currentItemChangedSpy.count, 3);
+ control.decrementCurrentIndex()
+ compare(control.currentIndex, 1)
+ compare(control.currentItem.text, "1")
+ compare(currentItemChangedSpy.count, 4);
+
+ control.incrementCurrentIndex()
+ compare(control.currentIndex, 2)
+ compare(control.currentItem.text, "2")
+ compare(currentItemChangedSpy.count, 5);
+
control.destroy()
}
diff --git a/tests/auto/controls/data/tst_tabbar.qml b/tests/auto/controls/data/tst_tabbar.qml
index b46f7f00..666fc2cb 100644
--- a/tests/auto/controls/data/tst_tabbar.qml
+++ b/tests/auto/controls/data/tst_tabbar.qml
@@ -40,7 +40,7 @@
import QtQuick 2.2
import QtTest 1.0
-import QtQuick.Controls 2.0
+import QtQuick.Controls 2.1
TestCase {
id: testCase
@@ -144,6 +144,16 @@ TestCase {
compare(control.currentItem.text, "2")
compare(control.currentItem.checked, true)
+ control.decrementCurrentIndex()
+ compare(control.currentIndex, 1)
+ compare(control.currentItem.text, "1")
+ compare(control.currentItem.checked, true)
+
+ control.incrementCurrentIndex()
+ compare(control.currentIndex, 2)
+ compare(control.currentItem.text, "2")
+ compare(control.currentItem.checked, true)
+
control.destroy()
}