From f674e179d602d3ccb9818d28fe06f371059449dc Mon Sep 17 00:00:00 2001 From: Nikita Kostovsky Date: Sun, 22 Jun 2025 16:54:02 +0200 Subject: parse and insert feeds and items --- src/atomchannelimage.cpp | 69 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 src/atomchannelimage.cpp (limited to 'src/atomchannelimage.cpp') diff --git a/src/atomchannelimage.cpp b/src/atomchannelimage.cpp new file mode 100644 index 0000000..4b9210d --- /dev/null +++ b/src/atomchannelimage.cpp @@ -0,0 +1,69 @@ +#include "atomchannelimage.h" + +#include + +#include "macros.h" + +AtomChannelImage::AtomChannelImage(QXmlStreamReader *xmlReader) +{ + Q_ASSERT(xmlReader != nullptr); + + const QString urlTag{"url"}; + const QString titleTag{"title"}; + const QString linkTag{"link"}; + const QString widthTag{"width"}; + const QString heightTag{"height"}; + + while (!xmlReader->atEnd() && !xmlReader->hasError()) { + const auto itemNext = xmlReader->readNext(); + + switch (itemNext) { + case QXmlStreamReader::TokenType::StartElement: { + const auto name = xmlReader->name(); + // qDebug() << __func__ << ":" << name; + const auto elementText = xmlReader->readElementText(); + + if (name == urlTag) + url = elementText; + else if (name == titleTag) + title = elementText; + else if (name == linkTag) + link = elementText; + else if (name == widthTag) + width = elementText.toInt(); + else if (name == heightTag) + height = elementText.toInt(); + + break; + } + case QXmlStreamReader::TokenType::EndElement: + // qDebug() << "EndElement: " << xmlReader->name(); + return; + case QXmlStreamReader::TokenType::Characters: + const auto characters = xmlReader->text().toString().simplified(); + + if (characters.isEmpty()) + break; + + qDebug() << "image: characters: " << characters; + break; + } + } +} + +QDebug operator<<(QDebug debug, const AtomChannelImage &image) +{ + QDebugStateSaver saver{debug}; + + debug.nospace() << typeid(AtomChannelImage).name() << " {" << Qt::endl; + + PRINT_ATOM_FIELD(image, url); + PRINT_ATOM_FIELD(image, title); + PRINT_ATOM_FIELD(image, link); + PRINT_ATOM_FIELD(image, width); + PRINT_ATOM_FIELD(image, height); + + debug.nospace() << "}"; + + return debug; +} -- cgit v1.2.3-70-g09d2