1 // SPDX-FileCopyrightText: 2021 Nheko Contributors 2 // 3 // SPDX-License-Identifier: GPL-3.0-or-later 4 5 #pragma once 6 7 #include <QAbstractListModel> 8 9 #include <mtx/events/mscs/image_packs.hpp> 10 11 class CombinedImagePackModel : public QAbstractListModel 12 { 13 Q_OBJECT 14 public: 15 enum Roles 16 { 17 Url = Qt::UserRole, 18 ShortCode, 19 Body, 20 PackName, 21 OriginalRow, 22 }; 23 24 CombinedImagePackModel(const std::string &roomId, bool stickers, QObject *parent = nullptr); 25 QHash<int, QByteArray> roleNames() const override; 26 int rowCount(const QModelIndex &parent = QModelIndex()) const override; 27 QVariant data(const QModelIndex &index, int role) const override; 28 imageAt(int row)29 mtx::events::msc2545::PackImage imageAt(int row) 30 { 31 if (row < 0 || static_cast<size_t>(row) >= images.size()) 32 return {}; 33 return images.at(static_cast<size_t>(row)).image; 34 } 35 36 private: 37 std::string room_id; 38 39 struct ImageDesc 40 { 41 QString shortcode; 42 QString packname; 43 44 mtx::events::msc2545::PackImage image; 45 }; 46 47 std::vector<ImageDesc> images; 48 }; 49