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