File indexing completed on 2024-05-12 05:12:54
0001 /* 0002 SPDX-FileCopyrightText: 2016-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "articlegrantleeobject.h" 0008 #include "feed.h" 0009 #include "grantleeutil.h" 0010 #include "utils.h" 0011 #include <QDateTime> 0012 #include <QLocale> 0013 #include <QUrl> 0014 #include <QUrlQuery> 0015 0016 using namespace Akregator; 0017 0018 ArticleGrantleeObject::ArticleGrantleeObject(const Article &article, ArticleFormatter::IconOption iconOption, QObject *parent) 0019 : QObject(parent) 0020 , mArticle(article) 0021 , mArticleFormatOption(iconOption) 0022 { 0023 } 0024 0025 ArticleGrantleeObject::~ArticleGrantleeObject() = default; 0026 0027 ArticleGrantleeObject::ArticleStatus ArticleGrantleeObject::articleStatus() const 0028 { 0029 if (mArticle.status() == ArticleStatus::Read) { 0030 return ArticleGrantleeObject::Read; 0031 } else if (mArticle.status() == ArticleStatus::Unread) { 0032 return ArticleGrantleeObject::Unread; 0033 } else { 0034 return ArticleGrantleeObject::New; 0035 } 0036 } 0037 0038 QString ArticleGrantleeObject::strippedTitle() const 0039 { 0040 return Akregator::Utils::stripTags(mArticle.title()); 0041 } 0042 0043 QString ArticleGrantleeObject::author() const 0044 { 0045 return mArticle.authorAsHtml(); 0046 } 0047 0048 QString ArticleGrantleeObject::content() const 0049 { 0050 return mArticle.content(Article::DescriptionAsFallback); 0051 } 0052 0053 QString ArticleGrantleeObject::articleLinkUrl() const 0054 { 0055 return mArticle.link().url(); 0056 } 0057 0058 QString ArticleGrantleeObject::articlePubDate() const 0059 { 0060 if (mArticle.pubDate().isValid()) { 0061 return QLocale().toString(mArticle.pubDate(), QLocale::ShortFormat); 0062 } 0063 return {}; 0064 } 0065 0066 QString ArticleGrantleeObject::enclosure() const 0067 { 0068 const QString enc = ArticleFormatter::formatEnclosure(*mArticle.enclosure()); 0069 return enc; 0070 } 0071 0072 QString ArticleGrantleeObject::articleCompleteStoryLink() const 0073 { 0074 QString link; 0075 if (mArticle.link().isValid() || (mArticle.guidIsPermaLink() && QUrl(mArticle.guid()).isValid())) { 0076 // in case link isn't valid, fall back to the guid permaLink. 0077 if (mArticle.link().isValid()) { 0078 link = mArticle.link().url(); 0079 } else { 0080 link = mArticle.guid(); 0081 } 0082 } 0083 return link; 0084 } 0085 0086 QString ArticleGrantleeObject::imageFeed() const 0087 { 0088 QString text; 0089 if (mArticleFormatOption == ArticleFormatter::ShowIcon && mArticle.feed() && !mArticle.feed()->logoInfo().imageUrl.isEmpty()) { 0090 const Feed *feed = mArticle.feed(); 0091 text += GrantleeUtil::imageFeed(feed); 0092 } 0093 return text; 0094 } 0095 0096 QString ArticleGrantleeObject::actionToken() const 0097 { 0098 QUrlQuery query; 0099 query.addQueryItem(QStringLiteral("id"), mArticle.guid()); 0100 if (mArticle.feed()) { 0101 query.addQueryItem(QStringLiteral("feed"), mArticle.feed()->xmlUrl()); 0102 } 0103 return QLatin1Char('?') + query.toString(QUrl::FullyEncoded); 0104 } 0105 0106 bool ArticleGrantleeObject::important() const 0107 { 0108 return mArticle.keep(); 0109 } 0110 0111 #include "moc_articlegrantleeobject.cpp"