aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMitch Curtis <mitch.curtis@qt.io>2021-04-29 09:19:23 +0200
committerMitch Curtis <mitch.curtis@qt.io>2021-04-30 16:14:45 +0200
commitf26ff87192cd75a9fe1c92f8078c7263680caaf8 (patch)
treef94f9e4fc845e7de61f9d9baf15de5cde7dd4664 /src
parentdc68df916df2cf8576ebf2a03d35fefec30fa00d (diff)
ListView: support QList<QUrl> models
For now this patch just tacks on another list type, but there may be a better way to account for all types in the future. This change also adds tst_qquicklistview2 to speed up development. tst_QQuickListView is 10000 lines long, and compiling it is slow (36 seconds on a 2016 i7 MacBook Pro). In addition, a similar approach (creating a second test to avoid the slowness of a massive one) already exists for QQuickItem tests. Task-number: QTBUG-72906 Change-Id: I05455a2f20978b07eb38591ab63e7d0fb7dac1ab Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> (cherry picked from commit 0e3902b83dc3c59567a81a90c3f3c0365bdf68da) Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Diffstat (limited to 'src')
-rw-r--r--src/qmlmodels/qqmllistaccessor.cpp9
-rw-r--r--src/qmlmodels/qqmllistaccessor_p.h2
2 files changed, 9 insertions, 2 deletions
diff --git a/src/qmlmodels/qqmllistaccessor.cpp b/src/qmlmodels/qqmllistaccessor.cpp
index 5e3fb86510..7412dd0146 100644
--- a/src/qmlmodels/qqmllistaccessor.cpp
+++ b/src/qmlmodels/qqmllistaccessor.cpp
@@ -43,6 +43,7 @@
#include <QtCore/qstringlist.h>
#include <QtCore/qdebug.h>
+#include <QtCore/qurl.h>
// ### Remove me
#include <private/qqmlengine_p.h>
@@ -78,7 +79,9 @@ void QQmlListAccessor::setList(const QVariant &v, QQmlEngine *engine)
m_type = Invalid;
} else if (d.userType() == QMetaType::QStringList) {
m_type = StringList;
- } else if (d.userType() == QMetaType::QVariantList) {
+ } else if (d.userType() == qMetaTypeId<QList<QUrl>>()) {
+ m_type = UrlList;
+ } else if (d.userType() == qMetaTypeId<QVariantList>()) {
m_type = VariantList;
} else if (d.userType() == qMetaTypeId<QList<QObject *>>()) {
m_type = ObjectList;
@@ -120,6 +123,8 @@ qsizetype QQmlListAccessor::count() const
switch(m_type) {
case StringList:
return qvariant_cast<QStringList>(d).count();
+ case UrlList:
+ return qvariant_cast<QList<QUrl>>(d).count();
case VariantList:
return qvariant_cast<QVariantList>(d).count();
case ObjectList:
@@ -142,6 +147,8 @@ QVariant QQmlListAccessor::at(qsizetype idx) const
switch(m_type) {
case StringList:
return QVariant::fromValue(qvariant_cast<QStringList>(d).at(idx));
+ case UrlList:
+ return QVariant::fromValue(qvariant_cast<QList<QUrl>>(d).at(idx));
case VariantList:
return qvariant_cast<QVariantList>(d).at(idx);
case ObjectList:
diff --git a/src/qmlmodels/qqmllistaccessor_p.h b/src/qmlmodels/qqmllistaccessor_p.h
index 3306396b00..dba3c6d402 100644
--- a/src/qmlmodels/qqmllistaccessor_p.h
+++ b/src/qmlmodels/qqmllistaccessor_p.h
@@ -70,7 +70,7 @@ public:
qsizetype count() const;
QVariant at(qsizetype) const;
- enum Type { Invalid, StringList, VariantList, ObjectList, ListProperty, Instance, Integer };
+ enum Type { Invalid, StringList, UrlList, VariantList, ObjectList, ListProperty, Instance, Integer };
Type type() const { return m_type; }
private: