mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-11-21 10:40:47 +03:00
wip change how we read parent room
todo remove it from the cache
This commit is contained in:
parent
492511a2af
commit
00f2fe7fe6
3 changed files with 25 additions and 6 deletions
|
@ -8,11 +8,14 @@
|
|||
|
||||
#include "Cache_p.h"
|
||||
#include "CompletionModelRoles.h"
|
||||
#include "RoomlistModel.h"
|
||||
#include "TimelineModel.h"
|
||||
#include "UserSettingsPage.h"
|
||||
#include "Utils.h"
|
||||
|
||||
RoomsModel::RoomsModel(bool showOnlyRoomWithAliases, QObject *parent)
|
||||
RoomsModel::RoomsModel(RoomlistModel &roomlistModel, bool showOnlyRoomWithAliases, QObject *parent)
|
||||
: QAbstractListModel(parent)
|
||||
, roomListModel_(roomlistModel)
|
||||
, showOnlyRoomWithAliases_(showOnlyRoomWithAliases)
|
||||
{
|
||||
rooms = cache::client()->roomNamesAndAliases();
|
||||
|
@ -73,8 +76,21 @@ RoomsModel::data(const QModelIndex &index, int role) const
|
|||
return rooms[index.row()].is_tombstoned;
|
||||
case Roles::IsSpace:
|
||||
return rooms[index.row()].is_space;
|
||||
case Roles::RoomParent:
|
||||
return QString::fromStdString(rooms[index.row()].parent);
|
||||
case Roles::RoomParent: {
|
||||
const auto roomPtr = roomListModel_.getRoomById(QString::fromStdString(rooms[index.row()].id));
|
||||
if (auto &room = *roomPtr; roomPtr) {
|
||||
if (const auto &parent = room.parentSpace(); parent) {
|
||||
qInfo() << "Parent has name" << parent->roomName();
|
||||
return parent->roomName();
|
||||
} else {
|
||||
qWarning() << "No parent for room" << "expected" << rooms[index.row()].parent;
|
||||
}
|
||||
}
|
||||
else {
|
||||
qWarning() << "No room with ID";
|
||||
}
|
||||
return QString{};
|
||||
}
|
||||
}
|
||||
}
|
||||
return {};
|
||||
|
|
|
@ -9,6 +9,8 @@
|
|||
#include <QAbstractListModel>
|
||||
#include <QString>
|
||||
|
||||
class RoomlistModel;
|
||||
|
||||
class RoomsModel final : public QAbstractListModel
|
||||
{
|
||||
public:
|
||||
|
@ -23,7 +25,7 @@ public:
|
|||
RoomParent,
|
||||
};
|
||||
|
||||
RoomsModel(bool showOnlyRoomWithAliases = false, QObject *parent = nullptr);
|
||||
RoomsModel(RoomlistModel &roomListModel, bool showOnlyRoomWithAliases = false, QObject *parent = nullptr);
|
||||
QHash<int, QByteArray> roleNames() const override;
|
||||
int rowCount(const QModelIndex &parent = QModelIndex()) const override
|
||||
{
|
||||
|
@ -33,6 +35,7 @@ public:
|
|||
QVariant data(const QModelIndex &index, int role) const override;
|
||||
|
||||
private:
|
||||
RoomlistModel &roomListModel_;
|
||||
std::vector<RoomNameAlias> rooms;
|
||||
bool showOnlyRoomWithAliases_;
|
||||
};
|
||||
|
|
|
@ -517,12 +517,12 @@ TimelineViewManager::completerFor(const QString &completerName, const QString &r
|
|||
emojiModel->setParent(proxy);
|
||||
return proxy;
|
||||
} else if (completerName == QLatin1String("room")) {
|
||||
auto roomModel = new RoomsModel(false);
|
||||
auto roomModel = new RoomsModel(*rooms_, false);
|
||||
auto proxy = new CompletionProxyModel(roomModel, 4);
|
||||
roomModel->setParent(proxy);
|
||||
return proxy;
|
||||
} else if (completerName == QLatin1String("roomAliases")) {
|
||||
auto roomModel = new RoomsModel(true);
|
||||
auto roomModel = new RoomsModel(*rooms_, true);
|
||||
auto proxy = new CompletionProxyModel(roomModel);
|
||||
roomModel->setParent(proxy);
|
||||
return proxy;
|
||||
|
|
Loading…
Reference in a new issue