LCOV - code coverage report
Current view: top level - src/utilities - OPMLExport.cpp (source / functions) Coverage Total Hit
Test: coverage.info.cleaned Lines: 84.6 % 39 33
Test Date: 2026-01-27 22:31:25 Functions: 50.0 % 2 1

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

Generated by: LCOV version 2.0-1