qt: Fix filename handling in cryptoconfig
authorAndre Heinecke <aheinecke@intevation.de>
Thu, 26 Apr 2018 12:11:19 +0000 (14:11 +0200)
committerAndre Heinecke <aheinecke@intevation.de>
Thu, 26 Apr 2018 12:11:19 +0000 (14:11 +0200)
* src/qgpgmenewcryptoconfig.cpp (QGpgMENewCryptoConfigEntry::urlValue):
Build url from local file.
(QGpgMENewCryptoConfigEntry::setURLValue): Set native seperated
path.

--
This fixes setting files through cryptoconfig on Windows.
GnuPG-Bug-Id: T3939

lang/qt/src/qgpgmenewcryptoconfig.cpp

index ba028a9..070ab69 100644 (file)
@@ -42,6 +42,7 @@
 #include "gpgme_backend_debug.h"
 
 #include <QFile>
+#include <QDir>
 
 #include "global.h"
 #include "error.h"
@@ -521,8 +522,7 @@ QUrl QGpgMENewCryptoConfigEntry::urlValue() const
     Q_ASSERT(type == FilenameType || type == LdapServerType);
     Q_ASSERT(!isList());
     if (type == FilenameType) {
-        QUrl url;
-        url.setPath(QFile::decodeName(m_option.currentValue().stringValue()));
+        QUrl url = QUrl::fromLocalFile(m_option.currentValue().stringValue());
         return url;
     }
     return parseURL(type, stringValue());
@@ -635,7 +635,7 @@ void QGpgMENewCryptoConfigEntry::setURLValue(const QUrl &url)
     if (str.isEmpty() && !isOptional()) {
         m_option.resetToDefaultValue();
     } else if (type == FilenameType) {
-        m_option.setNewValue(m_option.createStringArgument(QFile::encodeName(str).constData()));
+        m_option.setNewValue(m_option.createStringArgument(QDir::toNativeSeparators(url.toLocalFile()).toUtf8().constData()));
     } else {
         m_option.setNewValue(m_option.createStringArgument(str.toUtf8().constData()));
     }