summary refs log tree commit diff
path: root/src/ImagePackModel.h
diff options
context:
space:
mode:
authorDeepBlueV7.X <nicolas.werner@hotmail.de>2021-07-19 13:31:48 +0000
committerGitHub <noreply@github.com>2021-07-19 13:31:48 +0000
commit9a950c7f0e9a7daac926c78cf98a8b834c02d521 (patch)
treeaba0f1db0658228c81a482b93cf76e976d3ea31f /src/ImagePackModel.h
parentMerge pull request #646 from Nheko-Reborn/historical-key-sharing (diff)
parentMake scrolling sticker picker bearable (diff)
downloadnheko-9a950c7f0e9a7daac926c78cf98a8b834c02d521.tar.xz
Merge pull request #648 from Nheko-Reborn/stickers2
Stickers!
Diffstat (limited to 'src/ImagePackModel.h')
-rw-r--r--src/ImagePackModel.h48
1 files changed, 48 insertions, 0 deletions
diff --git a/src/ImagePackModel.h b/src/ImagePackModel.h
new file mode 100644

index 00000000..937014ec --- /dev/null +++ b/src/ImagePackModel.h
@@ -0,0 +1,48 @@ +// SPDX-FileCopyrightText: 2021 Nheko Contributors +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#pragma once + +#include <QAbstractListModel> + +#include <mtx/events/mscs/image_packs.hpp> + +class ImagePackModel : public QAbstractListModel +{ + Q_OBJECT +public: + enum Roles + { + Url = Qt::UserRole, + ShortCode, + Body, + PackName, + OriginalRow, + }; + + ImagePackModel(const std::string &roomId, bool stickers, QObject *parent = nullptr); + QHash<int, QByteArray> roleNames() const override; + int rowCount(const QModelIndex &parent = QModelIndex()) const override; + QVariant data(const QModelIndex &index, int role) const override; + + mtx::events::msc2545::PackImage imageAt(int row) + { + if (row < 0 || static_cast<size_t>(row) >= images.size()) + return {}; + return images.at(static_cast<size_t>(row)).image; + } + +private: + std::string room_id; + + struct ImageDesc + { + QString shortcode; + QString packname; + + mtx::events::msc2545::PackImage image; + }; + + std::vector<ImageDesc> images; +};