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.
This commit is contained in:
@@ -33,6 +33,9 @@
|
||||
|
||||
#include <boost/filesystem.hpp>
|
||||
#include <boost/filesystem/fstream.hpp>
|
||||
#if BOOST_FILESYSTEM_VERSION >= 3
|
||||
#include <boost/filesystem/detail/utf8_codecvt_facet.hpp>
|
||||
#endif
|
||||
|
||||
#include <QAbstractItemView>
|
||||
#include <QApplication>
|
||||
@@ -54,6 +57,10 @@
|
||||
#include <QUrlQuery>
|
||||
#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
|
||||
|
||||
Reference in New Issue
Block a user