From 7e591c19e70a151390eb2c0f83c3836178b76ee6 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Sat, 22 Mar 2014 10:22:42 +0100 Subject: qt: Do proper boost::path conversion Convert from QString unicode from/to the OS-dependent locale as used by boost::filesystem::path as needed. Solves #3916. --- src/qt/guiutil.cpp | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) (limited to 'src/qt/guiutil.cpp') diff --git a/src/qt/guiutil.cpp b/src/qt/guiutil.cpp index 4a4fece3e..26c56c5be 100644 --- a/src/qt/guiutil.cpp +++ b/src/qt/guiutil.cpp @@ -33,6 +33,9 @@ #include #include +#if BOOST_FILESYSTEM_VERSION >= 3 +#include +#endif #include #include @@ -54,6 +57,10 @@ #include #endif +#if BOOST_FILESYSTEM_VERSION >= 3 +static boost::filesystem::detail::utf8_codecvt_facet utf8; +#endif + namespace GUIUtil { QString dateTimeStr(const QDateTime &date) @@ -352,7 +359,7 @@ void openDebugLogfile() /* Open debug.log with the associated application */ if (boost::filesystem::exists(pathDebug)) - QDesktopServices::openUrl(QUrl::fromLocalFile(QString::fromStdString(pathDebug.string()))); + QDesktopServices::openUrl(QUrl::fromLocalFile(boostPathToQString(pathDebug))); } ToolTipToRichTextFilter::ToolTipToRichTextFilter(int size_threshold, QObject *parent) : @@ -718,4 +725,27 @@ void setClipboard(const QString& str) QApplication::clipboard()->setText(str, QClipboard::Selection); } +#if BOOST_FILESYSTEM_VERSION >= 3 +boost::filesystem::path qstringToBoostPath(const QString &path) +{ + return boost::filesystem::path(path.toStdString(), utf8); +} + +QString boostPathToQString(const boost::filesystem::path &path) +{ + return QString::fromStdString(path.string(utf8)); +} +#else +#warning Conversion between boost path and QString can use invalid character encoding with boost_filesystem v2 and older +boost::filesystem::path qstringToBoostPath(const QString &path) +{ + return boost::filesystem::path(path.toStdString()); +} + +QString boostPathToQString(const boost::filesystem::path &path) +{ + return QString::fromStdString(path.string()); +} +#endif + } // namespace GUIUtil -- cgit v1.2.3