diff options
| author | Nikita Kostovsky <nikita@kostovsky.me> | 2025-06-22 16:54:02 +0200 |
|---|---|---|
| committer | Nikita Kostovsky <nikita@kostovsky.me> | 2025-06-22 16:54:02 +0200 |
| commit | f674e179d602d3ccb9818d28fe06f371059449dc (patch) | |
| tree | 996fb624986512de91581a18332f004d34220ba2 /src/atomchannelimage.cpp | |
parse and insert feeds and items
Diffstat (limited to 'src/atomchannelimage.cpp')
| -rw-r--r-- | src/atomchannelimage.cpp | 69 |
1 files changed, 69 insertions, 0 deletions
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 <QXmlStreamReader> + +#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; +} |
