File indexing completed on 2024-05-12 05:13:02
0001 /* 0002 This file is part of Akregator. 0003 0004 SPDX-FileCopyrightText: 2005 Frank Osterfeld <osterfeld@kde.org> 0005 0006 SPDX-License-Identifier: GPL-2.0-or-later WITH Qt-Commercial-exception-1.0 0007 */ 0008 #pragma once 0009 0010 #include <QObject> 0011 0012 #include "akregator_export.h" 0013 0014 #include <memory> 0015 0016 namespace Akregator 0017 { 0018 namespace Backend 0019 { 0020 class Storage; 0021 class AKREGATOR_EXPORT FeedStorage : public QObject 0022 { 0023 public: 0024 FeedStorage(const QString &url, Storage *main); 0025 ~FeedStorage(); 0026 0027 [[nodiscard]] int unread() const; 0028 void setUnread(int unread); 0029 [[nodiscard]] int totalCount() const; 0030 [[nodiscard]] QDateTime lastFetch() const; 0031 void setLastFetch(const QDateTime &lastFetch); 0032 0033 [[nodiscard]] QStringList articles() const; 0034 0035 void article(const QString &guid, uint &hash, QString &title, int &status, QDateTime &pubDate) const; 0036 bool contains(const QString &guid) const; 0037 void addEntry(const QString &guid); 0038 void deleteArticle(const QString &guid); 0039 [[nodiscard]] bool guidIsHash(const QString &guid) const; 0040 void setGuidIsHash(const QString &guid, bool isHash); 0041 bool guidIsPermaLink(const QString &guid) const; 0042 void setGuidIsPermaLink(const QString &guid, bool isPermaLink); 0043 [[nodiscard]] uint hash(const QString &guid) const; 0044 void setHash(const QString &guid, uint hash); 0045 void setDeleted(const QString &guid); 0046 [[nodiscard]] QString link(const QString &guid) const; 0047 void setLink(const QString &guid, const QString &link); 0048 [[nodiscard]] QDateTime pubDate(const QString &guid) const; 0049 void setPubDate(const QString &guid, const QDateTime &pubdate); 0050 [[nodiscard]] int status(const QString &guid) const; 0051 void setStatus(const QString &guid, int status); 0052 [[nodiscard]] QString title(const QString &guid) const; 0053 void setTitle(const QString &guid, const QString &title); 0054 [[nodiscard]] QString description(const QString &guid) const; 0055 void setDescription(const QString &guid, const QString &description); 0056 [[nodiscard]] QString content(const QString &guid) const; 0057 void setContent(const QString &guid, const QString &content); 0058 0059 void setEnclosure(const QString &guid, const QString &url, const QString &type, int length); 0060 void removeEnclosure(const QString &guid); 0061 void enclosure(const QString &guid, bool &hasEnclosure, QString &url, QString &type, int &length) const; 0062 0063 void setAuthorName(const QString &guid, const QString &name); 0064 void setAuthorUri(const QString &guid, const QString &uri); 0065 void setAuthorEMail(const QString &guid, const QString &email); 0066 0067 [[nodiscard]] QString authorName(const QString &guid) const; 0068 [[nodiscard]] QString authorUri(const QString &guid) const; 0069 [[nodiscard]] QString authorEMail(const QString &guid) const; 0070 0071 void setCategories(const QString &, const QStringList &categories); 0072 [[nodiscard]] QStringList categories(const QString &guid) const; 0073 0074 void close(); 0075 void commit(); 0076 void rollback(); 0077 0078 private: 0079 void markDirty(); 0080 /** finds article by guid, returns -1 if not in archive **/ 0081 int findArticle(const QString &guid) const; 0082 void setTotalCount(int total); 0083 0084 private: 0085 class FeedStoragePrivate; 0086 std::unique_ptr<FeedStoragePrivate> const d; 0087 }; 0088 } // namespace Backend 0089 } // namespace Akregator