r24229 by jghali - Fix use of obsolete QXmlSimpleReader class in HelpBrowser

scribus-commit scribus-commit at lists.scribus.net
Wed Nov 11 15:18:51 UTC 2020


Author: jghali
Date: Wed Nov 11 15:18:51 2020
New Revision: 24229

URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=24229
Log:
Fix use of obsolete QXmlSimpleReader class in HelpBrowser

Modified:
    trunk/Scribus/scribus/ui/helpbrowser.cpp

Modified: trunk/Scribus/scribus/ui/helpbrowser.cpp
URL: http://scribus.net/websvn/diff.php?repname=Scribus&rev=24229&path=/trunk/Scribus/scribus/ui/helpbrowser.cpp
==============================================================================
--- trunk/Scribus/scribus/ui/helpbrowser.cpp	(original)
+++ trunk/Scribus/scribus/ui/helpbrowser.cpp	Wed Nov 11 15:18:51 2020
@@ -54,7 +54,7 @@
 #include <QTextEdit>
 #include <QTreeView>
 #include <QVector>
-#include <QXmlDefaultHandler>
+#include <QXmlStreamReader>
 
 #include "prefsmanager.h"
 #include "scribuscore.h"
@@ -68,31 +68,40 @@
 The reference to historyBrowser is a reference to the dialog.
 \author Petr Vanek <petr at yarpen.cz>
 */
-class HistoryParser2 : public QXmlDefaultHandler
+class HistoryParser2
 {
 	public:
-		HelpBrowser *helpBrowser;
-
-		bool startDocument()
-		{
-			return true;
-		}
-
-		bool startElement(const QString&, const QString&, const QString& qName, const QXmlAttributes& attrs)
-		{
-			if (qName == "item")
+		HelpBrowser *helpBrowser { nullptr };
+
+		bool parse(const QString& fileName)
+		{
+			QFile qFile(fileName);
+			if (!qFile.open(QFile::ReadOnly))
+				return false;
+
+			QXmlStreamReader sReader(&qFile);
+			QXmlStreamReader::TokenType tagType;
+			QStringRef tagName;
+
+			while (!sReader.atEnd() && !sReader.hasError())
 			{
+				tagType = sReader.readNext();
+				if (tagType != QXmlStreamReader::StartElement)
+					continue;
+
+				tagName = sReader.name();
+				if (tagName != "item")
+					continue;
+
 				struct histd2 his;
-				his.title = attrs.value(0);
-				his.url = attrs.value(1);
+				QXmlStreamAttributes attrs = sReader.attributes();
+				his.title = attrs.value(QLatin1String("title")).toString();
+				his.url = attrs.value(QLatin1String("url")).toString();
 				helpBrowser->addHistoryItem(his);
 			}
-			return true;
-		}
-
-		bool endElement(const QString&, const QString&, const QString&)
-		{
-			return true;
+			qFile.close();
+
+			return (!sReader.hasError());
 		}
 };
 
@@ -102,35 +111,48 @@
 The reference to QListView *view is a reference to the list view with bookmarks
 \author Petr Vanek <petr at yarpen.cz>
 */
-class BookmarkParser2 : public QXmlDefaultHandler
+class BookmarkParser2
 {
 	public:
-		QTreeWidget* view;
-		QMap<QString, QString>* quickHelpIndex;
-		QMap<QString, QPair<QString, QString> >* bookmarkIndex;
-
-		bool startDocument()
-		{
-			return true;
-		}
-
-		bool startElement(const QString&, const QString&, const QString& qName, const QXmlAttributes& attrs)
-		{
-			if (qName == "item")
+		QTreeWidget* view { nullptr };
+		QMap<QString, QString>* quickHelpIndex { nullptr };
+		QMap<QString, QPair<QString, QString> >* bookmarkIndex { nullptr };
+
+		bool parse(const QString& fileName)
+		{
+			QFile qFile(fileName);
+			if (!qFile.open(QFile::ReadOnly))
+				return false;
+
+			QXmlStreamReader sReader(&qFile);
+			QXmlStreamReader::TokenType tagType;
+			QStringRef tagName;
+
+			while (!sReader.atEnd() && !sReader.hasError())
 			{
+				tagType = sReader.readNext();
+				if (tagType != QXmlStreamReader::StartElement)
+					continue;
+
+				tagName = sReader.name();
+				if (tagName != "item")
+					continue;
+
+				QXmlStreamAttributes attrs = sReader.attributes();
+				QString title = attrs.value(QLatin1String("title")).toString();
+				QString pageTitle = attrs.value(QLatin1String("pagetitle")).toString();
+				QString pageUrl = attrs.value(QLatin1String("url")).toString();
+
 				//TODO : This will dump items if bookmarks get loaded into a different GUI language
-				if (quickHelpIndex->contains(attrs.value(1)))
+				if (quickHelpIndex->contains(pageTitle))
 				{
-					bookmarkIndex->insert(attrs.value(0), qMakePair(attrs.value(1), attrs.value(2)));
-					view->addTopLevelItem(new QTreeWidgetItem(view, QStringList() << attrs.value(0)));
+					bookmarkIndex->insert(title, qMakePair(pageTitle, pageUrl));
+					view->addTopLevelItem(new QTreeWidgetItem(view, QStringList() << title));
 				}
 			}
-			return true;
-		}
-
-		bool endElement(const QString&, const QString&, const QString&)
-		{
-			return true;
+			qFile.close();
+
+			return (!sReader.hasError());
 		}
 };
 
@@ -635,26 +657,18 @@
 
 void HelpBrowser::readBookmarks()
 {
-	BookmarkParser2 handler;
-	handler.view = helpNav->bookmarksView;
-	handler.quickHelpIndex = &m_quickHelpIndex;
-	handler.bookmarkIndex = &m_bookmarkIndex;
-	QFile xmlFile(bookmarkFile());
-	QXmlInputSource source(&xmlFile);
-	QXmlSimpleReader reader;
-	reader.setContentHandler(&handler);
-	reader.parse(source);
+	BookmarkParser2 bookmarkParser;
+	bookmarkParser.view = helpNav->bookmarksView;
+	bookmarkParser.quickHelpIndex = &m_quickHelpIndex;
+	bookmarkParser.bookmarkIndex = &m_bookmarkIndex;
+	bookmarkParser.parse(bookmarkFile());
 }
 
 void HelpBrowser::readHistory()
 {
- 	HistoryParser2 handler;
- 	handler.helpBrowser = this;
- 	QFile xmlFile(historyFile());
- 	QXmlInputSource source(&xmlFile);
- 	QXmlSimpleReader reader;
- 	reader.setContentHandler(&handler);
- 	reader.parse(source);
+ 	HistoryParser2 historyParser;
+ 	historyParser.helpBrowser = this;
+	historyParser.parse(historyFile());
 }
 
 void HelpBrowser::itemSelected(const QItemSelection & selected, const QItemSelection & deselected)




More information about the scribus-commit mailing list