LCOV - code coverage report
Current view: top level - lib/FangFeedParser - OPMLExport.cpp (source / functions) Coverage Total Hit
Test: coverage.info.cleaned Lines: 91.4 % 35 32
Test Date: 2026-04-19 00:35:54 Functions: 100.0 % 1 1

            Line data    Source code
       1              : #include "OPMLExport.h"
       2              : #include "FeedParserLogging.h"
       3              : 
       4              : #include <QXmlStreamWriter>
       5              : #include <QDateTime>
       6              : #include <QFile>
       7              : 
       8            8 : bool OPMLExport::save(const QString &sFile, const QList<RawFeed*>& feeds)
       9              : {
      10            8 :     QFile file(sFile);
      11              : 
      12            8 :     if (!file.open(QIODevice::WriteOnly)) {
      13            0 :         qCWarning(logFeedParser) << "Could not open file: " << sFile << " error code: " << file.errorString();
      14            0 :         return false;
      15              :     }
      16              : 
      17              :     // Create date time string.
      18              :     // Format example: Tue, 18 Mar 2014 04:09:51 GMT
      19            8 :     QDateTime dateTime = QDateTime::currentDateTime();
      20            8 :     dateTime = dateTime.toUTC();
      21            8 :     QString dateTimeString = dateTime.toString("ddd, dd MMM yyyy hh:mm:ss") + " GMT";
      22              : 
      23              :     // Start the document.
      24            8 :     QXmlStreamWriter xmlWriter(&file);
      25            8 :     xmlWriter.setAutoFormatting(true);
      26            8 :     xmlWriter.writeStartDocument();
      27              : 
      28              :     // Main element.
      29              :     // <opml version="1.1">
      30            8 :     xmlWriter.writeStartElement("opml");
      31            8 :     xmlWriter.writeAttribute("version", "1.1");
      32              : 
      33              :     // Head element.
      34              :     //<head>
      35              :     //  <title>blah</title>
      36              :     //  <dateModified>Tue, 18 Mar 2014 04:09:51 GMT</dateModified>
      37              :     //</head>
      38            8 :     xmlWriter.writeStartElement("head");
      39            8 :     xmlWriter.writeTextElement("title", "Fang OPML export");
      40           16 :     xmlWriter.writeTextElement("dateModified", dateTimeString);
      41            8 :     xmlWriter.writeEndElement();
      42              : 
      43              :     // Start body.
      44            8 :     xmlWriter.writeStartElement("body");
      45              : 
      46              :     //
      47              :     // Here's where we write the feed list!
      48              :     //
      49              :     // <outline text="MrEricSir.com" title="MrEricSir.com" type="rss" xmlUrl="http://www.mrericsir.com/blog/feed/" htmlUrl="http://www.mrericsir.com/blog"/>
      50           15 :     for (const RawFeed* feed : feeds) {
      51            7 :         if (!feed) {
      52            0 :             continue;
      53              :         }
      54              : 
      55            7 :         xmlWriter.writeStartElement("outline");
      56              : 
      57           14 :         xmlWriter.writeAttribute("text", feed->title);
      58           14 :         xmlWriter.writeAttribute("title", feed->title);
      59            7 :         xmlWriter.writeAttribute("type", "rss");
      60           14 :         xmlWriter.writeAttribute("xmlUrl", feed->url.toString());
      61            7 :         if (feed->siteURL.isValid()) {
      62           12 :             xmlWriter.writeAttribute("htmlUrl", feed->siteURL.toString());
      63              :         }
      64              : 
      65            7 :         xmlWriter.writeEndElement();
      66              :     }
      67              : 
      68              : 
      69              :     // End body element.
      70            8 :     xmlWriter.writeEndElement();
      71              : 
      72              :     // End main element.
      73            8 :     xmlWriter.writeEndElement();
      74              : 
      75              :     // Finish 'er up.
      76            8 :     xmlWriter.writeEndDocument();
      77            8 :     file.close();
      78              : 
      79            8 :     return true;
      80            8 : }
        

Generated by: LCOV version 2.0-1