// SPDX-FileCopyrightText: 2023 Tobias Fella // SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include #include "neochatroom.h" #include class LocationsModel : public QAbstractListModel { Q_OBJECT public: enum Roles { TextRole = Qt::DisplayRole, LongitudeRole, LatitudeRole, }; Q_ENUM(Roles) Q_PROPERTY(NeoChatRoom *room READ room WRITE setRoom NOTIFY roomChanged) explicit LocationsModel(QObject *parent = nullptr); [[nodiscard]] NeoChatRoom *room() const; void setRoom(NeoChatRoom *room); [[nodiscard]] QHash roleNames() const override; [[nodiscard]] QVariant data(const QModelIndex &index, int roleName) const override; [[nodiscard]] int rowCount(const QModelIndex &parent) const override; Q_SIGNALS: void roomChanged(); private: QPointer m_room; struct LocationData { QString eventId; float latitude; float longitude; QString text; NeoChatUser *author; }; QList m_locations; void addLocation(const Quotient::RoomMessageEvent *event); };