File 0001-fix_build_on_qt6.patch of Package nemo-qml-plugin-connectivity

From b0fe9ac91471203649a6bac40be17fe5756ed445 Mon Sep 17 00:00:00 2001
From: Chupligin Sergey <neochapay@gmail.com>
Date: Tue, 12 Mar 2024 07:05:41 +0000
Subject: [PATCH] Fixup build on Qt6

---
 src/nemo-connectivity/nemo-connectivity.pro | 10 ++-
 src/nemo-connectivity/settingsvpnmodel.cpp  | 69 +++++++++++++++++++++
 2 files changed, 76 insertions(+), 3 deletions(-)

diff --git a/src/nemo-connectivity/nemo-connectivity.pro b/src/nemo-connectivity/nemo-connectivity.pro
index 5509d98..40bb224 100644
--- a/src/nemo-connectivity/nemo-connectivity.pro
+++ b/src/nemo-connectivity/nemo-connectivity.pro
@@ -8,8 +8,12 @@ CONFIG += \
         create_prl \
         no_install_prl
 
-QT = dbus network qml xmlpatterns
-
+QT = dbus network qml
+lessThan(QT_MAJOR_VERSION, 6) {
+    QT+=xmlpatterns
+} else {
+    QT+=xml
+}
 INCLUDEPATH += ..
 
 DEFINES += NEMO_BUILD_CONNECTIVITY_LIBRARY
@@ -44,7 +48,7 @@ QMAKE_PKGCONFIG_LIBDIR = $$target.path
 QMAKE_PKGCONFIG_INCDIR = $$public_headers.path
 QMAKE_PKGCONFIG_DESTDIR = pkgconfig
 QMAKE_PKGCONFIG_VERSION = $$VERSION
-QMAKE_PKGCONFIG_REQUIRES = Qt5Core Qt5DBus connman-qt$${QT_MAJOR_VERSION}
+QMAKE_PKGCONFIG_REQUIRES = Qt$${QT_MAJOR_VERSION}Core Qt$${QT_MAJOR_VERSION}DBus connman-qt$${QT_MAJOR_VERSION}
 
 INSTALLS += \
         public_headers \
diff --git a/src/nemo-connectivity/settingsvpnmodel.cpp b/src/nemo-connectivity/settingsvpnmodel.cpp
index 3d1c62f..9f6241f 100644
--- a/src/nemo-connectivity/settingsvpnmodel.cpp
+++ b/src/nemo-connectivity/settingsvpnmodel.cpp
@@ -36,8 +36,12 @@
 #include <QCryptographicHash>
 #include <QQmlEngine>
 #include <QDir>
+#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
 #include <QXmlQuery>
 #include <QXmlResultItems>
+#else
+#include <QDomDocument>
+#endif
 #include <QSettings>
 #include <QLoggingCategory>
 
@@ -728,7 +732,11 @@ QVariantMap SettingsVpnModel::processOpenVpnProvisioningFile(QFile &provisioning
         } else if (!embeddedMarker.isEmpty()) {
             embeddedContent.append(line + QStringLiteral("\n"));
         } else {
+#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
             QStringList tokens(line.split(whitespace, QString::SkipEmptyParts));
+#else
+            QStringList tokens(line.split(whitespace, Qt::SkipEmptyParts));
+#endif
             if (!tokens.isEmpty()) {
                 // Find directives that become part of the connman configuration
                 const QString& directive(tokens.front());
@@ -888,7 +896,11 @@ QVariantMap SettingsVpnModel::processOpenVpnProvisioningFile(QFile &provisioning
             } else {
                 QTextStream os(&outputFile);
                 foreach (const QString &line, extraOptions) {
+#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
                     os << line << endl;
+#else
+                    os << line << Qt::endl;
+#endif
                 }
 
                 rv.insert(QStringLiteral("OpenVPN.ConfigFile"), outputFile.fileName());
@@ -992,6 +1004,7 @@ QVariantMap SettingsVpnModel::processOpenconnectProvisioningFile(QFile &provisio
 
     if (first == '<') {
 #define NS "declare default element namespace \"http://schemas.xmlsoap.org/encoding/\"; "
+#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
         QXmlQuery query;
         QXmlResultItems entries;
 
@@ -1032,6 +1045,34 @@ QVariantMap SettingsVpnModel::processOpenconnectProvisioningFile(QFile &provisio
                 rv.insert(QStringLiteral("OpenConnect.Usergroup"), userGroup[0]);
             }
         }
+#else
+        QDomDocument config("config");
+        if(provisioningFile.open(QIODevice::ReadOnly)) {
+            return QVariantMap();
+        }
+
+        if(config.setContent(&provisioningFile)) {
+            provisioningFile.close();
+            return QVariantMap();
+        }
+        QDomElement configElement = config.documentElement();
+        QDomNode configNode = configElement.firstChild();
+        while(!configNode.isNull()) {
+            QDomElement element = configNode.toElement();
+            if(!element.isNull()) {
+                if(element.tagName() == "Name") {
+                    rv.insert("Name", element.text());
+                }
+                if(element.tagName() == "Host") {
+                    rv.insert("Host", element.text());
+                }
+                if(element.tagName() == "OpenConnect.Usergroup") {
+                    rv.insert("OpenConnect.Usergroup", element.text());
+                }
+            }
+            configNode.nextSibling();
+        }
+#endif
     } else {
         struct ArgMapping {
             bool hasArgument;
@@ -1125,6 +1166,7 @@ QVariantMap SettingsVpnModel::processOpenfortivpnProvisioningFile(QFile &provisi
     }
 
     if (first == '<') {
+#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
         QXmlQuery query;
         QXmlResultItems entries;
 
@@ -1183,7 +1225,34 @@ QVariantMap SettingsVpnModel::processOpenfortivpnProvisioningFile(QFile &provisi
         if (option[0] == QLatin1String("0")) {
             rv.insert(QStringLiteral("openfortivpn.AllowSelfSignedCert"), QStringLiteral("true"));
         }
+#else
+        QDomDocument config("config");
+        if(provisioningFile.open(QIODevice::ReadOnly)) {
+            return QVariantMap();
+        }
 
+        if(config.setContent(&provisioningFile)) {
+            provisioningFile.close();
+            return QVariantMap();
+        }
+        QDomElement configElement = config.documentElement();
+        QDomNode configNode = configElement.firstChild();
+        while(!configNode.isNull()) {
+            QDomElement element = configNode.toElement();
+            if(!element.isNull()) {
+                if(element.tagName() == "Name") {
+                    rv.insert("Name", element.text());
+                }
+                if(element.tagName() == "Host") {
+                    rv.insert("Host", element.text());
+                }
+                if(element.tagName() == "openfortivpn.Port") {
+                    rv.insert("openfortivpn.Port", element.text());
+                }
+            }
+            configNode.nextSibling();
+        }
+#endif
     } else {
         QTextStream is(&provisioningFile);
 
openSUSE Build Service is sponsored by