Consider all strings from tagparser UTF-8

This commit is contained in:
Martchus 2016-12-20 23:53:33 +01:00
parent e75ea5526a
commit 7d464f496f
11 changed files with 44 additions and 37 deletions

View File

@ -7,6 +7,8 @@
#include "resources/config.h"
#include <qtutilities/misc/conversion.h>
#if defined(GUI_QTWIDGETS) || defined(GUI_QTQUICK)
# include <qtutilities/resources/qtconfigarguments.h>
#else
@ -21,6 +23,7 @@
using namespace std;
using namespace std::placeholders;
using namespace ConversionUtilities;
using namespace ApplicationUtilities;
namespace Cli {
@ -227,7 +230,7 @@ int main(int argc, char *argv[])
parser.parseArgs(argc, argv);
if(qtConfigArgs.areQtGuiArgsPresent()) {
#ifdef GUI_QTWIDGETS
return QtGui::runWidgetsGui(argc, argv, qtConfigArgs, defaultFileArg.isPresent() && !defaultFileArg.values().empty() ? QString::fromLocal8Bit(defaultFileArg.values().front()) : QString(), renamingUtilityArg.isPresent());
return QtGui::runWidgetsGui(argc, argv, qtConfigArgs, defaultFileArg.isPresent() && !defaultFileArg.values().empty() ? fromNativeFileName(defaultFileArg.values().front()) : QString(), renamingUtilityArg.isPresent());
#else
CMD_UTILS_START_CONSOLE;
cerr << "Application has not been build with Qt widgets GUI support." << endl;

View File

@ -12,6 +12,8 @@
#include <tagparser/abstractattachment.h>
#include <tagparser/abstractchapter.h>
#include <qtutilities/misc/conversion.h>
#include <c++utilities/application/failure.h>
#include <c++utilities/application/commandlineutils.h>
#include <c++utilities/conversion/stringconversion.h>
@ -733,7 +735,7 @@ void generateFileInfo(const ArgumentOccurrence &, const Argument &inputFileArg,
(outputFileArg.isPresent() ? cout : cerr) << "Saving file info for \"" << inputFileArg.values().front() << "\" ..." << endl;
NotificationList origNotify;
if(outputFileArg.isPresent()) {
QFile file(QString::fromLocal8Bit(outputFileArg.values().front()));
QFile file(fromNativeFileName(outputFileArg.values().front()));
if(file.open(QFile::WriteOnly) && file.write(HtmlInfo::generateInfo(inputFileInfo, origNotify)) && file.flush()) {
cout << "File information has been saved to \"" << outputFileArg.values().front() << "\"." << endl;
} else {

View File

@ -37,7 +37,7 @@ void addIds(ChecklistModel *targetModel, const T &fileIds, const vector<uint64>
QList<ChecklistItem> items;
for(const auto &i : fileIds) {
items << ChecklistItem(QVariant::fromValue(i->id()),
QString::fromLocal8Bit(i->label().c_str()),
QString::fromUtf8(i->label().data()),
std::find(targetIds.cbegin(), targetIds.cend(), i->id()) == targetIds.cend() ? Qt::Unchecked : Qt::Checked);
ids << i->id();
}
@ -116,7 +116,7 @@ void EnterTargetDialog::setTarget(const TagTarget &target, const MediaFileInfo *
} else {
m_ui->levelWarningLabel->setHidden(false);
}
m_ui->levelNameLineEdit->setText(QString::fromLocal8Bit(target.levelName().c_str()));
m_ui->levelNameLineEdit->setText(QString::fromUtf8(target.levelName().c_str()));
if(file) {
// add track IDs
addIds(m_tracksModel, file->tracks(), target.tracks());

View File

@ -1,5 +1,7 @@
#include "./fileinfomodel.h"
#include <qtutilities/misc/conversion.h>
#include <tagparser/signature.h>
#include <tagparser/mediafileinfo.h>
#include <tagparser/abstractcontainer.h>
@ -65,7 +67,7 @@ public:
void appendRow(const QString &label, const char *text)
{
appendRow(label, QString::fromLocal8Bit(text));
appendRow(label, QString::fromUtf8(text));
}
void appendRow(const QString &label, const string &text)
@ -121,7 +123,7 @@ void addNotifications(Media::NotificationList *notifications, QStandardItem *par
QList<QStandardItem *> notificationRow;
notificationRow.reserve(3);
auto *firstItem = defaultItem(QString::fromLocal8Bit(notification.creationTime().toString().data()));
auto *firstItem = defaultItem(QString::fromUtf8(notification.creationTime().toString().data()));
switch(notification.type()) {
case NotificationType::Critical:
firstItem->setIcon(FileInfoModel::errorIcon());
@ -138,8 +140,8 @@ void addNotifications(Media::NotificationList *notifications, QStandardItem *par
}
parent->appendRow(QList<QStandardItem *>()
<< firstItem
<< defaultItem(QString::fromLocal8Bit(notification.message().data()))
<< defaultItem(QString::fromLocal8Bit(notification.context().data())));
<< defaultItem(QString::fromUtf8(notification.message().data()))
<< defaultItem(QString::fromUtf8(notification.context().data())));
}
}
@ -276,7 +278,7 @@ void FileInfoModel::updateCache()
ItemHelper rootHelper(rootItem);
// add general information
rootHelper.appendRow(tr("Path"), m_file->path());
rootHelper.appendRow(tr("Path"), fromNativeFileName(m_file->path().data()));
rootHelper.appendRow(tr("Size"), dataSizeToString(m_file->size()));
const TimeSpan duration = m_file->duration();
if(!duration.isNull()) {
@ -302,9 +304,9 @@ void FileInfoModel::updateCache()
QString containerName;
const char *const subversion = m_file->containerFormatSubversion();
if(*subversion) {
containerName = QString::fromLocal8Bit(m_file->containerFormatName()) % QChar(' ') % QString::fromLocal8Bit(m_file->containerFormatSubversion());
containerName = QString::fromUtf8(m_file->containerFormatName()) % QChar(' ') % QString::fromUtf8(m_file->containerFormatSubversion());
} else {
containerName = QString::fromLocal8Bit(m_file->containerFormatName());
containerName = QString::fromUtf8(m_file->containerFormatName());
}
setItem(currentRow, 1, defaultItem(containerName));
@ -406,8 +408,8 @@ void FileInfoModel::updateCache()
trackHelper.appendRow(tr("Resolution"), track->resolution());
if(track->channelConfigString()) {
trackHelper.appendRow(tr("Channel config"), track->extensionChannelConfigString()
? QString::fromLocal8Bit(track->extensionChannelConfigString()) % QStringLiteral(" / ") % QString::fromLocal8Bit(track->channelConfigString())
: QString::fromLocal8Bit(track->channelConfigString()));
? QString::fromUtf8(track->extensionChannelConfigString()) % QStringLiteral(" / ") % QString::fromUtf8(track->channelConfigString())
: QString::fromUtf8(track->channelConfigString()));
} else {
trackHelper.appendRow(tr("Channel count"), track->channelCount());
}
@ -474,7 +476,7 @@ void FileInfoModel::updateCache()
for(const LocaleAwareString &name : chapter->names()) {
static const string delim(", ");
const string locale = joinStrings(initializer_list<string>{joinStrings(name.languages(), delim, true), joinStrings(name.countries(), delim, true)}, delim, true);
chapterHelper.appendRow(tr("Name (%1)").arg(QString::fromLocal8Bit(locale.data())), name);
chapterHelper.appendRow(tr("Name (%1)").arg(QString::fromUtf8(locale.data())), name);
}
if(!chapter->startTime().isNegative()) {
chapterHelper.appendRow(tr("Start time"), chapter->startTime());

View File

@ -73,13 +73,13 @@ QVariant NotificationModel::data(const QModelIndex &index, int role) const
if(context.empty()) {
return tr("unspecified");
} else {
return QString::fromLocal8Bit(context.c_str());
return QString::fromUtf8(context.c_str());
}
}
case 1:
return QString::fromLocal8Bit(m_notifications.at(index.row()).message().c_str());
return QString::fromUtf8(m_notifications.at(index.row()).message().c_str());
case 2:
return QString::fromLocal8Bit(m_notifications.at(index.row()).creationTime().toString(DateTimeOutputFormat::DateAndTime, true).c_str());
return QString::fromUtf8(m_notifications.at(index.row()).creationTime().toString(DateTimeOutputFormat::DateAndTime, true).c_str());
default:
;
}

View File

@ -320,7 +320,7 @@ void PicturePreviewSelection::addOfSelectedType(const QString &path)
MediaFileInfo fileInfo(toNativeFileName(path).constData());
fileInfo.open(true);
fileInfo.parseContainerFormat();
auto mimeType = QString::fromLocal8Bit(fileInfo.mimeType());
auto mimeType = QString::fromUtf8(fileInfo.mimeType());
bool ok;
mimeType = QInputDialog::getText(this, tr("Enter/confirm mime type"), tr("Confirm or enter the mime type of the selected file."), QLineEdit::Normal, mimeType, &ok);
if(ok) {
@ -437,7 +437,7 @@ void PicturePreviewSelection::changeMimeTypeOfSelected()
{
assert(m_currentTypeIndex < static_cast<unsigned int>(m_values.size()));
TagValue &selectedCover = m_values[m_currentTypeIndex];
auto mimeType = QString::fromLocal8Bit(selectedCover.mimeType().data());
auto mimeType = QString::fromUtf8(selectedCover.mimeType().data());
bool ok;
mimeType = QInputDialog::getText(this, tr("Enter/confirm mime type"), tr("Confirm or enter the mime type of the selected file."), QLineEdit::Normal, mimeType, &ok);
if(ok) {

View File

@ -135,7 +135,7 @@ QString TagEdit::generateLabel() const
QStringList tagNames;
tagNames.reserve(m_tags.size());
for(const Tag *tag : m_tags) {
tagNames << QString::fromLocal8Bit(tag->typeName());
tagNames << QString::fromUtf8(tag->typeName());
if(!differentTargets && !(target == tag->target())) {
differentTargets = true;
}
@ -147,7 +147,7 @@ QString TagEdit::generateLabel() const
if(differentTargets) {
res.append(tr(" with different targets"));
} else if(haveMatroskaTags || !target.isEmpty()) {
res.append(tr(" targeting %1").arg(QString::fromLocal8Bit(m_tags.front()->targetString().c_str())));
res.append(tr(" targeting %1").arg(QString::fromUtf8(m_tags.front()->targetString().c_str())));
}
return res;
}

View File

@ -548,9 +548,9 @@ void TagEditorWidget::updateTagManagementMenu()
}
}
connect(m_removeTagMenu->addAction(QString::fromLocal8Bit(tag->toString().c_str())), &QAction::triggered, std::bind(&TagEditorWidget::removeTag, this, tag));
connect(m_removeTagMenu->addAction(QString::fromUtf8(tag->toString().c_str())), &QAction::triggered, std::bind(&TagEditorWidget::removeTag, this, tag));
if(tag->supportsTarget()) {
connect(m_changeTargetMenu->addAction(QString::fromLocal8Bit(tag->toString().c_str())), &QAction::triggered, std::bind(&TagEditorWidget::changeTarget, this, tag));
connect(m_changeTargetMenu->addAction(QString::fromUtf8(tag->toString().c_str())), &QAction::triggered, std::bind(&TagEditorWidget::changeTarget, this, tag));
}
}
}
@ -1168,7 +1168,7 @@ void TagEditorWidget::showSavingResult(bool processingError, bool ioError)
emit nextFileSelected();
} else {
// the current path might have changed through "save file path" mechanism
startParsing(m_currentPath = QString::fromLocal8Bit(m_fileInfo.path().data()), true);
startParsing(m_currentPath = fromNativeFileName(m_fileInfo.path()), true);
}
m_nextFileAfterSaving = false;
} else {

View File

@ -62,12 +62,12 @@ namespace HtmlInfo {
inline QString qstr(const char *cstr)
{
return QString::fromLocal8Bit(cstr);
return QString::fromUtf8(cstr);
}
inline QString qstr(const string &stdstr)
{
return qstr(stdstr.c_str());
return QString::fromUtf8(stdstr.data(), static_cast<int>(stdstr.size()));
}
class RowMaker
@ -589,9 +589,9 @@ public:
}
if(track->channelConfigString()) {
if(track->extensionChannelConfigString()) {
rowMaker.mkRow(QCoreApplication::translate("HtmlInfo", "Channel config"), QCoreApplication::translate("HtmlInfo", "Channel configuration"), QStringLiteral("%1 / %2").arg(QString::fromLocal8Bit(track->extensionChannelConfigString()), QString::fromLocal8Bit(track->channelConfigString())));
rowMaker.mkRow(QCoreApplication::translate("HtmlInfo", "Channel config"), QCoreApplication::translate("HtmlInfo", "Channel configuration"), QStringLiteral("%1 / %2").arg(QString::fromUtf8(track->extensionChannelConfigString()), QString::fromUtf8(track->channelConfigString())));
} else {
rowMaker.mkRow(QCoreApplication::translate("HtmlInfo", "Channel config"), QCoreApplication::translate("HtmlInfo", "Channel configuration"), QString::fromLocal8Bit(track->channelConfigString()));
rowMaker.mkRow(QCoreApplication::translate("HtmlInfo", "Channel config"), QCoreApplication::translate("HtmlInfo", "Channel configuration"), QString::fromUtf8(track->channelConfigString()));
}
} else if(track->channelCount()) {
rowMaker.mkRow(QCoreApplication::translate("HtmlInfo", "Channel count"), QString::number(track->channelCount()));

View File

@ -56,7 +56,7 @@ QString tagValueToQString(const TagValue &value)
case TagDataType::StandardGenreIndex:
case TagDataType::TimeSpan:
case TagDataType::PositionInSet:
return QString::fromLocal8Bit(value.toString().c_str());
return QString::fromUtf8(value.toString().c_str());
default:
;
}
@ -66,13 +66,13 @@ QString tagValueToQString(const TagValue &value)
QString dataToQString(const char *data, size_t dataSize, TagTextEncoding encoding)
{
if(data && dataSize > 0) {
if(data && dataSize) {
const char *codecName = textEncodingToCodecName(encoding);
auto *codec = QTextCodec::codecForName(codecName);
if(!codec) {
codec = QTextCodec::codecForLocale();
}
return codec->toUnicode(data, dataSize);
return codec->toUnicode(data, static_cast<int>(dataSize));
}
return QString();
}

View File

@ -39,7 +39,7 @@ TAGEDITOR_JS_VALUE &operator <<(TAGEDITOR_JS_VALUE &notificationsObject, const S
quint32 counter = 0;
for(const auto &notification : statusProvider.notifications()) {
TAGEDITOR_JS_VALUE val;
val.setProperty("msg", QString::fromLocal8Bit(notification.message().data()) TAGEDITOR_JS_READONLY);
val.setProperty("msg", QString::fromUtf8(notification.message().data()) TAGEDITOR_JS_READONLY);
val.setProperty("critical", notification.type() == NotificationType::Critical TAGEDITOR_JS_READONLY);
notificationsObject.setProperty(counter, val);
++counter;
@ -140,9 +140,9 @@ TAGEDITOR_JS_VALUE TagEditorObject::parseFileInfo(const QString &fileName)
MediaFileInfo fileInfo(toNativeFileName(fileName).data());
auto fileInfoObject = m_engine->newObject();
fileInfoObject.setProperty(QStringLiteral("currentName"), QString::fromLocal8Bit(fileInfo.fileName(false).data()));
fileInfoObject.setProperty(QStringLiteral("currentBaseName"), QString::fromLocal8Bit(fileInfo.fileName(true).data()));
QString suffix = QString::fromLocal8Bit(fileInfo.extension().data());
fileInfoObject.setProperty(QStringLiteral("currentName"), QString::fromUtf8(fileInfo.fileName(false).data()));
fileInfoObject.setProperty(QStringLiteral("currentBaseName"), QString::fromUtf8(fileInfo.fileName(true).data()));
QString suffix = fromNativeFileName(fileInfo.extension().data());
if(suffix.startsWith('.')) {
suffix.remove(0, 1);
}
@ -164,8 +164,8 @@ TAGEDITOR_JS_VALUE TagEditorObject::parseFileInfo(const QString &fileName)
fileInfoObject.setProperty(QStringLiteral("hasCriticalNotifications"), critical);
fileInfoObject.setProperty(QStringLiteral("notifications"), mainNotificationObject);
fileInfoObject.setProperty(QStringLiteral("mimeType"), QString::fromLocal8Bit(fileInfo.mimeType()) TAGEDITOR_JS_READONLY);
fileInfoObject.setProperty(QStringLiteral("suitableSuffix"), QString::fromLocal8Bit(fileInfo.containerFormatAbbreviation()) TAGEDITOR_JS_READONLY);
fileInfoObject.setProperty(QStringLiteral("mimeType"), QString::fromUtf8(fileInfo.mimeType()) TAGEDITOR_JS_READONLY);
fileInfoObject.setProperty(QStringLiteral("suitableSuffix"), QString::fromUtf8(fileInfo.containerFormatAbbreviation()) TAGEDITOR_JS_READONLY);
vector<Tag *> tags;
fileInfo.tags(tags);