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 };