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 : }
|