Windows:confgui: process windows file names as unicode, no local8bit

This commit is contained in:
Jean-Francois Dockes 2019-07-22 15:48:40 +02:00
parent 30f37f0e23
commit 21b918d447

View File

@ -56,9 +56,12 @@ static const int margin = 2;
void ConfParamW::setValue(const QString& value) void ConfParamW::setValue(const QString& value)
{ {
#ifndef _WIN32
// On Windows all paths are unicode.
if (m_fsencoding) if (m_fsencoding)
m_cflink->set(string((const char *)value.toLocal8Bit())); m_cflink->set(string((const char *)value.toLocal8Bit()));
else else
#endif
m_cflink->set(string((const char *)value.toUtf8())); m_cflink->set(string((const char *)value.toUtf8()));
} }
@ -158,9 +161,12 @@ void ConfParamStrW::loadValue()
{ {
string s; string s;
m_cflink->get(s); m_cflink->get(s);
#ifndef _WIN32
// On Windows all paths are unicode.
if (m_fsencoding) if (m_fsencoding)
m_le->setText(QString::fromLocal8Bit(s.c_str())); m_le->setText(QString::fromLocal8Bit(s.c_str()));
else else
#endif
m_le->setText(QString::fromUtf8(s.c_str())); m_le->setText(QString::fromUtf8(s.c_str()));
} }
@ -191,9 +197,12 @@ void ConfParamCStrW::loadValue()
string s; string s;
m_cflink->get(s); m_cflink->get(s);
QString cs; QString cs;
#ifndef _WIN32
// On Windows all paths are unicode.
if (m_fsencoding) if (m_fsencoding)
cs = QString::fromLocal8Bit(s.c_str()); cs = QString::fromLocal8Bit(s.c_str());
else else
#endif
cs = QString::fromUtf8(s.c_str()); cs = QString::fromUtf8(s.c_str());
for (int i = 0; i < m_cmb->count(); i++) { for (int i = 0; i < m_cmb->count(); i++) {
@ -272,7 +281,12 @@ void ConfParamFNW::loadValue()
{ {
string s; string s;
m_cflink->get(s); m_cflink->get(s);
#ifndef _WIN32
// On Windows all paths are unicode.
m_le->setText(QString::fromLocal8Bit(s.c_str())); m_le->setText(QString::fromLocal8Bit(s.c_str()));
#else
m_le->setText(QString::fromUtf8(s.c_str()));
#endif
} }
void ConfParamFNW::showBrowserDialog() void ConfParamFNW::showBrowserDialog()
@ -346,9 +360,12 @@ void ConfParamSLW::loadValue()
stringToStrings(s, ls); stringToStrings(s, ls);
QStringList qls; QStringList qls;
for (list<string>::const_iterator it = ls.begin(); it != ls.end(); it++) { for (list<string>::const_iterator it = ls.begin(); it != ls.end(); it++) {
// On Windows all paths are unicode.
#ifndef _WIN32
if (m_fsencoding) if (m_fsencoding)
qls.push_back(QString::fromLocal8Bit(it->c_str())); qls.push_back(QString::fromLocal8Bit(it->c_str()));
else else
#endif
qls.push_back(QString::fromUtf8(it->c_str())); qls.push_back(QString::fromUtf8(it->c_str()));
} }
m_lb->clear(); m_lb->clear();
@ -379,7 +396,7 @@ void ConfParamSLW::showInputDialog()
void ConfParamSLW::listToConf() void ConfParamSLW::listToConf()
{ {
list<string> ls; list<string> ls;
LOGDEB2("ConfParamSLW::listToConf. m_fsencoding " << (int(m_fsencoding)) << "\n" ); LOGDEB2("ConfParamSLW::listToConf. m_fsencoding " << m_fsencoding << "\n");
for (int i = 0; i < m_lb->count(); i++) { for (int i = 0; i < m_lb->count(); i++) {
// General parameters are encoded as utf-8. File names as // General parameters are encoded as utf-8. File names as
// local8bit There is no hope for 8bit file names anyway // local8bit There is no hope for 8bit file names anyway
@ -390,8 +407,9 @@ void ConfParamSLW::listToConf()
// paths, and it will come back to haunt us one day. // paths, and it will come back to haunt us one day.
QString text = m_lb->item(i)->text(); QString text = m_lb->item(i)->text();
if (m_fsencoding) { if (m_fsencoding) {
// On Windows all paths are unicode.
#ifdef _WIN32 #ifdef _WIN32
string pth((const char *)(text.toLocal8Bit())); string pth((const char *)(text.toUtf8()));
path_slashize(pth); path_slashize(pth);
ls.push_back(pth); ls.push_back(pth);
#else #else
@ -426,7 +444,7 @@ void ConfParamSLW::deleteSelected()
} }
for (vector<int>::reverse_iterator it = idxes.rbegin(); for (vector<int>::reverse_iterator it = idxes.rbegin();
it != idxes.rend(); it++) { it != idxes.rend(); it++) {
LOGDEB0("deleteSelected: " << (*it) << " was selected\n" ); LOGDEB0("deleteSelected: " << *it << " was selected\n");
QListWidgetItem *item = m_lb->takeItem(*it); QListWidgetItem *item = m_lb->takeItem(*it);
emit entryDeleted(item->text()); emit entryDeleted(item->text());
delete item; delete item;
@ -479,4 +497,3 @@ void ConfParamCSLW::showInputDialog()
} }
} // Namespace confgui } // Namespace confgui