File indexing completed on 2024-05-12 16:23:39

0001 /*
0002  * SPDX-FileCopyrightText: 2020 Tobias Fella <fella@posteo.de>
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 <QDateTime>
0010 #include <QObject>
0011 
0012 #include "author.h"
0013 
0014 class EntriesModel;
0015 
0016 class Feed : public QObject
0017 {
0018     Q_OBJECT
0019 
0020     Q_PROPERTY(QString url READ url CONSTANT)
0021     Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)
0022     Q_PROPERTY(QString displayName READ displayName WRITE setDisplayName NOTIFY displayNameChanged)
0023     Q_PROPERTY(QString image READ image WRITE setImage NOTIFY imageChanged)
0024     Q_PROPERTY(QString link READ link WRITE setLink NOTIFY linkChanged)
0025     Q_PROPERTY(QString description READ description WRITE setDescription NOTIFY descriptionChanged)
0026     Q_PROPERTY(QString groupName READ groupName WRITE setGroupName NOTIFY groupNameChanged)
0027     Q_PROPERTY(QVector<Author *> authors READ authors WRITE setAuthors NOTIFY authorsChanged)
0028     Q_PROPERTY(bool refreshing READ refreshing WRITE setRefreshing NOTIFY refreshingChanged)
0029     Q_PROPERTY(int deleteAfterCount READ deleteAfterCount WRITE setDeleteAfterCount NOTIFY deleteAfterCountChanged)
0030     Q_PROPERTY(int deleteAfterType READ deleteAfterType WRITE setDeleteAfterType NOTIFY deleteAfterTypeChanged)
0031     Q_PROPERTY(QDateTime subscribed READ subscribed CONSTANT)
0032     Q_PROPERTY(QDateTime lastUpdated READ lastUpdated WRITE setLastUpdated NOTIFY lastUpdatedChanged)
0033     Q_PROPERTY(bool notify READ notify WRITE setNotify NOTIFY notifyChanged)
0034     Q_PROPERTY(int entryCount READ entryCount NOTIFY entryCountChanged)
0035     Q_PROPERTY(int unreadEntryCount READ unreadEntryCount NOTIFY unreadEntryCountChanged)
0036     Q_PROPERTY(int errorId READ errorId WRITE setErrorId NOTIFY errorIdChanged)
0037     Q_PROPERTY(QString errorString READ errorString WRITE setErrorString NOTIFY errorStringChanged)
0038     Q_PROPERTY(EntriesModel *entries MEMBER m_entries CONSTANT)
0039 
0040 public:
0041     explicit Feed(int index);
0042 
0043     ~Feed();
0044 
0045     QString url() const;
0046     QString name() const;
0047     QString displayName() const;
0048     QString image() const;
0049     QString link() const;
0050     QString description() const;
0051     QString groupName() const;
0052     QVector<Author *> authors() const;
0053     int deleteAfterCount() const;
0054     int deleteAfterType() const;
0055     QDateTime subscribed() const;
0056     QDateTime lastUpdated() const;
0057     bool notify() const;
0058     int entryCount() const;
0059     int unreadEntryCount() const;
0060     bool read() const;
0061     int errorId() const;
0062     QString errorString() const;
0063 
0064     bool refreshing() const;
0065 
0066     void setName(const QString &name);
0067     void setDisplayName(const QString &displayName);
0068     void setImage(const QString &image);
0069     void setLink(const QString &link);
0070     void setDescription(const QString &description);
0071     void setGroupName(const QString &groupName);
0072     void setAuthors(const QVector<Author *> &authors);
0073     void setDeleteAfterCount(int count);
0074     void setDeleteAfterType(int type);
0075     void setLastUpdated(const QDateTime &lastUpdated);
0076     void setNotify(bool notify);
0077     void setRefreshing(bool refreshing);
0078     void setErrorId(int errorId);
0079     void setErrorString(const QString &errorString);
0080 
0081     Q_INVOKABLE void refresh();
0082     void remove();
0083 
0084 Q_SIGNALS:
0085     void nameChanged(const QString &name);
0086     void displayNameChanged(const QString &displayName);
0087     void imageChanged(const QString &image);
0088     void linkChanged(const QString &link);
0089     void descriptionChanged(const QString &description);
0090     void groupNameChanged(const QString &groupName);
0091     void authorsChanged(const QVector<Author *> &authors);
0092     void deleteAfterCountChanged(int count);
0093     void deleteAfterTypeChanged(int type);
0094     void lastUpdatedChanged(const QDateTime &lastUpdated);
0095     void notifyChanged(bool notify);
0096     void entryCountChanged();
0097     void unreadEntryCountChanged();
0098     void errorIdChanged(int &errorId);
0099     void errorStringChanged(const QString &errorString);
0100 
0101     void refreshingChanged(bool refreshing);
0102 
0103 private:
0104     QString m_url;
0105     QString m_name;
0106     QString m_display_name;
0107     QString m_image;
0108     QString m_link;
0109     QString m_description;
0110     QString m_group_name;
0111     QVector<Author *> m_authors;
0112     int m_deleteAfterCount;
0113     int m_deleteAfterType;
0114     QDateTime m_subscribed;
0115     QDateTime m_lastUpdated;
0116     bool m_notify;
0117     int m_errorId;
0118     QString m_errorString;
0119     EntriesModel *m_entries;
0120 
0121     bool m_refreshing = false;
0122 };