File indexing completed on 2025-02-02 04:11:30
0001 /* 0002 * SPDX-FileCopyrightText: 2019-2023 Mattia Basaglia <dev@dragon.best> 0003 * 0004 * SPDX-License-Identifier: GPL-3.0-or-later 0005 */ 0006 0007 #pragma once 0008 #include <QString> 0009 #include <QUrl> 0010 #include <QColor> 0011 #include <QImage> 0012 #include <QWidget> 0013 #include <QSpacerItem> 0014 0015 namespace glaxnimate::gui { 0016 0017 class LottieFilesResultItem; 0018 0019 struct LottieFilesResult 0020 { 0021 int id; 0022 QString name; 0023 QString author_username; 0024 QUrl url; 0025 QUrl preview_url; 0026 QUrl lottie; 0027 QColor background; 0028 int likes; 0029 int comments; 0030 }; 0031 0032 0033 class LottieFilesResultItem : public QWidget 0034 { 0035 Q_OBJECT 0036 0037 public: 0038 LottieFilesResultItem(LottieFilesResult res, QWidget* parent); 0039 0040 void set_preview_image(QImage preview) 0041 { 0042 this->preview = std::move(preview); 0043 update(); 0044 } 0045 0046 void set_image_size(const QSize& size); 0047 0048 const LottieFilesResult& result() const { return data; } 0049 0050 Q_SIGNALS: 0051 void selected(const QString& name, const QUrl& url); 0052 void selected_open(const QString& name, const QUrl& url); 0053 void selected_import(const QString& name, const QUrl& url); 0054 0055 protected: 0056 void mousePressEvent(QMouseEvent * event) override; 0057 void mouseDoubleClickEvent(QMouseEvent *event) override; 0058 0059 void paintEvent(QPaintEvent * event) override; 0060 0061 private: 0062 LottieFilesResult data; 0063 QImage preview = {}; 0064 QSize image_size{128, 128}; 0065 QSpacerItem* spacer; 0066 }; 0067 0068 } // namespace glaxnimate::gui