chore(StatusQ): ListModelWrapper excluded to a separate file
This commit is contained in:
parent
a975e55271
commit
57ee01b239
|
@ -13,6 +13,8 @@ find_package(Qt5 COMPONENTS QuickTest Qml Quick WebEngine REQUIRED)
|
||||||
add_library(StatusQTestLib
|
add_library(StatusQTestLib
|
||||||
src/TestHelpers/MonitorQtOutput.cpp
|
src/TestHelpers/MonitorQtOutput.cpp
|
||||||
src/TestHelpers/MonitorQtOutput.h
|
src/TestHelpers/MonitorQtOutput.h
|
||||||
|
src/TestHelpers/listmodelwrapper.cpp
|
||||||
|
src/TestHelpers/listmodelwrapper.h
|
||||||
src/TestHelpers/modelaccessobserverproxy.cpp
|
src/TestHelpers/modelaccessobserverproxy.cpp
|
||||||
src/TestHelpers/modelaccessobserverproxy.h
|
src/TestHelpers/modelaccessobserverproxy.h
|
||||||
)
|
)
|
||||||
|
@ -55,7 +57,7 @@ target_link_libraries(LeftJoinModelTest PRIVATE Qt5::Test StatusQ)
|
||||||
add_test(NAME LeftJoinModelTest COMMAND LeftJoinModelTest)
|
add_test(NAME LeftJoinModelTest COMMAND LeftJoinModelTest)
|
||||||
|
|
||||||
add_executable(SubmodelProxyModelTest tst_SubmodelProxyModel.cpp)
|
add_executable(SubmodelProxyModelTest tst_SubmodelProxyModel.cpp)
|
||||||
target_link_libraries(SubmodelProxyModelTest PRIVATE Qt5::Qml Qt5::Test StatusQ)
|
target_link_libraries(SubmodelProxyModelTest PRIVATE Qt5::Qml Qt5::Test StatusQ StatusQTestLib)
|
||||||
add_test(NAME SubmodelProxyModelTest COMMAND SubmodelProxyModelTest)
|
add_test(NAME SubmodelProxyModelTest COMMAND SubmodelProxyModelTest)
|
||||||
|
|
||||||
add_executable(AggregatorTest tst_Aggregator.cpp)
|
add_executable(AggregatorTest tst_Aggregator.cpp)
|
||||||
|
@ -71,5 +73,5 @@ target_link_libraries(SumAggregatorTest PRIVATE Qt5::Test StatusQ)
|
||||||
add_test(NAME SumAggregatorTest COMMAND SumAggregatorTest)
|
add_test(NAME SumAggregatorTest COMMAND SumAggregatorTest)
|
||||||
|
|
||||||
add_executable(ConcatModelTest tst_ConcatModel.cpp)
|
add_executable(ConcatModelTest tst_ConcatModel.cpp)
|
||||||
target_link_libraries(ConcatModelTest PRIVATE Qt5::Qml Qt5::Test StatusQ)
|
target_link_libraries(ConcatModelTest PRIVATE Qt5::Qml Qt5::Test StatusQ StatusQTestLib)
|
||||||
add_test(NAME ConcatModelTest COMMAND ConcatModelTest)
|
add_test(NAME ConcatModelTest COMMAND ConcatModelTest)
|
||||||
|
|
|
@ -3,8 +3,8 @@
|
||||||
|
|
||||||
#include <QtWebEngine>
|
#include <QtWebEngine>
|
||||||
|
|
||||||
#include "TestHelpers/MonitorQtOutput.h"
|
#include <TestHelpers/MonitorQtOutput.h>
|
||||||
#include "TestHelpers/modelaccessobserverproxy.h"
|
#include <TestHelpers/modelaccessobserverproxy.h>
|
||||||
|
|
||||||
class RunBeforeQApplicationIsInitialized {
|
class RunBeforeQApplicationIsInitialized {
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -0,0 +1,118 @@
|
||||||
|
#include "listmodelwrapper.h"
|
||||||
|
|
||||||
|
#include <QAbstractItemModel>
|
||||||
|
#include <QJsonArray>
|
||||||
|
#include <QJsonDocument>
|
||||||
|
#include <QJsonObject>
|
||||||
|
#include <QQmlComponent>
|
||||||
|
#include <QQmlEngine>
|
||||||
|
#include <QQmlExpression>
|
||||||
|
|
||||||
|
ListModelWrapper::ListModelWrapper(QQmlEngine& engine, const QString& content)
|
||||||
|
{
|
||||||
|
QQmlComponent component(&engine);
|
||||||
|
auto componentBody = QStringLiteral(R"(
|
||||||
|
import QtQml 2.15
|
||||||
|
import QtQml.Models 2.15
|
||||||
|
|
||||||
|
ListModel {
|
||||||
|
Component.onCompleted: {
|
||||||
|
const content = %1
|
||||||
|
|
||||||
|
if (content.length)
|
||||||
|
append(content)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)").arg(content);
|
||||||
|
|
||||||
|
component.setData(componentBody.toUtf8(), {});
|
||||||
|
|
||||||
|
m_model.reset(qobject_cast<QAbstractItemModel*>(
|
||||||
|
component.create(engine.rootContext())));
|
||||||
|
}
|
||||||
|
|
||||||
|
ListModelWrapper::ListModelWrapper(QQmlEngine& engine, const QJsonArray& content)
|
||||||
|
: ListModelWrapper(engine, QJsonDocument(content).toJson())
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
QAbstractItemModel* ListModelWrapper::model() const
|
||||||
|
{
|
||||||
|
return m_model.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
ListModelWrapper::operator QAbstractItemModel*() const
|
||||||
|
{
|
||||||
|
return model();
|
||||||
|
}
|
||||||
|
|
||||||
|
int ListModelWrapper::count() const
|
||||||
|
{
|
||||||
|
return m_model->rowCount();
|
||||||
|
}
|
||||||
|
|
||||||
|
int ListModelWrapper::role(const QString& roleName)
|
||||||
|
{
|
||||||
|
QHash<int, QByteArray> roleNames = m_model->roleNames();
|
||||||
|
QList<int> roles = roleNames.keys(roleName.toUtf8());
|
||||||
|
|
||||||
|
return roles.length() != 1 ? -1 : roles.first();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ListModelWrapper::set(int index, const QJsonObject& dict)
|
||||||
|
{
|
||||||
|
QString jsonDict = QJsonDocument(dict).toJson();
|
||||||
|
runExpression(QString("set(%1, %2)").arg(index).arg(jsonDict));
|
||||||
|
}
|
||||||
|
|
||||||
|
void ListModelWrapper::setProperty(int index, const QString& property,
|
||||||
|
const QVariant& value)
|
||||||
|
{
|
||||||
|
QString valueStr = value.type() == QVariant::String
|
||||||
|
? QString("'%1'").arg(value.toString())
|
||||||
|
: value.toString();
|
||||||
|
|
||||||
|
runExpression(QString("setProperty(%1, '%2', %3)").arg(index)
|
||||||
|
.arg(property, valueStr));
|
||||||
|
}
|
||||||
|
|
||||||
|
QVariant ListModelWrapper::get(int index, const QString& roleName)
|
||||||
|
{
|
||||||
|
auto role = this->role(roleName);
|
||||||
|
|
||||||
|
if (role == -1)
|
||||||
|
return {};
|
||||||
|
|
||||||
|
return m_model->data(m_model->index(index, 0), role);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ListModelWrapper::insert(int index, const QJsonObject& dict) {
|
||||||
|
QString jsonDict = QJsonDocument(dict).toJson();
|
||||||
|
runExpression(QString("insert(%1, %2)").arg(index).arg(jsonDict));
|
||||||
|
}
|
||||||
|
|
||||||
|
void ListModelWrapper::append(const QJsonArray& data) {
|
||||||
|
QString jsonData = QJsonDocument(data).toJson();
|
||||||
|
runExpression(QString("append(%1)").arg(jsonData));
|
||||||
|
}
|
||||||
|
|
||||||
|
void ListModelWrapper::clear() {
|
||||||
|
runExpression(QString("clear()"));
|
||||||
|
}
|
||||||
|
|
||||||
|
void ListModelWrapper::remove(int index, int count) {
|
||||||
|
runExpression(QString("remove(%1, %2)").arg(QString::number(index),
|
||||||
|
QString::number(count)));
|
||||||
|
}
|
||||||
|
|
||||||
|
void ListModelWrapper::move(int from, int to, int n) {
|
||||||
|
runExpression(QString("move(%1, %2, %3)").arg(QString::number(from),
|
||||||
|
QString::number(to),
|
||||||
|
QString::number(n)));
|
||||||
|
}
|
||||||
|
|
||||||
|
void ListModelWrapper::runExpression(const QString& expression)
|
||||||
|
{
|
||||||
|
QQmlExpression(QQmlEngine::contextForObject(m_model.get()),
|
||||||
|
m_model.get(), expression).evaluate();
|
||||||
|
}
|
|
@ -0,0 +1,37 @@
|
||||||
|
#include <QVariant>
|
||||||
|
|
||||||
|
#include <memory>
|
||||||
|
|
||||||
|
class QJsonArray;
|
||||||
|
class QJsonObject;
|
||||||
|
class QQmlEngine;
|
||||||
|
class QAbstractItemModel;
|
||||||
|
|
||||||
|
class ListModelWrapper {
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit ListModelWrapper(QQmlEngine& engine, const QString& content = "[]");
|
||||||
|
explicit ListModelWrapper(QQmlEngine& engine, const QJsonArray& content);
|
||||||
|
|
||||||
|
QAbstractItemModel* model() const;
|
||||||
|
operator QAbstractItemModel*() const;
|
||||||
|
|
||||||
|
int count() const;
|
||||||
|
int role(const QString& roleName);
|
||||||
|
|
||||||
|
void set(int index, const QJsonObject& dict);
|
||||||
|
void setProperty(int index, const QString& property, const QVariant& value);
|
||||||
|
|
||||||
|
QVariant get(int index, const QString& roleName);
|
||||||
|
|
||||||
|
void insert(int index, const QJsonObject& dict);
|
||||||
|
void append(const QJsonArray& data);
|
||||||
|
void clear();
|
||||||
|
void remove(int index, int count = 1);
|
||||||
|
void move(int from, int to, int n = 1);
|
||||||
|
|
||||||
|
private:
|
||||||
|
void runExpression(const QString& expression);
|
||||||
|
|
||||||
|
std::unique_ptr<QAbstractItemModel> m_model;
|
||||||
|
};
|
|
@ -1,20 +1,15 @@
|
||||||
#include <QIdentityProxyModel>
|
#include <QIdentityProxyModel>
|
||||||
|
#include <QJsonArray>
|
||||||
|
#include <QJsonObject>
|
||||||
|
#include <QQmlEngine>
|
||||||
#include <QSignalSpy>
|
#include <QSignalSpy>
|
||||||
#include <QTest>
|
#include <QTest>
|
||||||
|
|
||||||
#include <QJsonArray>
|
|
||||||
#include <QJsonDocument>
|
|
||||||
#include <QJsonObject>
|
|
||||||
#include <QQmlComponent>
|
|
||||||
#include <QQmlContext>
|
|
||||||
#include <QQmlEngine>
|
|
||||||
#include <QQmlExpression>
|
|
||||||
|
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <set>
|
#include <set>
|
||||||
#include <string>
|
|
||||||
|
|
||||||
#include <StatusQ/concatmodel.h>
|
#include <StatusQ/concatmodel.h>
|
||||||
|
#include <TestHelpers/listmodelwrapper.h>
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
// Workaround for https://bugreports.qt.io/browse/QTBUG-57971 (ListModel doesn't
|
// Workaround for https://bugreports.qt.io/browse/QTBUG-57971 (ListModel doesn't
|
||||||
|
@ -29,116 +24,6 @@ public:
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
class ListModelWrapper {
|
|
||||||
|
|
||||||
public:
|
|
||||||
explicit ListModelWrapper(QQmlEngine& engine, const QString& content = "[]")
|
|
||||||
{
|
|
||||||
QQmlComponent component(&engine);
|
|
||||||
auto componentBody = QStringLiteral(R"(
|
|
||||||
import QtQml 2.15
|
|
||||||
import QtQml.Models 2.15
|
|
||||||
|
|
||||||
ListModel {
|
|
||||||
Component.onCompleted: {
|
|
||||||
const content = %1
|
|
||||||
|
|
||||||
if (content.length)
|
|
||||||
append(content)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)").arg(content);
|
|
||||||
|
|
||||||
component.setData(componentBody.toUtf8(), {});
|
|
||||||
|
|
||||||
m_model.reset(qobject_cast<QAbstractItemModel*>(
|
|
||||||
component.create(engine.rootContext())));
|
|
||||||
}
|
|
||||||
|
|
||||||
explicit ListModelWrapper(QQmlEngine& engine, const QJsonArray& content)
|
|
||||||
: ListModelWrapper(engine, QJsonDocument(content).toJson())
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
QAbstractItemModel* model() const
|
|
||||||
{
|
|
||||||
return m_model.get();
|
|
||||||
}
|
|
||||||
|
|
||||||
int count() const
|
|
||||||
{
|
|
||||||
return m_model->rowCount();
|
|
||||||
}
|
|
||||||
|
|
||||||
int role(const QString& roleName)
|
|
||||||
{
|
|
||||||
QHash<int, QByteArray> roleNames = m_model->roleNames();
|
|
||||||
QList<int> roles = roleNames.keys(roleName.toUtf8());
|
|
||||||
|
|
||||||
return roles.length() != 1 ? -1 : roles.first();
|
|
||||||
}
|
|
||||||
|
|
||||||
void set(int index, const QJsonObject& dict)
|
|
||||||
{
|
|
||||||
QString jsonDict = QJsonDocument(dict).toJson();
|
|
||||||
runExpression(QString("set(%1, %2)").arg(index).arg(jsonDict));
|
|
||||||
}
|
|
||||||
|
|
||||||
void setProperty(int index, const QString& property, const QVariant& value)
|
|
||||||
{
|
|
||||||
QString valueStr = value.type() == QVariant::String
|
|
||||||
? QString("'%1'").arg(value.toString())
|
|
||||||
: value.toString();
|
|
||||||
|
|
||||||
runExpression(QString("setProperty(%1, '%2', %3)").arg(index)
|
|
||||||
.arg(property, valueStr));
|
|
||||||
}
|
|
||||||
|
|
||||||
QVariant get(int index, const QString& roleName)
|
|
||||||
{
|
|
||||||
auto role = this->role(roleName);
|
|
||||||
|
|
||||||
if (role == -1)
|
|
||||||
return {};
|
|
||||||
|
|
||||||
return m_model->data(m_model->index(index, 0), role);
|
|
||||||
}
|
|
||||||
|
|
||||||
void insert(int index, const QJsonObject& dict) {
|
|
||||||
QString jsonDict = QJsonDocument(dict).toJson();
|
|
||||||
runExpression(QString("insert(%1, %2)").arg(index).arg(jsonDict));
|
|
||||||
}
|
|
||||||
|
|
||||||
void append(const QJsonArray& data) {
|
|
||||||
QString jsonData = QJsonDocument(data).toJson();
|
|
||||||
runExpression(QString("append(%1)").arg(jsonData));
|
|
||||||
}
|
|
||||||
|
|
||||||
void clear() {
|
|
||||||
runExpression(QString("clear()"));
|
|
||||||
}
|
|
||||||
|
|
||||||
void remove(int index, int count = 1) {
|
|
||||||
runExpression(QString("remove(%1, %2)").arg(QString::number(index),
|
|
||||||
QString::number(count)));
|
|
||||||
}
|
|
||||||
|
|
||||||
void move(int from, int to, int n = 1) {
|
|
||||||
runExpression(QString("move(%1, %2, %3)").arg(QString::number(from),
|
|
||||||
QString::number(to),
|
|
||||||
QString::number(n)));
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
void runExpression(const QString& expression)
|
|
||||||
{
|
|
||||||
QQmlExpression(QQmlEngine::contextForObject(m_model.get()),
|
|
||||||
m_model.get(), expression).evaluate();
|
|
||||||
}
|
|
||||||
|
|
||||||
std::unique_ptr<QAbstractItemModel> m_model;
|
|
||||||
};
|
|
||||||
|
|
||||||
} // unnamed namespace
|
} // unnamed namespace
|
||||||
|
|
||||||
class TestConcatModel: public QObject
|
class TestConcatModel: public QObject
|
||||||
|
@ -181,16 +66,16 @@ private slots:
|
||||||
QQmlListProperty<SourceModel> sources = model.sources();
|
QQmlListProperty<SourceModel> sources = model.sources();
|
||||||
|
|
||||||
SourceModel source1;
|
SourceModel source1;
|
||||||
source1.setModel(sourceModel1.model());
|
source1.setModel(sourceModel1);
|
||||||
|
|
||||||
SourceModel source2;
|
SourceModel source2;
|
||||||
source2.setModel(sourceModel2.model());
|
source2.setModel(sourceModel2);
|
||||||
|
|
||||||
SourceModel source3;
|
SourceModel source3;
|
||||||
source3.setModel(sourceModel3.model());
|
source3.setModel(sourceModel3);
|
||||||
|
|
||||||
SourceModel source4;
|
SourceModel source4;
|
||||||
source4.setModel(sourceModel4.model());
|
source4.setModel(sourceModel4);
|
||||||
|
|
||||||
sources.append(&sources, &source1);
|
sources.append(&sources, &source1);
|
||||||
sources.append(&sources, &source2);
|
sources.append(&sources, &source2);
|
||||||
|
@ -258,13 +143,13 @@ private slots:
|
||||||
QCOMPARE(model.data(model.index(0, 0), roleOutOfRange), {});
|
QCOMPARE(model.data(model.index(0, 0), roleOutOfRange), {});
|
||||||
|
|
||||||
// getting source model and source model row
|
// getting source model and source model row
|
||||||
QCOMPARE(model.sourceModel(0), sourceModel1.model());
|
QCOMPARE(model.sourceModel(0), sourceModel1);
|
||||||
QCOMPARE(model.sourceModel(1), sourceModel1.model());
|
QCOMPARE(model.sourceModel(1), sourceModel1);
|
||||||
QCOMPARE(model.sourceModel(2), sourceModel1.model());
|
QCOMPARE(model.sourceModel(2), sourceModel1);
|
||||||
QCOMPARE(model.sourceModel(3), sourceModel3.model());
|
QCOMPARE(model.sourceModel(3), sourceModel3);
|
||||||
QCOMPARE(model.sourceModel(4), sourceModel3.model());
|
QCOMPARE(model.sourceModel(4), sourceModel3);
|
||||||
QCOMPARE(model.sourceModel(5), sourceModel3.model());
|
QCOMPARE(model.sourceModel(5), sourceModel3);
|
||||||
QCOMPARE(model.sourceModel(6), sourceModel3.model());
|
QCOMPARE(model.sourceModel(6), sourceModel3);
|
||||||
QCOMPARE(model.sourceModel(7), nullptr);
|
QCOMPARE(model.sourceModel(7), nullptr);
|
||||||
QCOMPARE(model.sourceModel(-1), nullptr);
|
QCOMPARE(model.sourceModel(-1), nullptr);
|
||||||
|
|
||||||
|
@ -281,17 +166,17 @@ private slots:
|
||||||
// getting row by source model source model row
|
// getting row by source model source model row
|
||||||
QCOMPARE(model.fromSourceRow(nullptr, 0), -1);
|
QCOMPARE(model.fromSourceRow(nullptr, 0), -1);
|
||||||
|
|
||||||
QCOMPARE(model.fromSourceRow(sourceModel1.model(), 0), 0);
|
QCOMPARE(model.fromSourceRow(sourceModel1, 0), 0);
|
||||||
QCOMPARE(model.fromSourceRow(sourceModel1.model(), 1), 1);
|
QCOMPARE(model.fromSourceRow(sourceModel1, 1), 1);
|
||||||
QCOMPARE(model.fromSourceRow(sourceModel1.model(), 2), 2);
|
QCOMPARE(model.fromSourceRow(sourceModel1, 2), 2);
|
||||||
QCOMPARE(model.fromSourceRow(sourceModel1.model(), 3), -1);
|
QCOMPARE(model.fromSourceRow(sourceModel1, 3), -1);
|
||||||
QCOMPARE(model.fromSourceRow(sourceModel1.model(), -1), -1);
|
QCOMPARE(model.fromSourceRow(sourceModel1, -1), -1);
|
||||||
QCOMPARE(model.fromSourceRow(sourceModel2.model(), 0), -1);
|
QCOMPARE(model.fromSourceRow(sourceModel2, 0), -1);
|
||||||
QCOMPARE(model.fromSourceRow(sourceModel3.model(), 0), 3);
|
QCOMPARE(model.fromSourceRow(sourceModel3, 0), 3);
|
||||||
QCOMPARE(model.fromSourceRow(sourceModel3.model(), 1), 4);
|
QCOMPARE(model.fromSourceRow(sourceModel3, 1), 4);
|
||||||
QCOMPARE(model.fromSourceRow(sourceModel3.model(), 2), 5);
|
QCOMPARE(model.fromSourceRow(sourceModel3, 2), 5);
|
||||||
QCOMPARE(model.fromSourceRow(sourceModel3.model(), 3), 6);
|
QCOMPARE(model.fromSourceRow(sourceModel3, 3), 6);
|
||||||
QCOMPARE(model.fromSourceRow(sourceModel3.model(), 4), -1);
|
QCOMPARE(model.fromSourceRow(sourceModel3, 4), -1);
|
||||||
}
|
}
|
||||||
|
|
||||||
void dataChangeTest()
|
void dataChangeTest()
|
||||||
|
@ -319,16 +204,16 @@ private slots:
|
||||||
QQmlListProperty<SourceModel> sources = model.sources();
|
QQmlListProperty<SourceModel> sources = model.sources();
|
||||||
|
|
||||||
SourceModel source1;
|
SourceModel source1;
|
||||||
source1.setModel(sourceModel1.model());
|
source1.setModel(sourceModel1);
|
||||||
|
|
||||||
SourceModel source2;
|
SourceModel source2;
|
||||||
source2.setModel(sourceModel2.model());
|
source2.setModel(sourceModel2);
|
||||||
|
|
||||||
SourceModel source3;
|
SourceModel source3;
|
||||||
source3.setModel(sourceModel3.model());
|
source3.setModel(sourceModel3);
|
||||||
|
|
||||||
SourceModel source4;
|
SourceModel source4;
|
||||||
source4.setModel(sourceModel4.model());
|
source4.setModel(sourceModel4);
|
||||||
|
|
||||||
sources.append(&sources, &source1);
|
sources.append(&sources, &source1);
|
||||||
sources.append(&sources, &source2);
|
sources.append(&sources, &source2);
|
||||||
|
@ -470,8 +355,8 @@ private slots:
|
||||||
QQmlListProperty<SourceModel> sources = model.sources();
|
QQmlListProperty<SourceModel> sources = model.sources();
|
||||||
|
|
||||||
SourceModel source1, source2;
|
SourceModel source1, source2;
|
||||||
source1.setModel(sourceModel1.model());
|
source1.setModel(sourceModel1);
|
||||||
source2.setModel(sourceModel2.model());
|
source2.setModel(sourceModel2);
|
||||||
|
|
||||||
sources.append(&sources, &source1);
|
sources.append(&sources, &source1);
|
||||||
sources.append(&sources, &source2);
|
sources.append(&sources, &source2);
|
||||||
|
@ -521,16 +406,16 @@ private slots:
|
||||||
QQmlListProperty<SourceModel> sources = model.sources();
|
QQmlListProperty<SourceModel> sources = model.sources();
|
||||||
|
|
||||||
SourceModel source1;
|
SourceModel source1;
|
||||||
source1.setModel(sourceModel1.model());
|
source1.setModel(sourceModel1);
|
||||||
|
|
||||||
SourceModel source2;
|
SourceModel source2;
|
||||||
source2.setModel(sourceModel2.model());
|
source2.setModel(sourceModel2);
|
||||||
|
|
||||||
SourceModel source3;
|
SourceModel source3;
|
||||||
source3.setModel(sourceModel3.model());
|
source3.setModel(sourceModel3);
|
||||||
|
|
||||||
SourceModel source4;
|
SourceModel source4;
|
||||||
source4.setModel(sourceModel4.model());
|
source4.setModel(sourceModel4);
|
||||||
|
|
||||||
sources.append(&sources, &source1);
|
sources.append(&sources, &source1);
|
||||||
sources.append(&sources, &source2);
|
sources.append(&sources, &source2);
|
||||||
|
@ -690,10 +575,10 @@ private slots:
|
||||||
QQmlListProperty<SourceModel> sources = model.sources();
|
QQmlListProperty<SourceModel> sources = model.sources();
|
||||||
|
|
||||||
SourceModel source1;
|
SourceModel source1;
|
||||||
source1.setModel(sourceModel1.model());
|
source1.setModel(sourceModel1);
|
||||||
|
|
||||||
SourceModel source2;
|
SourceModel source2;
|
||||||
source2.setModel(sourceModel2.model());
|
source2.setModel(sourceModel2);
|
||||||
|
|
||||||
sources.append(&sources, &source1);
|
sources.append(&sources, &source1);
|
||||||
sources.append(&sources, &source2);
|
sources.append(&sources, &source2);
|
||||||
|
@ -814,7 +699,7 @@ private slots:
|
||||||
connect(&model, &ConcatModel::rowsAboutToBeInserted, &context,
|
connect(&model, &ConcatModel::rowsAboutToBeInserted, &context,
|
||||||
[&model] { QCOMPARE(model.rowCount(), 0); });
|
[&model] { QCOMPARE(model.rowCount(), 0); });
|
||||||
|
|
||||||
source1.setModel(sourceModel1.model());
|
source1.setModel(sourceModel1);
|
||||||
}
|
}
|
||||||
|
|
||||||
QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1);
|
QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1);
|
||||||
|
@ -846,7 +731,7 @@ private slots:
|
||||||
connect(&model, &ConcatModel::rowsAboutToBeInserted, &context,
|
connect(&model, &ConcatModel::rowsAboutToBeInserted, &context,
|
||||||
[&model] { QCOMPARE(model.rowCount(), 2); });
|
[&model] { QCOMPARE(model.rowCount(), 2); });
|
||||||
|
|
||||||
source2.setModel(sourceModel2.model());
|
source2.setModel(sourceModel2);
|
||||||
}
|
}
|
||||||
|
|
||||||
QCOMPARE(rowsInsertedSpy.count(), 1);
|
QCOMPARE(rowsInsertedSpy.count(), 1);
|
||||||
|
@ -888,8 +773,8 @@ private slots:
|
||||||
|
|
||||||
model.componentComplete();
|
model.componentComplete();
|
||||||
|
|
||||||
source1.setModel(sourceModel1.model());
|
source1.setModel(sourceModel1);
|
||||||
source2.setModel(sourceModel2.model());
|
source2.setModel(sourceModel2);
|
||||||
|
|
||||||
QCOMPARE(model.rowCount(), 0);
|
QCOMPARE(model.rowCount(), 0);
|
||||||
QCOMPARE(model.roleNames(), {});
|
QCOMPARE(model.roleNames(), {});
|
||||||
|
@ -986,7 +871,7 @@ private slots:
|
||||||
|
|
||||||
SourceModel source1, source2, source3;
|
SourceModel source1, source2, source3;
|
||||||
|
|
||||||
source1.setModel(sourceModel1.model());
|
source1.setModel(sourceModel1);
|
||||||
|
|
||||||
sources.append(&sources, &source1);
|
sources.append(&sources, &source1);
|
||||||
sources.append(&sources, &source2);
|
sources.append(&sources, &source2);
|
||||||
|
@ -1012,7 +897,7 @@ private slots:
|
||||||
connect(&model, &ConcatModel::rowsAboutToBeInserted, &context,
|
connect(&model, &ConcatModel::rowsAboutToBeInserted, &context,
|
||||||
[&model] { QCOMPARE(model.rowCount(), 2); });
|
[&model] { QCOMPARE(model.rowCount(), 2); });
|
||||||
|
|
||||||
source2.setModel(sourceModel2.model());
|
source2.setModel(sourceModel2);
|
||||||
}
|
}
|
||||||
|
|
||||||
QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1);
|
QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1);
|
||||||
|
@ -1048,7 +933,7 @@ private slots:
|
||||||
connect(&model, &ConcatModel::rowsAboutToBeInserted, &context,
|
connect(&model, &ConcatModel::rowsAboutToBeInserted, &context,
|
||||||
[&model] { QCOMPARE(model.rowCount(), 4); });
|
[&model] { QCOMPARE(model.rowCount(), 4); });
|
||||||
|
|
||||||
source3.setModel(sourceModel3.model());
|
source3.setModel(sourceModel3);
|
||||||
}
|
}
|
||||||
|
|
||||||
QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1);
|
QCOMPARE(rowsAboutToBeInsertedSpy.count(), 1);
|
||||||
|
@ -1096,9 +981,9 @@ private slots:
|
||||||
|
|
||||||
SourceModel source1, source2, source3;
|
SourceModel source1, source2, source3;
|
||||||
|
|
||||||
source1.setModel(sourceModel1.model());
|
source1.setModel(sourceModel1);
|
||||||
source2.setModel(sourceModel2.model());
|
source2.setModel(sourceModel2);
|
||||||
source3.setModel(sourceModel3.model());
|
source3.setModel(sourceModel3);
|
||||||
|
|
||||||
sources.append(&sources, &source1);
|
sources.append(&sources, &source1);
|
||||||
sources.append(&sources, &source2);
|
sources.append(&sources, &source2);
|
||||||
|
@ -1235,9 +1120,9 @@ private slots:
|
||||||
|
|
||||||
SourceModel source1, source2, source3;
|
SourceModel source1, source2, source3;
|
||||||
|
|
||||||
source1.setModel(sourceModel1.model());
|
source1.setModel(sourceModel1);
|
||||||
source2.setModel(sourceModel2.model());
|
source2.setModel(sourceModel2);
|
||||||
source3.setModel(sourceModel3.model());
|
source3.setModel(sourceModel3);
|
||||||
|
|
||||||
sources.append(&sources, &source1);
|
sources.append(&sources, &source1);
|
||||||
sources.append(&sources, &source2);
|
sources.append(&sources, &source2);
|
||||||
|
@ -1271,7 +1156,7 @@ private slots:
|
||||||
connect(&model, &ConcatModel::rowsAboutToBeInserted, &context,
|
connect(&model, &ConcatModel::rowsAboutToBeInserted, &context,
|
||||||
[&model] { QCOMPARE(model.rowCount(), 4); });
|
[&model] { QCOMPARE(model.rowCount(), 4); });
|
||||||
|
|
||||||
source2.setModel(sourceModel4.model());
|
source2.setModel(sourceModel4);
|
||||||
}
|
}
|
||||||
|
|
||||||
QCOMPARE(model.rowCount(), 7);
|
QCOMPARE(model.rowCount(), 7);
|
||||||
|
@ -1358,9 +1243,9 @@ private slots:
|
||||||
|
|
||||||
SourceModel source1, source2, source3;
|
SourceModel source1, source2, source3;
|
||||||
|
|
||||||
source1.setModel(sourceModel1.model());
|
source1.setModel(sourceModel1);
|
||||||
source2.setModel(sourceModel2->model());
|
source2.setModel(*sourceModel2);
|
||||||
source3.setModel(sourceModel3.model());
|
source3.setModel(sourceModel3);
|
||||||
|
|
||||||
sources.append(&sources, &source1);
|
sources.append(&sources, &source1);
|
||||||
sources.append(&sources, &source2);
|
sources.append(&sources, &source2);
|
||||||
|
@ -1425,9 +1310,9 @@ private slots:
|
||||||
|
|
||||||
SourceModel source1, source2, source3;
|
SourceModel source1, source2, source3;
|
||||||
|
|
||||||
source1.setModel(sourceModel1.model());
|
source1.setModel(sourceModel1);
|
||||||
source2.setModel(sourceModel2.model());
|
source2.setModel(sourceModel2);
|
||||||
source3.setModel(sourceModel3.model());
|
source3.setModel(sourceModel3);
|
||||||
|
|
||||||
sources.append(&sources, &source1);
|
sources.append(&sources, &source1);
|
||||||
sources.append(&sources, &source2);
|
sources.append(&sources, &source2);
|
||||||
|
@ -1502,9 +1387,9 @@ private slots:
|
||||||
|
|
||||||
SourceModel source1, source2, source3;
|
SourceModel source1, source2, source3;
|
||||||
|
|
||||||
source1.setModel(sourceModel1.model());
|
source1.setModel(sourceModel1);
|
||||||
source2.setModel(sourceModel2.model());
|
source2.setModel(sourceModel2);
|
||||||
source3.setModel(sourceModel3.model());
|
source3.setModel(sourceModel3);
|
||||||
|
|
||||||
sources.append(&sources, &source1);
|
sources.append(&sources, &source1);
|
||||||
sources.append(&sources, &source2);
|
sources.append(&sources, &source2);
|
||||||
|
@ -1573,8 +1458,8 @@ private slots:
|
||||||
|
|
||||||
SourceModel source1, source2, source3;
|
SourceModel source1, source2, source3;
|
||||||
|
|
||||||
source1.setModel(sourceModel1.model());
|
source1.setModel(sourceModel1);
|
||||||
source2.setModel(sourceModel2.model());
|
source2.setModel(sourceModel2);
|
||||||
|
|
||||||
sources.append(&sources, &source1);
|
sources.append(&sources, &source1);
|
||||||
sources.append(&sources, &source2);
|
sources.append(&sources, &source2);
|
||||||
|
@ -1626,9 +1511,9 @@ private slots:
|
||||||
|
|
||||||
IdentityModel proxy1, proxy2, proxy3;
|
IdentityModel proxy1, proxy2, proxy3;
|
||||||
|
|
||||||
proxy1.setSourceModel(sourceModel1.model());
|
proxy1.setSourceModel(sourceModel1);
|
||||||
proxy2.setSourceModel(sourceModel2.model());
|
proxy2.setSourceModel(sourceModel2);
|
||||||
proxy3.setSourceModel(sourceModel3.model());
|
proxy3.setSourceModel(sourceModel3);
|
||||||
|
|
||||||
source1.setModel(&proxy1);
|
source1.setModel(&proxy1);
|
||||||
source2.setModel(&proxy2);
|
source2.setModel(&proxy2);
|
||||||
|
@ -1654,7 +1539,7 @@ private slots:
|
||||||
QSignalSpy rowsAboutToBeInsertedSpy(&model, &ConcatModel::rowsAboutToBeInserted);
|
QSignalSpy rowsAboutToBeInsertedSpy(&model, &ConcatModel::rowsAboutToBeInserted);
|
||||||
QSignalSpy rowsInsertedSpy(&model, &ConcatModel::rowsInserted);
|
QSignalSpy rowsInsertedSpy(&model, &ConcatModel::rowsInserted);
|
||||||
|
|
||||||
proxy2.setSourceModel(sourceModel4.model());
|
proxy2.setSourceModel(sourceModel4);
|
||||||
|
|
||||||
QCOMPARE(modelAboutToBeResetSpy.count(), 0);
|
QCOMPARE(modelAboutToBeResetSpy.count(), 0);
|
||||||
QCOMPARE(modelResetSpy.count(), 0);
|
QCOMPARE(modelResetSpy.count(), 0);
|
||||||
|
@ -1678,7 +1563,7 @@ private slots:
|
||||||
connect(&model, &ConcatModel::rowsAboutToBeInserted, &context,
|
connect(&model, &ConcatModel::rowsAboutToBeInserted, &context,
|
||||||
[&model] { QCOMPARE(model.rowCount(), 0); });
|
[&model] { QCOMPARE(model.rowCount(), 0); });
|
||||||
|
|
||||||
proxy2.setSourceModel(sourceModel5.model());
|
proxy2.setSourceModel(sourceModel5);
|
||||||
}
|
}
|
||||||
|
|
||||||
QCOMPARE(modelAboutToBeResetSpy.count(), 0);
|
QCOMPARE(modelAboutToBeResetSpy.count(), 0);
|
||||||
|
@ -1735,9 +1620,9 @@ private slots:
|
||||||
|
|
||||||
IdentityModel proxy1, proxy2, proxy3;
|
IdentityModel proxy1, proxy2, proxy3;
|
||||||
|
|
||||||
proxy1.setSourceModel(sourceModel1.model());
|
proxy1.setSourceModel(sourceModel1);
|
||||||
proxy2.setSourceModel(sourceModel2.model());
|
proxy2.setSourceModel(sourceModel2);
|
||||||
proxy3.setSourceModel(sourceModel3.model());
|
proxy3.setSourceModel(sourceModel3);
|
||||||
|
|
||||||
source1.setModel(&proxy1);
|
source1.setModel(&proxy1);
|
||||||
source2.setModel(&proxy2);
|
source2.setModel(&proxy2);
|
||||||
|
@ -1780,7 +1665,7 @@ private slots:
|
||||||
QCOMPARE(model.data(model.index(3, 0), roleForName(roles, "color")), {});
|
QCOMPARE(model.data(model.index(3, 0), roleForName(roles, "color")), {});
|
||||||
});
|
});
|
||||||
|
|
||||||
proxy2.setSourceModel(sourceModel4.model());
|
proxy2.setSourceModel(sourceModel4);
|
||||||
}
|
}
|
||||||
|
|
||||||
QCOMPARE(modelAboutToBeResetSpy.count(), 0);
|
QCOMPARE(modelAboutToBeResetSpy.count(), 0);
|
||||||
|
@ -1856,7 +1741,7 @@ private slots:
|
||||||
QCOMPARE(model.rowCount(), 0);
|
QCOMPARE(model.rowCount(), 0);
|
||||||
});
|
});
|
||||||
|
|
||||||
proxy1.setSourceModel(sourceModel5.model());
|
proxy1.setSourceModel(sourceModel5);
|
||||||
}
|
}
|
||||||
|
|
||||||
QCOMPARE(modelAboutToBeResetSpy.count(), 0);
|
QCOMPARE(modelAboutToBeResetSpy.count(), 0);
|
||||||
|
@ -1901,9 +1786,9 @@ private slots:
|
||||||
|
|
||||||
SourceModel source1, source2, source3;
|
SourceModel source1, source2, source3;
|
||||||
|
|
||||||
source1.setModel(sourceModel.model());
|
source1.setModel(sourceModel);
|
||||||
source2.setModel(sourceModel.model());
|
source2.setModel(sourceModel);
|
||||||
source3.setModel(sourceModel.model());
|
source3.setModel(sourceModel);
|
||||||
|
|
||||||
sources.append(&sources, &source1);
|
sources.append(&sources, &source1);
|
||||||
sources.append(&sources, &source2);
|
sources.append(&sources, &source2);
|
||||||
|
@ -2004,7 +1889,7 @@ private slots:
|
||||||
QQmlListProperty<SourceModel> sources = model.sources();
|
QQmlListProperty<SourceModel> sources = model.sources();
|
||||||
|
|
||||||
SourceModel source1, source2, source3;
|
SourceModel source1, source2, source3;
|
||||||
source1.setModel(sourceModel1.model());
|
source1.setModel(sourceModel1);
|
||||||
|
|
||||||
sources.append(&sources, &source1);
|
sources.append(&sources, &source1);
|
||||||
sources.append(&sources, &source2);
|
sources.append(&sources, &source2);
|
||||||
|
@ -2027,8 +1912,8 @@ private slots:
|
||||||
std::set<QByteArray> expectedRoleNamesSet({"key", "color", "value", "whichModel"});
|
std::set<QByteArray> expectedRoleNamesSet({"key", "color", "value", "whichModel"});
|
||||||
QCOMPARE(roleNamesSet, expectedRoleNamesSet);
|
QCOMPARE(roleNamesSet, expectedRoleNamesSet);
|
||||||
|
|
||||||
source2.setModel(sourceModel2.model());
|
source2.setModel(sourceModel2);
|
||||||
source3.setModel(sourceModel3.model());
|
source3.setModel(sourceModel3);
|
||||||
|
|
||||||
QCOMPARE(model.rowCount(), 7);
|
QCOMPARE(model.rowCount(), 7);
|
||||||
}
|
}
|
||||||
|
@ -2058,10 +1943,10 @@ private slots:
|
||||||
QQmlListProperty<SourceModel> sources = model.sources();
|
QQmlListProperty<SourceModel> sources = model.sources();
|
||||||
|
|
||||||
SourceModel source1, source2, source3, source4;
|
SourceModel source1, source2, source3, source4;
|
||||||
source1.setModel(sourceModel1.model());
|
source1.setModel(sourceModel1);
|
||||||
source2.setModel(sourceModel2.model());
|
source2.setModel(sourceModel2);
|
||||||
source3.setModel(sourceModel3.model());
|
source3.setModel(sourceModel3);
|
||||||
source4.setModel(sourceModel4.model());
|
source4.setModel(sourceModel4);
|
||||||
|
|
||||||
source1.setMarkerRoleValue("model 1");
|
source1.setMarkerRoleValue("model 1");
|
||||||
source2.setMarkerRoleValue("model 2");
|
source2.setMarkerRoleValue("model 2");
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
#include <QTest>
|
#include <QTest>
|
||||||
|
|
||||||
#include <QJsonArray>
|
#include <QJsonArray>
|
||||||
#include <QJsonDocument>
|
|
||||||
#include <QJsonObject>
|
#include <QJsonObject>
|
||||||
#include <QQmlComponent>
|
#include <QQmlComponent>
|
||||||
#include <QQmlContext>
|
#include <QQmlContext>
|
||||||
|
@ -12,68 +11,7 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
#include <StatusQ/submodelproxymodel.h>
|
#include <StatusQ/submodelproxymodel.h>
|
||||||
|
#include <TestHelpers/listmodelwrapper.h>
|
||||||
namespace {
|
|
||||||
|
|
||||||
class ListViewWrapper {
|
|
||||||
|
|
||||||
public:
|
|
||||||
explicit ListViewWrapper(QQmlEngine& engine, const QString& content = "[]")
|
|
||||||
{
|
|
||||||
QQmlComponent component(&engine);
|
|
||||||
auto componentBody = QStringLiteral(R"(
|
|
||||||
import QtQml 2.15
|
|
||||||
import QtQml.Models 2.15
|
|
||||||
|
|
||||||
ListModel {
|
|
||||||
Component.onCompleted: append(%1)
|
|
||||||
}
|
|
||||||
)").arg(content);
|
|
||||||
|
|
||||||
component.setData(componentBody.toUtf8(), QUrl());
|
|
||||||
|
|
||||||
m_model.reset(qobject_cast<QAbstractItemModel*>(
|
|
||||||
component.create(engine.rootContext())));
|
|
||||||
}
|
|
||||||
|
|
||||||
explicit ListViewWrapper(QQmlEngine& engine, const QJsonArray& content)
|
|
||||||
: ListViewWrapper(engine, QJsonDocument(content).toJson())
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
QAbstractItemModel* model() const
|
|
||||||
{
|
|
||||||
return m_model.get();
|
|
||||||
}
|
|
||||||
|
|
||||||
int count() const
|
|
||||||
{
|
|
||||||
return m_model->rowCount();
|
|
||||||
}
|
|
||||||
|
|
||||||
int role(const QString& roleName)
|
|
||||||
{
|
|
||||||
QHash<int, QByteArray> roleNames = m_model->roleNames();
|
|
||||||
QList<int> roles = roleNames.keys(roleName.toUtf8());
|
|
||||||
|
|
||||||
return roles.length() != 1 ? -1 : roles.first();
|
|
||||||
}
|
|
||||||
|
|
||||||
QVariant get(int index, const QString& roleName)
|
|
||||||
{
|
|
||||||
auto role = this->role(roleName);
|
|
||||||
|
|
||||||
if (role == -1)
|
|
||||||
return {};
|
|
||||||
|
|
||||||
return m_model->data(m_model->index(index, 0), role);
|
|
||||||
}
|
|
||||||
|
|
||||||
private:
|
|
||||||
std::unique_ptr<QAbstractItemModel> m_model;
|
|
||||||
};
|
|
||||||
|
|
||||||
} // unnamed namespace
|
|
||||||
|
|
||||||
class TestSubmodelProxyModel: public QObject
|
class TestSubmodelProxyModel: public QObject
|
||||||
{
|
{
|
||||||
|
@ -94,7 +32,7 @@ private slots:
|
||||||
delegate.setData(delegateData, QUrl());
|
delegate.setData(delegateData, QUrl());
|
||||||
|
|
||||||
SubmodelProxyModel model;
|
SubmodelProxyModel model;
|
||||||
ListViewWrapper sourceModel(engine, QJsonArray {
|
ListModelWrapper sourceModel(engine, QJsonArray {
|
||||||
QJsonObject {{ "balances", 11 }, { "name", "name 1" }},
|
QJsonObject {{ "balances", 11 }, { "name", "name 1" }},
|
||||||
QJsonObject {{ "balances", 12 }, { "name", "name 2" }},
|
QJsonObject {{ "balances", 12 }, { "name", "name 2" }},
|
||||||
QJsonObject {{ "balances", 123}, { "name", "name 3" }},
|
QJsonObject {{ "balances", 123}, { "name", "name 3" }},
|
||||||
|
@ -107,7 +45,7 @@ private slots:
|
||||||
QSignalSpy submodelRoleNameChangedSpy(
|
QSignalSpy submodelRoleNameChangedSpy(
|
||||||
&model, &SubmodelProxyModel::submodelRoleNameChanged);
|
&model, &SubmodelProxyModel::submodelRoleNameChanged);
|
||||||
|
|
||||||
model.setSourceModel(sourceModel.model());
|
model.setSourceModel(sourceModel);
|
||||||
model.setDelegateModel(&delegate);
|
model.setDelegateModel(&delegate);
|
||||||
model.setSubmodelRoleName(QStringLiteral("balances"));
|
model.setSubmodelRoleName(QStringLiteral("balances"));
|
||||||
|
|
||||||
|
@ -115,7 +53,7 @@ private slots:
|
||||||
QCOMPARE(delegateChangedSpy.count(), 1);
|
QCOMPARE(delegateChangedSpy.count(), 1);
|
||||||
QCOMPARE(submodelRoleNameChangedSpy.count(), 1);
|
QCOMPARE(submodelRoleNameChangedSpy.count(), 1);
|
||||||
|
|
||||||
QCOMPARE(model.sourceModel(), sourceModel.model());
|
QCOMPARE(model.sourceModel(), sourceModel);
|
||||||
QCOMPARE(model.delegateModel(), &delegate);
|
QCOMPARE(model.delegateModel(), &delegate);
|
||||||
QCOMPARE(model.submodelRoleName(), QStringLiteral("balances"));
|
QCOMPARE(model.submodelRoleName(), QStringLiteral("balances"));
|
||||||
|
|
||||||
|
@ -152,13 +90,13 @@ private slots:
|
||||||
)"), QUrl());
|
)"), QUrl());
|
||||||
|
|
||||||
SubmodelProxyModel model;
|
SubmodelProxyModel model;
|
||||||
ListViewWrapper sourceModel(engine, QJsonArray {
|
ListModelWrapper sourceModel(engine, QJsonArray {
|
||||||
QJsonObject {{ "balances", 11 }, { "name", "name 1" }},
|
QJsonObject {{ "balances", 11 }, { "name", "name 1" }},
|
||||||
QJsonObject {{ "balances", 12 }, { "name", "name 2" }},
|
QJsonObject {{ "balances", 12 }, { "name", "name 2" }},
|
||||||
QJsonObject {{ "balances", 123}, { "name", "name 3" }}
|
QJsonObject {{ "balances", 123}, { "name", "name 3" }}
|
||||||
});
|
});
|
||||||
|
|
||||||
model.setSourceModel(sourceModel.model());
|
model.setSourceModel(sourceModel);
|
||||||
model.setDelegateModel(delegate.get());
|
model.setDelegateModel(delegate.get());
|
||||||
model.setSubmodelRoleName(QStringLiteral("balances"));
|
model.setSubmodelRoleName(QStringLiteral("balances"));
|
||||||
|
|
||||||
|
@ -191,7 +129,7 @@ private slots:
|
||||||
|
|
||||||
SubmodelProxyModel model;
|
SubmodelProxyModel model;
|
||||||
|
|
||||||
auto sourceModel = std::make_unique<ListViewWrapper>(engine,
|
auto sourceModel = std::make_unique<ListModelWrapper>(engine,
|
||||||
QJsonArray {
|
QJsonArray {
|
||||||
QJsonObject {{ "balances", 11 }, { "name", "name 1" }},
|
QJsonObject {{ "balances", 11 }, { "name", "name 1" }},
|
||||||
QJsonObject {{ "balances", 12 }, { "name", "name 2" }},
|
QJsonObject {{ "balances", 12 }, { "name", "name 2" }},
|
||||||
|
@ -224,13 +162,13 @@ private slots:
|
||||||
)"), QUrl());
|
)"), QUrl());
|
||||||
|
|
||||||
SubmodelProxyModel model;
|
SubmodelProxyModel model;
|
||||||
ListViewWrapper sourceModel(engine, QJsonArray {
|
ListModelWrapper sourceModel(engine, QJsonArray {
|
||||||
QJsonObject {{ "balances", 11 }, { "name", "name 1" }},
|
QJsonObject {{ "balances", 11 }, { "name", "name 1" }},
|
||||||
QJsonObject {{ "balances", 12 }, { "name", "name 2" }},
|
QJsonObject {{ "balances", 12 }, { "name", "name 2" }},
|
||||||
QJsonObject {{ "balances", 123}, { "name", "name 3" }}
|
QJsonObject {{ "balances", 123}, { "name", "name 3" }}
|
||||||
});
|
});
|
||||||
|
|
||||||
model.setSourceModel(sourceModel.model());
|
model.setSourceModel(sourceModel);
|
||||||
model.setDelegateModel(delegate.get());
|
model.setDelegateModel(delegate.get());
|
||||||
|
|
||||||
QTest::ignoreMessage(QtWarningMsg, "Submodel role not found!");
|
QTest::ignoreMessage(QtWarningMsg, "Submodel role not found!");
|
||||||
|
|
Loading…
Reference in New Issue