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