Syndication
9 #include <rss2/category.h>
10 #include <rss2/enclosure.h>
11 #include <rss2/item.h>
12 #include <rss2/source.h>
13 #include <rss2/tools_p.h>
14 #include <specificitem.h>
15 #include <specificitemvisitor.h>
18 #include <QDomElement>
28 class SYNDICATION_NO_EXPORT
Item::ItemPrivate
42 : ElementWrapper(element)
52 Item::Item(
const Item &other)
53 : ElementWrapper(other)
59 Item &Item::operator=(
const Item &other)
61 ElementWrapper::operator=(other);
62 SpecificItem::operator=(other);
70 return originalTitle();
74 bool containsMarkup =
false;
75 d->doc->getItemTitleFormatInfo(&isCDATA, &containsMarkup);
77 return normalize(originalTitle(), isCDATA, containsMarkup);
80 QString Item::originalDescription()
const
82 return extractElementTextNS(
QString(), QStringLiteral(
"description"));
85 QString Item::originalTitle()
const
87 return extractElementTextNS(
QString(), QStringLiteral(
"title"));
92 QString url = extractElementTextNS(
QString(), QStringLiteral(
"link"));
99 if (d->doc->link().isEmpty()) {
104 QString baseUrl = d->doc->link();
106 return baseUrl + url;
115 return originalDescription();
118 bool isCDATA =
false;
119 bool containsMarkup =
false;
120 d->doc->getItemDescriptionFormatInfo(&isCDATA, &containsMarkup);
122 return normalize(originalDescription(), isCDATA, containsMarkup);
128 return extractContent(*
this);
139 return Category(element);
147 return extractElementTextNS(
QString(), QStringLiteral(
"comments"));
152 QString a = extractElementTextNS(
QString(), QStringLiteral(
"author"));
157 return extractElementTextNS(dublinCoreNamespace(), QStringLiteral(
"creator"));
169 return Enclosure(element);
177 return extractElementTextNS(
QString(), QStringLiteral(
"guid"));
180 bool Item::guidIsPermaLink()
const
182 bool guidIsPermaLink =
true;
187 guidIsPermaLink =
false;
191 return guidIsPermaLink;
194 time_t Item::pubDate()
const
196 QString str = extractElementTextNS(
QString(), QStringLiteral(
"pubDate"));
199 return parseDate(str, RFCDate);
203 str = extractElementTextNS(dublinCoreNamespace(), QStringLiteral(
"date"));
204 return parseDate(str, ISODate);
207 time_t Item::expirationDate()
const
209 QString str = extractElementTextNS(
QString(), QStringLiteral(
"expirationDate"));
210 return parseDate(str, RFCDate);
213 Source Item::source()
const
215 return Source(firstElementByTagNameNS(
QString(), QStringLiteral(
"source")));
220 return extractElementTextNS(
QString(), QStringLiteral(
"rating"));
226 if (!
title().isNull()) {
229 if (!
link().isNull()) {
238 if (!author().isNull()) {
241 if (!comments().isNull()) {
248 if (!guid().isNull()) {
251 if (guidIsPermaLink()) {
254 if (!source().isNull()) {
255 info += source().debugInfo();
259 for (
const auto &c : cats) {
260 info += c.debugInfo();
264 for (
const auto &e : encs) {
265 info += e.debugInfo();
275 static std::vector<ElementType> handled;
276 if (handled.empty()) {
278 handled.push_back(ElementType(QStringLiteral(
"title")));
279 handled.push_back(ElementType(QStringLiteral(
"link")));
280 handled.push_back(ElementType(QStringLiteral(
"description")));
281 handled.push_back(ElementType(QStringLiteral(
"pubDate")));
282 handled.push_back(ElementType(QStringLiteral(
"expirationDate")));
283 handled.push_back(ElementType(QStringLiteral(
"rating")));
284 handled.push_back(ElementType(QStringLiteral(
"source")));
285 handled.push_back(ElementType(QStringLiteral(
"guid")));
286 handled.push_back(ElementType(QStringLiteral(
"comments")));
287 handled.push_back(ElementType(QStringLiteral(
"author")));
288 handled.push_back(ElementType(QStringLiteral(
"date"), dublinCoreNamespace()));
294 const int numChildren = children.
size();
295 for (
int i = 0; i < numChildren; ++i) {
298 && std::find(handled.cbegin(), handled.cend(), ElementType(el.
localName(), el.
namespaceURI())) == handled.cend()) {
306 bool Item::accept(SpecificItemVisitor *visitor)
308 return visitor->visitRSS2Item(
this);
void append(const T &value)
virtual ~Item()
destructor
bool endsWith(const QString &s, Qt::CaseSensitivity cs) const const
bool isNull() const const
QDomElement toElement() const const
virtual QString content() const =0
returns the content of the item.
int count(const T &value) const const
bool isNull() const const
virtual QList< EnclosurePtr > enclosures() const =0
returns a list of enclosures describing files available on the net.
QString normalize(QStringView str)
QDomNode at(int index) const const
QString namespaceURI() const const
virtual QString title() const =0
The title of the item.
virtual QString debugInfo() const
returns a description of the item for debugging purposes
QString localName() const const
virtual QList< CategoryPtr > categories() const =0
returns a list of categories this item is filed in.
bool isEmpty() const const
virtual QString description() const =0
returns the description of the item.
QList::const_iterator cend() const const
bool startsWith(const QString &s, Qt::CaseSensitivity cs) const const
QList::const_iterator cbegin() const const
virtual QString link() const =0
returns a link to the (web) resource described by this item.
QString attribute(const QString &name, const QString &defValue) const const
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Tue Dec 5 2023 03:58:07 by
doxygen 1.8.17 written
by
Dimitri van Heesch, © 1997-2006
KDE's Doxygen guidelines are available online.