Consider all strings from tagparser UTF-8
This commit is contained in:
parent
e75ea5526a
commit
7d464f496f
|
@ -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;
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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:
|
||||
;
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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()));
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -39,7 +39,7 @@ TAGEDITOR_JS_VALUE &operator <<(TAGEDITOR_JS_VALUE ¬ificationsObject, const S
|
|||
quint32 counter = 0;
|
||||
for(const auto ¬ification : 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);
|
||||
|
|
Loading…
Reference in New Issue