File indexing completed on 2024-05-12 16:21:29
0001 /** 0002 * SPDX-FileCopyrightText: 2020 Tobias Fella <tobias.fella@kde.org> 0003 * SPDX-FileCopyrightText: 2021-2023 Bart De Vries <bart@mogwai.be> 0004 * 0005 * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0006 */ 0007 0008 #pragma once 0009 0010 #include <QDateTime> 0011 #include <QDebug> 0012 #include <QObject> 0013 #include <QString> 0014 #include <QStringList> 0015 0016 #include "author.h" 0017 #include "enclosure.h" 0018 #include "feed.h" 0019 0020 class Entry : public QObject 0021 { 0022 Q_OBJECT 0023 0024 Q_PROPERTY(Feed *feed READ feed CONSTANT) 0025 Q_PROPERTY(QString id READ id CONSTANT) 0026 Q_PROPERTY(QString title READ title NOTIFY titleChanged) 0027 Q_PROPERTY(QString content READ content NOTIFY contentChanged) 0028 Q_PROPERTY(QVector<Author *> authors READ authors NOTIFY authorsChanged) 0029 Q_PROPERTY(QDateTime created READ created NOTIFY createdChanged) 0030 Q_PROPERTY(QDateTime updated READ updated NOTIFY updatedChanged) 0031 Q_PROPERTY(QString link READ link NOTIFY linkChanged) 0032 Q_PROPERTY(QString baseUrl READ baseUrl NOTIFY baseUrlChanged) 0033 Q_PROPERTY(bool read READ read WRITE setRead NOTIFY readChanged) 0034 Q_PROPERTY(bool new READ getNew WRITE setNew NOTIFY newChanged) 0035 Q_PROPERTY(bool favorite READ favorite WRITE setFavorite NOTIFY favoriteChanged) 0036 Q_PROPERTY(Enclosure *enclosure READ enclosure CONSTANT) 0037 Q_PROPERTY(bool hasEnclosure READ hasEnclosure NOTIFY hasEnclosureChanged) 0038 Q_PROPERTY(QString image READ image NOTIFY imageChanged) 0039 Q_PROPERTY(QString cachedImage READ cachedImage NOTIFY cachedImageChanged) 0040 Q_PROPERTY(bool queueStatus READ queueStatus WRITE setQueueStatus NOTIFY queueStatusChanged) 0041 0042 public: 0043 Entry(Feed *feed, const QString &id); 0044 ~Entry(); 0045 0046 QString id() const; 0047 QString title() const; 0048 QString content() const; 0049 QVector<Author *> authors() const; 0050 QDateTime created() const; 0051 QDateTime updated() const; 0052 QString link() const; 0053 bool read() const; 0054 bool getNew() const; 0055 bool favorite() const; 0056 Enclosure *enclosure() const; 0057 bool hasEnclosure() const; 0058 QString image() const; 0059 QString cachedImage() const; 0060 bool queueStatus() const; 0061 Feed *feed() const; 0062 0063 QString baseUrl() const; 0064 0065 void setRead(bool read); 0066 void setNew(bool state); 0067 void setFavorite(bool favorite); 0068 void setQueueStatus(bool status); 0069 0070 Q_INVOKABLE QString adjustedContent(int width, int fontSize); 0071 0072 void setNewInternal(bool state); 0073 void setReadInternal(bool read); 0074 void setFavoriteInternal(bool favorite); 0075 void setQueueStatusInternal(bool state); 0076 0077 Q_SIGNALS: 0078 void titleChanged(const QString &title); 0079 void contentChanged(const QString &content); 0080 void authorsChanged(const QVector<Author *> &authors); 0081 void createdChanged(const QDateTime &created); 0082 void updatedChanged(const QDateTime &updated); 0083 void linkChanged(const QString &link); 0084 void baseUrlChanged(const QString &baseUrl); 0085 void readChanged(bool read); 0086 void newChanged(bool state); 0087 void favoriteChanged(bool favorite); 0088 void hasEnclosureChanged(bool hasEnclosure); 0089 void imageChanged(const QString &url); 0090 void cachedImageChanged(const QString &imagePath); 0091 void queueStatusChanged(bool queueStatus); 0092 0093 private: 0094 void updateFromDb(bool emitSignals = true); 0095 void updateAuthors(bool emitSignals = true); 0096 void setTitle(const QString &title, bool emitSignal = true); 0097 void setContent(const QString &content, bool emitSignal = true); 0098 void setCreated(const QDateTime &created, bool emitSignal = true); 0099 void setUpdated(const QDateTime &updated, bool emitSignal = true); 0100 void setLink(const QString &link, bool emitSignal = true); 0101 void setHasEnclosure(bool hasEnclosure, bool emitSignal = true); 0102 void setImage(const QString &url, bool emitSignal = true); 0103 0104 Feed *m_feed; 0105 QString m_id; 0106 QString m_title; 0107 QString m_content; 0108 QVector<Author *> m_authors; 0109 QDateTime m_created; 0110 QDateTime m_updated; 0111 QString m_link; 0112 bool m_read; 0113 bool m_new; 0114 bool m_favorite; 0115 Enclosure *m_enclosure = nullptr; 0116 QString m_image; 0117 bool m_hasenclosure = false; 0118 };