File indexing completed on 2024-09-15 04:49:16
0001 /* 0002 * SPDX-FileCopyrightText: 2012 Aleix Pol Gonzalez <aleixpol@blue-systems.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0005 */ 0006 0007 #pragma once 0008 0009 #include "discovercommon_export.h" 0010 #include "resources/AbstractResource.h" 0011 #include <QModelIndex> 0012 #include <QUrl> 0013 0014 class AbstractResource; 0015 0016 class DISCOVERCOMMON_EXPORT ScreenshotsModel : public QAbstractListModel 0017 { 0018 Q_OBJECT 0019 Q_PROPERTY(AbstractResource *application READ resource WRITE setResource NOTIFY resourceChanged) 0020 Q_PROPERTY(int count READ count NOTIFY countChanged) 0021 public: 0022 enum Roles { 0023 ThumbnailUrl = Qt::UserRole + 1, 0024 ScreenshotUrl, 0025 IsAnimatedRole, 0026 }; 0027 Q_ENUM(Roles) 0028 0029 explicit ScreenshotsModel(QObject *parent = nullptr); 0030 QHash<int, QByteArray> roleNames() const override; 0031 0032 AbstractResource *resource() const; 0033 void setResource(AbstractResource *res); 0034 0035 QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; 0036 int rowCount(const QModelIndex &parent = QModelIndex()) const override; 0037 int count() const; 0038 0039 Q_INVOKABLE void remove(const QUrl &url); 0040 0041 private Q_SLOTS: 0042 void screenshotsFetched(const Screenshots &screenshots); 0043 0044 Q_SIGNALS: 0045 void countChanged(); 0046 void resourceChanged(const AbstractResource *resource); 0047 0048 private: 0049 AbstractResource *m_resource; 0050 Screenshots m_screenshots; 0051 };