diff options
author | Mitch Curtis <mitch.curtis@qt.io> | 2021-04-29 09:19:23 +0200 |
---|---|---|
committer | Mitch Curtis <mitch.curtis@qt.io> | 2021-04-30 16:14:45 +0200 |
commit | f26ff87192cd75a9fe1c92f8078c7263680caaf8 (patch) | |
tree | f94f9e4fc845e7de61f9d9baf15de5cde7dd4664 /src | |
parent | dc68df916df2cf8576ebf2a03d35fefec30fa00d (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.cpp | 9 | ||||
-rw-r--r-- | src/qmlmodels/qqmllistaccessor_p.h | 2 |
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: |