From 0dfdba4316c18fe92f0d0b441236361091cdc758 Mon Sep 17 00:00:00 2001 From: Nicolas Werner Date: Fri, 19 May 2023 03:15:55 +0200 Subject: Add rows to stickerpicker --- src/GridImagePackModel.h | 72 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 src/GridImagePackModel.h (limited to 'src/GridImagePackModel.h') diff --git a/src/GridImagePackModel.h b/src/GridImagePackModel.h new file mode 100644 index 00000000..1345b103 --- /dev/null +++ b/src/GridImagePackModel.h @@ -0,0 +1,72 @@ +// SPDX-FileCopyrightText: Nheko Contributors +// +// SPDX-License-Identifier: GPL-3.0-or-later + +#pragma once + +#include +#include +#include + +#include + +struct StickerImage +{ + Q_GADGET + Q_PROPERTY(QString url MEMBER url CONSTANT) + Q_PROPERTY(QString shortcode MEMBER shortcode CONSTANT) + Q_PROPERTY(QString body MEMBER body CONSTANT) + Q_PROPERTY(QStringList descriptor READ descriptor CONSTANT) + +public: + QStringList descriptor() const + { + if (descriptor_.size() == 3) + return QStringList{ + QString::fromStdString(descriptor_[0]), + QString::fromStdString(descriptor_[1]), + QString::fromStdString(descriptor_[2]), + }; + else + return {}; + } + + QString url; + QString shortcode; + QString body; + + std::vector descriptor_; // roomid, statekey, shortcode +}; + +class GridImagePackModel final : public QAbstractListModel +{ + Q_OBJECT +public: + enum Roles + { + PackName = Qt::UserRole, + Row, + }; + + GridImagePackModel(const std::string &roomId, bool stickers, QObject *parent = nullptr); + QHash roleNames() const override; + int rowCount(const QModelIndex &parent = QModelIndex()) const override; + QVariant data(const QModelIndex &index, int role) const override; + +private: + std::string room_id; + + struct PackDesc + { + QString packname; + QString packavatar; + std::string room_id, state_key; + + std::vector> images; + std::size_t firstRow; + }; + + std::vector packs; + std::vector rowToPack; + int columns = 3; +}; -- cgit 1.5.1