summaryrefslogtreecommitdiff
path: root/src/atomchannelimage.cpp
diff options
context:
space:
mode:
authorNikita Kostovsky <nikita@kostovsky.me>2025-06-22 16:54:02 +0200
committerNikita Kostovsky <nikita@kostovsky.me>2025-06-22 16:54:02 +0200
commitf674e179d602d3ccb9818d28fe06f371059449dc (patch)
tree996fb624986512de91581a18332f004d34220ba2 /src/atomchannelimage.cpp
parse and insert feeds and items
Diffstat (limited to 'src/atomchannelimage.cpp')
-rw-r--r--src/atomchannelimage.cpp69
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;
+}