Fix memory leaks

This commit is contained in:
Tobias Fella
2026-01-25 22:58:06 +01:00
committed by Tobias Fella
parent 7313386903
commit 6dce1564b7
6 changed files with 122 additions and 118 deletions

View File

@@ -136,7 +136,7 @@ void ModelTest::initTestCase()
Connection::setRoomType<NeoChatRoom>(); Connection::setRoomType<NeoChatRoom>();
server.start(); server.start();
KLocalizedString::setApplicationDomain(QByteArrayLiteral("neochat")); KLocalizedString::setApplicationDomain(QByteArrayLiteral("neochat"));
auto accountManager = new AccountManager(true); auto accountManager = new AccountManager(true, this);
QSignalSpy spy(accountManager, &AccountManager::connectionAdded); QSignalSpy spy(accountManager, &AccountManager::connectionAdded);
connection = dynamic_cast<NeoChatConnection *>(accountManager->accounts()->front()); connection = dynamic_cast<NeoChatConnection *>(accountManager->accounts()->front());
const auto roomId = server.createRoom(u"@user:localhost:1234"_s); const auto roomId = server.createRoom(u"@user:localhost:1234"_s);
@@ -171,126 +171,127 @@ void ModelTest::initTestCase()
void ModelTest::testRoomTreeModel() void ModelTest::testRoomTreeModel()
{ {
auto roomTreeModel = new RoomTreeModel(); auto roomTreeModel = new RoomTreeModel(this);
auto tester = new QAbstractItemModelTester(roomTreeModel); auto tester = new QAbstractItemModelTester(roomTreeModel, roomTreeModel);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
roomTreeModel->setConnection(connection); roomTreeModel->setConnection(connection);
} }
void ModelTest::testMessageContentModel() void ModelTest::testMessageContentModel()
{ {
auto contentModel = new MessageContentModel(room, nullptr, eventId); auto contentModel = std::make_unique<MessageContentModel>(room, nullptr, eventId);
auto tester = new QAbstractItemModelTester(contentModel); auto tester = new QAbstractItemModelTester(contentModel.get(), contentModel.get());
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
} }
void ModelTest::testEventMessageContentModel() void ModelTest::testEventMessageContentModel()
{ {
auto model = new EventMessageContentModel(room, eventId); auto model = std::make_unique<EventMessageContentModel>(room, eventId);
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model.get(), model.get());
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
} }
void ModelTest::testThreadModel() void ModelTest::testThreadModel()
{ {
auto model = new ThreadModel(eventId, room); auto model = new ThreadModel(eventId, room);
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
} }
void ModelTest::testThreadFetchModel() void ModelTest::testThreadFetchModel()
{ {
auto model = new ThreadFetchModel(new ThreadModel(eventId, room)); auto model = new ThreadFetchModel(new ThreadModel(eventId, room));
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
} }
void ModelTest::testThreadChatBarModel() void ModelTest::testThreadChatBarModel()
{ {
auto model = new ThreadChatBarModel(new ThreadModel(eventId, room), room); auto model = new ThreadChatBarModel(new ThreadModel(eventId, room), room);
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
} }
void ModelTest::testReactionModel() void ModelTest::testReactionModel()
{ {
auto model = new ReactionModel(new MessageContentModel(room), eventId, room); auto messageContentModel = std::make_unique<MessageContentModel>(room);
auto tester = new QAbstractItemModelTester(model); auto model = new ReactionModel(messageContentModel.get(), eventId, room);
auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
} }
void ModelTest::testPollAnswerModel() void ModelTest::testPollAnswerModel()
{ {
auto handler = new PollHandler(); auto handler = std::make_unique<PollHandler>(room, eventId);
auto model = new PollAnswerModel(handler); auto model = new PollAnswerModel(handler.get());
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
} }
void ModelTest::testLineModel() void ModelTest::testLineModel()
{ {
auto model = new LineModel(); auto model = new LineModel(this);
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
auto document = new QTextDocument(); auto document = new QTextDocument(this);
model->setDocument(document); model->setDocument(document);
document->setPlainText(u"foo\nbar\n\nbaz"_s); document->setPlainText(u"foo\nbar\n\nbaz"_s);
} }
void ModelTest::testSpaceChildrenModel() void ModelTest::testSpaceChildrenModel()
{ {
auto model = new SpaceChildrenModel(); auto model = new SpaceChildrenModel(this);
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
model->setSpace(room); model->setSpace(room);
} }
void ModelTest::testItineraryModel() void ModelTest::testItineraryModel()
{ {
auto model = new ItineraryModel(); auto model = new ItineraryModel(this);
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
} }
void ModelTest::testPublicRoomListModel() void ModelTest::testPublicRoomListModel()
{ {
auto model = new PublicRoomListModel(); auto model = new PublicRoomListModel(this);
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
model->setConnection(connection); model->setConnection(connection);
} }
void ModelTest::testMessageFilterModel() void ModelTest::testMessageFilterModel()
{ {
auto timelineModel = new TimelineModel(); auto timelineModel = new TimelineModel(this);
auto model = new MessageFilterModel(nullptr, timelineModel); auto model = new MessageFilterModel(this, timelineModel);
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
timelineModel->setRoom(room); timelineModel->setRoom(room);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
} }
void ModelTest::testThreePIdModel() void ModelTest::testThreePIdModel()
{ {
auto model = new ThreePIdModel(); auto model = new ThreePIdModel(this);
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
model->setConnection(connection); model->setConnection(connection);
} }
void ModelTest::testMediaMessageFilterModel() void ModelTest::testMediaMessageFilterModel()
{ {
auto timelineModel = new TimelineModel(); auto timelineModel = new TimelineModel(this);
auto messageFilterModel = new MessageFilterModel(nullptr, timelineModel); auto messageFilterModel = new MessageFilterModel(this, timelineModel);
auto model = new MediaMessageFilterModel(nullptr, messageFilterModel); auto model = new MediaMessageFilterModel(this, messageFilterModel);
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
timelineModel->setRoom(room); timelineModel->setRoom(room);
} }
void ModelTest::testWebshortcutModel() void ModelTest::testWebshortcutModel()
{ {
auto model = new WebShortcutModel(); auto model = new WebShortcutModel(this);
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
model->setSelectedText(u"Foo"_s); model->setSelectedText(u"Foo"_s);
} }
@@ -298,22 +299,22 @@ void ModelTest::testWebshortcutModel()
void ModelTest::testTimelineMessageModel() void ModelTest::testTimelineMessageModel()
{ {
auto model = new TimelineMessageModel(); auto model = new TimelineMessageModel();
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
model->setRoom(room); model->setRoom(room);
} }
void ModelTest::testReadMarkerModel() void ModelTest::testReadMarkerModel()
{ {
auto model = new ReadMarkerModel(eventId, room); auto model = std::make_unique<ReadMarkerModel>(eventId, room);
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model.get(), model.get());
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
} }
void ModelTest::testSearchModel() void ModelTest::testSearchModel()
{ {
auto model = new SearchModel(); auto model = new SearchModel(this);
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
model->setSearchText(u"foo"_s); model->setSearchText(u"foo"_s);
model->setRoom(room); model->setRoom(room);
@@ -321,24 +322,24 @@ void ModelTest::testSearchModel()
void ModelTest::testStateModel() void ModelTest::testStateModel()
{ {
auto model = new StateModel(); auto model = new StateModel(this);
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
model->setRoom(room); model->setRoom(room);
} }
void ModelTest::testTimelineModel() void ModelTest::testTimelineModel()
{ {
auto model = new TimelineModel(); auto model = new TimelineModel(this);
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
model->setRoom(room); model->setRoom(room);
} }
void ModelTest::testStateKeysModel() void ModelTest::testStateKeysModel()
{ {
auto model = new StateKeysModel(); auto model = new StateKeysModel(this);
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
model->setEventType(u"m.room.member"_s); model->setEventType(u"m.room.member"_s);
model->setRoom(room); model->setRoom(room);
@@ -346,28 +347,28 @@ void ModelTest::testStateKeysModel()
void ModelTest::testPinnedMessageModel() void ModelTest::testPinnedMessageModel()
{ {
auto model = new PinnedMessageModel(); auto model = new PinnedMessageModel(this);
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
model->setRoom(room); model->setRoom(room);
} }
void ModelTest::testUserListModel() void ModelTest::testUserListModel()
{ {
auto model = new UserListModel(); auto model = new UserListModel(this);
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
model->setRoom(room); model->setRoom(room);
} }
void ModelTest::testStickerModel() void ModelTest::testStickerModel()
{ {
auto model = new StickerModel(); auto model = new StickerModel(this);
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
model->setPackIndex(0); model->setPackIndex(0);
model->setRoom(room); model->setRoom(room);
auto imagePacksModel = new ImagePacksModel(); auto imagePacksModel = new ImagePacksModel(this);
model->setModel(imagePacksModel); model->setModel(imagePacksModel);
imagePacksModel->setRoom(room); imagePacksModel->setRoom(room);
imagePacksModel->setShowEmoticons(true); imagePacksModel->setShowEmoticons(true);
@@ -376,15 +377,15 @@ void ModelTest::testStickerModel()
void ModelTest::testPowerLevelModel() void ModelTest::testPowerLevelModel()
{ {
auto model = new PowerLevelModel(); auto model = new PowerLevelModel(this);
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
} }
void ModelTest::testImagePacksModel() void ModelTest::testImagePacksModel()
{ {
auto model = new ImagePacksModel(); auto model = new ImagePacksModel(this);
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
model->setRoom(room); model->setRoom(room);
model->setShowEmoticons(true); model->setShowEmoticons(true);
@@ -393,29 +394,29 @@ void ModelTest::testImagePacksModel()
void ModelTest::testCompletionModel() void ModelTest::testCompletionModel()
{ {
auto model = new CompletionModel(); auto model = new CompletionModel(this);
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
model->setRoom(room); model->setRoom(room);
model->setAutoCompletionType(CompletionModel::Room); model->setAutoCompletionType(CompletionModel::Room);
model->setText(u"foo"_s, u"#foo"_s); model->setText(u"foo"_s, u"#foo"_s);
auto roomListModel = new RoomListModel(); auto roomListModel = new RoomListModel(this);
roomListModel->setConnection(connection); roomListModel->setConnection(connection);
model->setRoomListModel(roomListModel); model->setRoomListModel(roomListModel);
} }
void ModelTest::testRoomListModel() void ModelTest::testRoomListModel()
{ {
auto model = new RoomListModel(); auto model = new RoomListModel(this);
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
model->setConnection(connection); model->setConnection(connection);
} }
void ModelTest::testCommonRoomsModel() void ModelTest::testCommonRoomsModel()
{ {
auto model = new CommonRoomsModel(); auto model = new CommonRoomsModel(this);
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
model->setConnection(connection); model->setConnection(connection);
model->setUserId(u"@user:example.com"_s); model->setUserId(u"@user:example.com"_s);
@@ -423,67 +424,67 @@ void ModelTest::testCommonRoomsModel()
void ModelTest::testNotificationsModel() void ModelTest::testNotificationsModel()
{ {
auto model = new NotificationsModel(); auto model = new NotificationsModel(this);
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
model->setConnection(connection); model->setConnection(connection);
} }
void ModelTest::testLocationsModel() void ModelTest::testLocationsModel()
{ {
auto model = new LocationsModel(); auto model = new LocationsModel(this);
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
model->setRoom(room); model->setRoom(room);
} }
void ModelTest::testServerListModel() void ModelTest::testServerListModel()
{ {
auto model = new ServerListModel(); auto model = new ServerListModel(this);
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
model->setConnection(connection); model->setConnection(connection);
} }
void ModelTest::testEmojiModel() void ModelTest::testEmojiModel()
{ {
auto tester = new QAbstractItemModelTester(&EmojiModel::instance()); auto tester = new QAbstractItemModelTester(&EmojiModel::instance(), &EmojiModel::instance());
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
} }
void ModelTest::testCustomEmojiModel() void ModelTest::testCustomEmojiModel()
{ {
auto tester = new QAbstractItemModelTester(&CustomEmojiModel::instance()); auto tester = new QAbstractItemModelTester(&CustomEmojiModel::instance(), &CustomEmojiModel::instance());
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
CustomEmojiModel::instance().setConnection(connection); CustomEmojiModel::instance().setConnection(connection);
} }
void ModelTest::testPushRuleModel() void ModelTest::testPushRuleModel()
{ {
auto model = new PushRuleModel(); auto model = new PushRuleModel(this);
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
model->setConnection(connection); model->setConnection(connection);
} }
void ModelTest::testActionsModel() void ModelTest::testActionsModel()
{ {
auto tester = new QAbstractItemModelTester(&ActionsModel::instance()); auto tester = new QAbstractItemModelTester(&ActionsModel::instance(), &ActionsModel::instance());
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
} }
void ModelTest::testDevicesModel() void ModelTest::testDevicesModel()
{ {
auto model = new DevicesModel(); auto model = new DevicesModel(this);
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
model->setConnection(connection); model->setConnection(connection);
} }
void ModelTest::testUserDirectoryListModel() void ModelTest::testUserDirectoryListModel()
{ {
auto model = new UserDirectoryListModel(); auto model = new UserDirectoryListModel(this);
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
model->setConnection(connection); model->setConnection(connection);
model->setSearchText(u"foo"_s); model->setSearchText(u"foo"_s);
@@ -491,106 +492,106 @@ void ModelTest::testUserDirectoryListModel()
void ModelTest::testAccountEmoticonModel() void ModelTest::testAccountEmoticonModel()
{ {
auto model = new AccountEmoticonModel(); auto model = new AccountEmoticonModel(this);
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
model->setConnection(connection); model->setConnection(connection);
} }
void ModelTest::testPermissionsModel() void ModelTest::testPermissionsModel()
{ {
auto model = new PermissionsModel(); auto model = new PermissionsModel(this);
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
model->setRoom(room); model->setRoom(room);
} }
void ModelTest::testLiveLocationsModel() void ModelTest::testLiveLocationsModel()
{ {
auto model = new LiveLocationsModel(); auto model = new LiveLocationsModel(this);
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
model->setRoom(room); model->setRoom(room);
} }
void ModelTest::testRoomSortParameterModel() void ModelTest::testRoomSortParameterModel()
{ {
auto model = new RoomSortParameterModel(); auto model = new RoomSortParameterModel(this);
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
} }
void ModelTest::testSortFilterRoomTreeModel() void ModelTest::testSortFilterRoomTreeModel()
{ {
auto sourceModel = new RoomTreeModel(); auto sourceModel = new RoomTreeModel(this);
auto model = new SortFilterRoomTreeModel(sourceModel); auto model = new SortFilterRoomTreeModel(sourceModel, sourceModel);
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
sourceModel->setConnection(connection); sourceModel->setConnection(connection);
} }
void ModelTest::testSortFilterSpaceListModel() void ModelTest::testSortFilterSpaceListModel()
{ {
auto sourceModel = new RoomListModel(); auto sourceModel = new RoomListModel(this);
auto model = new SortFilterSpaceListModel(sourceModel); auto model = new SortFilterSpaceListModel(sourceModel, sourceModel);
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
sourceModel->setConnection(connection); sourceModel->setConnection(connection);
} }
void ModelTest::testSortFilterRoomListModel() void ModelTest::testSortFilterRoomListModel()
{ {
auto sourceModel = new RoomListModel(); auto sourceModel = new RoomListModel(this);
auto model = new SortFilterRoomListModel(sourceModel); auto model = new SortFilterRoomListModel(sourceModel, sourceModel);
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
sourceModel->setConnection(connection); sourceModel->setConnection(connection);
} }
void ModelTest::testSpaceChildSortFilterModel() void ModelTest::testSpaceChildSortFilterModel()
{ {
auto model = new SpaceChildSortFilterModel(); auto model = new SpaceChildSortFilterModel(this);
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
auto spaceChildrenModel = new SpaceChildrenModel(); auto spaceChildrenModel = new SpaceChildrenModel(this);
model->setSourceModel(spaceChildrenModel); model->setSourceModel(spaceChildrenModel);
spaceChildrenModel->setSpace(nullptr); spaceChildrenModel->setSpace(nullptr);
} }
void ModelTest::testStateFilterModel() void ModelTest::testStateFilterModel()
{ {
auto model = new StateFilterModel(); auto model = new StateFilterModel(this);
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
auto stateModel = new StateModel(); auto stateModel = new StateModel(this);
model->setSourceModel(stateModel); model->setSourceModel(stateModel);
stateModel->setRoom(room); stateModel->setRoom(room);
} }
void ModelTest::testMessageContentFilterModel() void ModelTest::testMessageContentFilterModel()
{ {
auto model = new MessageContentFilterModel(); auto model = new MessageContentFilterModel(this);
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
model->setSourceModel(ContentProvider::self().contentModelForEvent(room, eventId)); model->setSourceModel(ContentProvider::self().contentModelForEvent(room, eventId));
} }
void ModelTest::testUserFilterModel() void ModelTest::testUserFilterModel()
{ {
auto model = new UserFilterModel(); auto model = new UserFilterModel(this);
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
auto userListModel = new UserListModel(); auto userListModel = new UserListModel(this);
model->setSourceModel(userListModel); model->setSourceModel(userListModel);
userListModel->setRoom(room); userListModel->setRoom(room);
} }
void ModelTest::testEmoticonFilterModel() void ModelTest::testEmoticonFilterModel()
{ {
auto model = new EmoticonFilterModel(); auto model = new EmoticonFilterModel(this);
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
auto accountEmoticonModel = new AccountEmoticonModel(); auto accountEmoticonModel = new AccountEmoticonModel(this);
model->setSourceModel(accountEmoticonModel); model->setSourceModel(accountEmoticonModel);
model->setShowEmojis(true); model->setShowEmojis(true);
model->setShowStickers(true); model->setShowStickers(true);
@@ -599,18 +600,18 @@ void ModelTest::testEmoticonFilterModel()
void ModelTest::testDevicesProxyModel() void ModelTest::testDevicesProxyModel()
{ {
auto model = new DevicesProxyModel(); auto model = new DevicesProxyModel(this);
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
auto devicesModel = new DevicesModel(); auto devicesModel = new DevicesModel(this);
model->setSourceModel(devicesModel); model->setSourceModel(devicesModel);
devicesModel->setConnection(dynamic_cast<NeoChatConnection *>(connection)); devicesModel->setConnection(dynamic_cast<NeoChatConnection *>(connection));
} }
void ModelTest::testCompletionProxyModel() void ModelTest::testCompletionProxyModel()
{ {
auto model = new CompletionProxyModel(); auto model = new CompletionProxyModel(this);
auto tester = new QAbstractItemModelTester(model); auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true); tester->setUseFetchMore(true);
model->setSourceModel(&EmojiModel::instance()); model->setSourceModel(&EmojiModel::instance());
} }

View File

@@ -18,6 +18,7 @@ class StateFilterModel : public QSortFilterProxyModel
QML_ELEMENT QML_ELEMENT
public: public:
using QSortFilterProxyModel::QSortFilterProxyModel;
/** /**
* @brief Custom filter function checking if an event type has been filtered out. * @brief Custom filter function checking if an event type has been filtered out.
* *

View File

@@ -13,7 +13,7 @@
CompletionModel::CompletionModel(QObject *parent) CompletionModel::CompletionModel(QObject *parent)
: QAbstractListModel(parent) : QAbstractListModel(parent)
, m_filterModel(new CompletionProxyModel()) , m_filterModel(new CompletionProxyModel(this))
, m_emojiModel(new QConcatenateTablesProxyModel(this)) , m_emojiModel(new QConcatenateTablesProxyModel(this))
{ {
connect(this, &CompletionModel::textChanged, this, &CompletionModel::updateCompletion); connect(this, &CompletionModel::textChanged, this, &CompletionModel::updateCompletion);

View File

@@ -26,6 +26,8 @@ class CompletionProxyModel : public QSortFilterProxyModel
Q_OBJECT Q_OBJECT
public: public:
using QSortFilterProxyModel::QSortFilterProxyModel;
/** /**
* @brief Wether a row should be shown or not. * @brief Wether a row should be shown or not.
* *

View File

@@ -27,6 +27,8 @@ class UserFilterModel : public QSortFilterProxyModel
Q_PROPERTY(bool allowEmpty READ allowEmpty WRITE setAllowEmpty NOTIFY allowEmptyChanged) Q_PROPERTY(bool allowEmpty READ allowEmpty WRITE setAllowEmpty NOTIFY allowEmptyChanged)
public: public:
using QSortFilterProxyModel::QSortFilterProxyModel;
/** /**
* @brief Custom filter function checking boith the display name and matrix ID. * @brief Custom filter function checking boith the display name and matrix ID.
* *

View File

@@ -93,8 +93,6 @@ std::optional<std::reference_wrapper<const Quotient::RoomEvent>> MessageModel::g
return std::nullopt; return std::nullopt;
} }
static NeochatRoomMember *emptyNeochatRoomMember = new NeochatRoomMember;
QVariant MessageModel::data(const QModelIndex &idx, int role) const QVariant MessageModel::data(const QModelIndex &idx, int role) const
{ {
if (!checkIndex(idx, QAbstractItemModel::CheckIndexOption::IndexIsValid)) { if (!checkIndex(idx, QAbstractItemModel::CheckIndexOption::IndexIsValid)) {