diff --git a/application/settings.cpp b/application/settings.cpp
index c443453..35c17a7 100644
--- a/application/settings.cpp
+++ b/application/settings.cpp
@@ -52,6 +52,11 @@ bool &noWebView()
return v;
}
#endif
+bool &hideCoverButtons()
+{
+ static bool v = false;
+ return v;
+}
// file browser
bool &hideBackupFiles()
@@ -313,6 +318,7 @@ void restore()
fixUmlauts() = settings.value(QStringLiteral("fixumlauts"), false).toBool();
settings.endGroup();
BackupHelper::backupDirectory() = settings.value(QStringLiteral("tempdir")).toString().toStdString();
+ Settings::hideCoverButtons() = settings.value(QStringLiteral("hidecoverbtn"), false).toBool();
settings.endGroup();
selectedFieldsModel().restore(settings, QStringLiteral("selectedfields"));
@@ -445,6 +451,7 @@ void save()
settings.setValue(QStringLiteral("fixumlauts"), Settings::fixUmlauts());
settings.endGroup();
settings.setValue(QStringLiteral("tempdir"), QString::fromStdString(BackupHelper::backupDirectory()));
+ settings.setValue(QStringLiteral("hidecoverbtn"), Settings::hideCoverButtons());
settings.endGroup();
selectedFieldsModel().save(settings, QStringLiteral("selectedfields"));
diff --git a/application/settings.h b/application/settings.h
index 34721bf..a86ac10 100644
--- a/application/settings.h
+++ b/application/settings.h
@@ -46,6 +46,7 @@ bool &forceFullParse();
#ifndef TAGEDITOR_NO_WEBVIEW
bool &noWebView();
#endif
+bool &hideCoverButtons();
// file browser
bool &hideBackupFiles();
diff --git a/gui/editorfieldsoptionpage.ui b/gui/editorfieldsoptionpage.ui
index c614d02..eb47c0a 100644
--- a/gui/editorfieldsoptionpage.ui
+++ b/gui/editorfieldsoptionpage.ui
@@ -15,7 +15,7 @@
-
-
+
font-weight: bold;
diff --git a/gui/editorgeneraloptionpage.ui b/gui/editorgeneraloptionpage.ui
index 54da5ab..f1e0c62 100644
--- a/gui/editorgeneraloptionpage.ui
+++ b/gui/editorgeneraloptionpage.ui
@@ -2,14 +2,6 @@
QtGui::EditorGeneralOptionPage
-
-
- 0
- 0
- 468
- 374
-
-
General
@@ -106,6 +98,13 @@
+ -
+
+
+ Hide cover buttons
+
+
+
diff --git a/gui/fileinfomodel.cpp b/gui/fileinfomodel.cpp
index a8d8bb0..7919e5b 100644
--- a/gui/fileinfomodel.cpp
+++ b/gui/fileinfomodel.cpp
@@ -365,7 +365,7 @@ void FileInfoModel::updateCache()
trackHelper.appendRow(tr("Type"), track->mediaTypeName());
const char *fmtName = track->formatName(), *fmtAbbr = track->formatAbbreviation();
trackHelper.appendRow(tr("Format"), fmtName);
- if(strcmp(fmtName, fmtAbbr)) { // format name and abbreviation differ
+ if(track->format() != GeneralMediaFormat::Unknown && strcmp(fmtName, fmtAbbr)) { // format name and abbreviation differ
trackHelper.appendRow(tr("Abbreviation"), fmtAbbr);
}
if(track->version()) {
diff --git a/gui/picturepreviewselection.cpp b/gui/picturepreviewselection.cpp
index dde2998..46c2f1c 100644
--- a/gui/picturepreviewselection.cpp
+++ b/gui/picturepreviewselection.cpp
@@ -26,9 +26,13 @@
#include
#include
#include
+#include
+#include
+#include
#include
#include
+#include
using namespace std;
using namespace Media;
@@ -50,11 +54,13 @@ PicturePreviewSelection::PicturePreviewSelection(Tag *tag, KnownField field, QWi
m_currentTypeIndex(0)
{
m_ui->setupUi(this);
+ m_ui->coverButtonsWidget->setHidden(Settings::hideCoverButtons());
connect(m_ui->addButton, &QPushButton::clicked, this, static_cast(&PicturePreviewSelection::addOfSelectedType));
connect(m_ui->removeButton, &QPushButton::clicked, this, &PicturePreviewSelection::removeSelected);
connect(m_ui->extractButton, &QPushButton::clicked, this, &PicturePreviewSelection::extractSelected);
connect(m_ui->displayButton, &QPushButton::clicked, this, &PicturePreviewSelection::displaySelected);
connect(m_ui->restoreButton, &QPushButton::clicked, std::bind(&PicturePreviewSelection::setup, this, PreviousValueHandling::Clear));
+ connect(m_ui->previewGraphicsView, &QGraphicsView::customContextMenuRequested, this, &PicturePreviewSelection::showContextMenu);
setup();
setAcceptDrops(true);
}
@@ -70,16 +76,15 @@ PicturePreviewSelection::~PicturePreviewSelection()
*/
void PicturePreviewSelection::setValue(const TagValue &value, PreviousValueHandling previousValueHandling)
{
- if(m_currentTypeIndex < static_cast(m_values.count())) {
- TagValue ¤tValue = m_values[m_currentTypeIndex];
- if(previousValueHandling == PreviousValueHandling::Clear || !value.isEmpty()) {
- if(previousValueHandling != PreviousValueHandling::Keep || currentValue.isEmpty()) {
- currentValue = value; // TODO: move(value);
- emit pictureChanged();
- }
+ assert(m_currentTypeIndex < static_cast(m_values.size()));
+ TagValue ¤tValue = m_values[m_currentTypeIndex];
+ if(previousValueHandling == PreviousValueHandling::Clear || !value.isEmpty()) {
+ if(previousValueHandling != PreviousValueHandling::Keep || currentValue.isEmpty()) {
+ currentValue = value; // TODO: move(value);
+ emit pictureChanged();
}
- updatePreview(m_currentTypeIndex);
}
+ updatePreview(m_currentTypeIndex);
}
/*!
@@ -164,7 +169,7 @@ void PicturePreviewSelection::setup(PreviousValueHandling previousValueHandling)
<< tr("Illustration")
<< tr("Band/artist logotype")
<< tr("Publisher/Studio logotype")
- );
+ );
}
int first;
switch(m_tag->type()) {
@@ -172,6 +177,7 @@ void PicturePreviewSelection::setup(PreviousValueHandling previousValueHandling)
first = fetchId3v2CoverValues(static_cast(m_tag), m_field, m_values, m_ui->switchTypeComboBox->count(), previousValueHandling);
break;
case TagType::VorbisComment:
+ case TagType::OggVorbisComment:
first = fetchId3v2CoverValues(static_cast(m_tag), m_field, m_values, m_ui->switchTypeComboBox->count(), previousValueHandling);
break;
default:
@@ -224,9 +230,9 @@ template
void pushId3v2CoverValues(TagType *tag, KnownField field, const QList &values)
{
auto &fields = tag->fields();
- auto id = tag->fieldId(field);
- auto range = fields.equal_range(id);
- auto first = range.first;
+ const auto id = tag->fieldId(field);
+ const auto range = fields.equal_range(id);
+ const auto first = range.first;
// iterate through all tag values
for(unsigned int index = 0, valueCount = values.size(); index < valueCount; ++index) {
// check whether there is already a tag value with the current index/type
@@ -236,11 +242,10 @@ void pushId3v2CoverValues(TagType *tag, KnownField field, const QList update this value
pair->second.setValue(values[index]);
// check whether there are more values with the current index/type assigned
- while((pair = find_if(++first, range.second, std::bind(fieldPredicate, index, placeholders::_1))) != range.second) {
+ while((pair = find_if(++pair, range.second, std::bind(fieldPredicate, index, placeholders::_1))) != range.second) {
// -> remove these values as we only support one value of a type in the same tag
pair->second.setValue(TagValue());
}
- first = range.first; // reset the first value
} else if(!values[index].isEmpty()) {
typename TagType::fieldType field(id, values[index]);
field.setTypeInfo(index);
@@ -293,13 +298,10 @@ void PicturePreviewSelection::clear()
*/
void PicturePreviewSelection::addOfSelectedType()
{
- if(m_currentTypeIndex < static_cast(m_values.count())) {
- QString path = QFileDialog::getOpenFileName(this, tr("Select a picture to add as cover"));
- if(!path.isEmpty()) {
- addOfSelectedType(path);
- }
- } else {
- throw logic_error("Invalid type selected (no corresponding value assigned).");
+ assert(m_currentTypeIndex < static_cast(m_values.size()));
+ QString path = QFileDialog::getOpenFileName(this, tr("Select a picture to add as cover"));
+ if(!path.isEmpty()) {
+ addOfSelectedType(path);
}
}
@@ -308,6 +310,7 @@ void PicturePreviewSelection::addOfSelectedType()
*/
void PicturePreviewSelection::addOfSelectedType(const QString &path)
{
+ assert(m_currentTypeIndex < static_cast(m_values.size()));
TagValue &selectedCover = m_values[m_currentTypeIndex];
try {
MediaFileInfo fileInfo(path.toLocal8Bit().constData());
@@ -340,7 +343,7 @@ void PicturePreviewSelection::addOfSelectedType(const QString &path)
*/
void PicturePreviewSelection::removeSelected()
{
- if(m_currentTypeIndex < static_cast(m_values.count())) {
+ if(m_currentTypeIndex < static_cast(m_values.size())) {
if(m_values[m_currentTypeIndex].isEmpty()) {
QMessageBox::information(this, QApplication::applicationName(), tr("There is no cover to remove."));
} else {
@@ -358,28 +361,25 @@ void PicturePreviewSelection::removeSelected()
*/
void PicturePreviewSelection::extractSelected()
{
- if(m_currentTypeIndex < static_cast(m_values.count())) {
- TagValue &value = m_values[m_currentTypeIndex];
- if(value.isEmpty()) {
- QMessageBox::information(this, QApplication::applicationName(), tr("There is no image attached to be extracted."));
- } else {
- const auto path = QFileDialog::getSaveFileName(this, tr("Where do you want to save the cover?"));
- if(!path.isEmpty()) {
- QFile file(path);
- if(file.open(QIODevice::WriteOnly)) {
- if(file.write(value.dataPointer(), value.dataSize()) > 0) {
- QMessageBox::information(this, QApplication::applicationName(), tr("The cover has extracted."));
- } else {
- QMessageBox::warning(this, QApplication::applicationName(), tr("Unable to write to output file."));
- }
- file.close();
+ assert(m_currentTypeIndex < static_cast(m_values.size()));
+ TagValue &value = m_values[m_currentTypeIndex];
+ if(value.isEmpty()) {
+ QMessageBox::information(this, QApplication::applicationName(), tr("There is no image attached to be extracted."));
+ } else {
+ const auto path = QFileDialog::getSaveFileName(this, tr("Where do you want to save the cover?"));
+ if(!path.isEmpty()) {
+ QFile file(path);
+ if(file.open(QIODevice::WriteOnly)) {
+ if(file.write(value.dataPointer(), value.dataSize()) > 0) {
+ QMessageBox::information(this, QApplication::applicationName(), tr("The cover has extracted."));
} else {
- QMessageBox::warning(this, QApplication::applicationName(), tr("Unable to open output file."));
+ QMessageBox::warning(this, QApplication::applicationName(), tr("Unable to write to output file."));
}
+ file.close();
+ } else {
+ QMessageBox::warning(this, QApplication::applicationName(), tr("Unable to open output file."));
}
}
- } else {
- throw logic_error("Invalid type selected (no corresponding value assigned).");
}
}
@@ -388,46 +388,67 @@ void PicturePreviewSelection::extractSelected()
*/
void PicturePreviewSelection::displaySelected()
{
- if(m_currentTypeIndex < static_cast(m_values.count())) {
- TagValue &value = m_values[m_currentTypeIndex];
- if(!value.isEmpty()) {
- QImage img;
- if(value.mimeType() == "-->") {
- QFile file(Utility::stringToQString(value.toString(), value.dataEncoding()));
- if(file.open(QFile::ReadOnly)) {
- img = QImage::fromData(file.readAll());
- } else {
- QMessageBox::warning(this, QApplication::applicationName(), tr("The attached image can't be found."));
- return;
- }
+ assert(m_currentTypeIndex < static_cast(m_values.size()));
+ TagValue &value = m_values[m_currentTypeIndex];
+ if(!value.isEmpty()) {
+ QImage img;
+ if(value.mimeType() == "-->") {
+ QFile file(Utility::stringToQString(value.toString(), value.dataEncoding()));
+ if(file.open(QFile::ReadOnly)) {
+ img = QImage::fromData(file.readAll());
} else {
- img = QImage::fromData(reinterpret_cast(value.dataPointer()), value.dataSize());
- }
- if(img.isNull()) {
- QMessageBox::warning(this, QApplication::applicationName(), tr("The attached image can't be displayed."));
- } else {
- QDialog dlg;
- dlg.setWindowFlags(Qt::Tool);
- dlg.setWindowTitle(tr("Cover - %1").arg(QApplication::applicationName()));
- QBoxLayout layout(QBoxLayout::Up);
- layout.setMargin(0);
- QGraphicsView view(&dlg);
- QGraphicsScene scene;
- layout.addWidget(&view);
- scene.addItem(new QGraphicsPixmapItem(QPixmap::fromImage(img)));
- view.setScene(&scene);
- view.show();
- dlg.setLayout(&layout);
- dlg.exec();
+ QMessageBox::warning(this, QApplication::applicationName(), tr("The attached image can't be found."));
+ return;
}
} else {
- QMessageBox::warning(this, QApplication::applicationName(), tr("There is no image attached."));
+ img = QImage::fromData(reinterpret_cast(value.dataPointer()), value.dataSize());
+ }
+ if(img.isNull()) {
+ QMessageBox::warning(this, QApplication::applicationName(), tr("The attached image can't be displayed."));
+ } else {
+ QDialog dlg;
+ dlg.setWindowFlags(Qt::Tool);
+ dlg.setWindowTitle(tr("Cover - %1").arg(QApplication::applicationName()));
+ QBoxLayout layout(QBoxLayout::Up);
+ layout.setMargin(0);
+ QGraphicsView view(&dlg);
+ QGraphicsScene scene;
+ layout.addWidget(&view);
+ scene.addItem(new QGraphicsPixmapItem(QPixmap::fromImage(img)));
+ view.setScene(&scene);
+ view.show();
+ dlg.setLayout(&layout);
+ dlg.exec();
}
} else {
- throw logic_error("Invalid type selected (no corresponding value assigned).");
+ QMessageBox::warning(this, QApplication::applicationName(), tr("There is no image attached."));
}
}
+/*!
+ * \brief Asks the user to alter the MIME-type of the selected cover.
+ */
+void PicturePreviewSelection::changeMimeTypeOfSelected()
+{
+ assert(m_currentTypeIndex < static_cast(m_values.size()));
+ TagValue &selectedCover = m_values[m_currentTypeIndex];
+ auto mimeType = QString::fromLocal8Bit(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) {
+ selectedCover.setMimeType(mimeType.toLocal8Bit().data());
+ }
+
+}
+
+/*!
+ * \brief Sets whether cover buttons are hidden.
+ */
+void PicturePreviewSelection::setCoverButtonsHidden(bool hideCoverButtons)
+{
+ m_ui->coverButtonsWidget->setHidden(hideCoverButtons);
+}
+
void PicturePreviewSelection::changeEvent(QEvent *event)
{
switch(event->type()) {
@@ -499,11 +520,9 @@ void PicturePreviewSelection::dropEvent(QDropEvent *event)
*/
void PicturePreviewSelection::typeSwitched(int index)
{
- if(m_currentTypeIndex >= static_cast(m_values.count())) {
- throw logic_error("current type index is invalid");
- }
+ assert(m_currentTypeIndex < static_cast(m_values.size()));
int lastIndex = m_currentTypeIndex;
- if(index < 0 || index >= m_values.count()) {
+ if(index < 0 || index >= m_values.size()) {
throw logic_error("current type index is invalid");
} else {
m_currentTypeIndex = static_cast(index);
@@ -600,4 +619,40 @@ void PicturePreviewSelection::updatePreview(int index)
m_rectItem->setRect(0, 0, m_ui->previewGraphicsView->width(), m_ui->previewGraphicsView->height());
}
+void PicturePreviewSelection::showContextMenu()
+{
+ QMenu menu;
+ QAction *addAction = menu.addAction(m_ui->addButton->text());
+ addAction->setIcon(QIcon::fromTheme(QStringLiteral("list-add")));
+ connect(addAction, &QAction::triggered, this, static_cast(&PicturePreviewSelection::addOfSelectedType));
+ if(m_ui->extractButton->isEnabled()) {
+ QAction *mimeAction = menu.addAction(tr("Change MIME-type"));
+ mimeAction->setIcon(QIcon::fromTheme(QStringLiteral("document-properties")));
+ connect(mimeAction, &QAction::triggered, this, &PicturePreviewSelection::changeMimeTypeOfSelected);
+ }
+ menu.addSeparator();
+ if(m_ui->removeButton->isEnabled()) {
+ QAction *removeAction = menu.addAction(m_ui->removeButton->text());
+ removeAction->setIcon(QIcon::fromTheme(QStringLiteral("edit-delete")));
+ connect(removeAction, &QAction::triggered, this, &PicturePreviewSelection::removeSelected);
+ }
+ if(m_ui->restoreButton->isEnabled()) {
+ QAction *restoreAction = menu.addAction(m_ui->restoreButton->text());
+ restoreAction->setIcon(QIcon::fromTheme(QStringLiteral("document-revert")));
+ connect(restoreAction, &QAction::triggered, std::bind(&PicturePreviewSelection::setup, this, PreviousValueHandling::Clear));
+ }
+ menu.addSeparator();
+ if(m_ui->extractButton->isEnabled()) {
+ QAction *extractAction = menu.addAction(m_ui->extractButton->text());
+ extractAction->setIcon(QIcon::fromTheme(QStringLiteral("document-save")));
+ connect(extractAction, &QAction::triggered, this, &PicturePreviewSelection::extractSelected);
+ }
+ if(m_ui->displayButton->isEnabled()) {
+ QAction *displayAction = menu.addAction(m_ui->displayButton->text());
+ displayAction->setIcon(QIcon::fromTheme(QStringLiteral("image-x-generic")));
+ connect(displayAction, &QAction::triggered, this, &PicturePreviewSelection::displaySelected);
+ }
+ menu.exec(QCursor::pos());
+}
+
}
diff --git a/gui/picturepreviewselection.h b/gui/picturepreviewselection.h
index 9e6e1f8..99b4562 100644
--- a/gui/picturepreviewselection.h
+++ b/gui/picturepreviewselection.h
@@ -51,6 +51,8 @@ public slots:
void removeSelected();
void extractSelected();
void displaySelected();
+ void changeMimeTypeOfSelected();
+ void setCoverButtonsHidden(bool hideCoverButtons);
signals:
void pictureChanged();
@@ -66,6 +68,7 @@ private slots:
void updateDescription(int newIndex);
void updateDescription(int lastIndex, int newIndex);
void updatePreview(int index);
+ void showContextMenu();
private:
void setup(PreviousValueHandling previousValueHandling = PreviousValueHandling::Clear);
diff --git a/gui/picturepreviewselection.ui b/gui/picturepreviewselection.ui
index b9cb628..7f633cc 100644
--- a/gui/picturepreviewselection.ui
+++ b/gui/picturepreviewselection.ui
@@ -7,7 +7,7 @@
0
0
284
- 230
+ 242
@@ -100,6 +100,9 @@
170
+
+ Qt::CustomContextMenu
+
Qt::ScrollBarAlwaysOff
diff --git a/gui/settingsdialog.cpp b/gui/settingsdialog.cpp
index 4c75547..15d97ac 100644
--- a/gui/settingsdialog.cpp
+++ b/gui/settingsdialog.cpp
@@ -73,6 +73,7 @@ bool EditorGeneralOptionPage::apply()
saveAndShowNextOnEnter() = ui()->nextWhenPressingEnterCheckBox->isChecked();
askBeforeDeleting() = ui()->askBeforeDeletingCheckBox->isChecked();
hideTagSelectionComboBox() = ui()->hideTagSelectionComboBoxCheckBox->isChecked();
+ hideCoverButtons() = ui()->hideCoverButtonsCheckBox->isChecked();
}
return true;
}
@@ -102,6 +103,7 @@ void EditorGeneralOptionPage::reset()
ui()->nextWhenPressingEnterCheckBox->setChecked(saveAndShowNextOnEnter());
ui()->askBeforeDeletingCheckBox->setChecked(askBeforeDeleting());
ui()->hideTagSelectionComboBoxCheckBox->setChecked(hideTagSelectionComboBox());
+ ui()->hideCoverButtonsCheckBox->setChecked(hideCoverButtons());
}
}
diff --git a/gui/tagedit.cpp b/gui/tagedit.cpp
index 7da508e..dd40f4e 100644
--- a/gui/tagedit.cpp
+++ b/gui/tagedit.cpp
@@ -211,6 +211,16 @@ void TagEdit::invalidate()
setupUi();
}
+/*!
+ * \brief Sets whether cover buttons are hidden.
+ */
+void TagEdit::setCoverButtonsHidden(bool hideCoverButtons)
+{
+ for(auto i = m_widgets.begin(), end = m_widgets.end(); i != end; ++i) {
+ i.value()->setCoverButtonsHidden(hideCoverButtons);
+ }
+}
+
/*!
* \brief Internally called to setup the UI.
*/
diff --git a/gui/tagedit.h b/gui/tagedit.h
index 2a3e3a7..43bf561 100644
--- a/gui/tagedit.h
+++ b/gui/tagedit.h
@@ -48,6 +48,7 @@ public slots:
void restore();
void apply();
void invalidate();
+ void setCoverButtonsHidden(bool hideCoverButtons);
signals:
void returnPressed();
diff --git a/gui/tageditorwidget.cpp b/gui/tageditorwidget.cpp
index b0ba9a5..5e6f7ae 100644
--- a/gui/tageditorwidget.cpp
+++ b/gui/tageditorwidget.cpp
@@ -50,6 +50,7 @@
#include
using namespace std;
+using namespace std::placeholders;
using namespace Utility;
using namespace Dialogs;
using namespace Widgets;
@@ -1223,6 +1224,7 @@ void TagEditorWidget::applySettingsFromDialog()
break;
}
m_ui->actionManage_tags_automatically_when_loading_file->setChecked(Settings::autoTagManagement());
+ foreachTagEdit(bind(&TagEdit::setCoverButtonsHidden, _1, Settings::hideCoverButtons()));
// ensure info view is displayed/not displayed according to settings
initInfoView();
updateInfoView();
diff --git a/gui/tagfieldedit.cpp b/gui/tagfieldedit.cpp
index d37c9a9..df38e5b 100644
--- a/gui/tagfieldedit.cpp
+++ b/gui/tagfieldedit.cpp
@@ -212,6 +212,16 @@ bool TagFieldEdit::canApply(KnownField field) const
return false;
}
+/*!
+ * \brief Sets whether the cover buttons are hidden.
+ */
+void TagFieldEdit::setCoverButtonsHidden(bool hideCoverButtons)
+{
+ if(m_pictureSelection) {
+ m_pictureSelection->setCoverButtonsHidden(hideCoverButtons);
+ }
+}
+
/*!
* \brief Internally called to determine the data type of the current tag field.
*/
diff --git a/gui/tagfieldedit.h b/gui/tagfieldedit.h
index 5b60006..b87ed6f 100644
--- a/gui/tagfieldedit.h
+++ b/gui/tagfieldedit.h
@@ -53,6 +53,7 @@ public slots:
void clear();
void apply();
void restore();
+ void setCoverButtonsHidden(bool hideCoverButtons);
signals:
void returnPressed();
diff --git a/misc/htmlinfo.cpp b/misc/htmlinfo.cpp
index 7191975..3a4fe32 100644
--- a/misc/htmlinfo.cpp
+++ b/misc/htmlinfo.cpp
@@ -512,7 +512,7 @@ public:
rowMaker.mkRow(QCoreApplication::translate("HtmlInfo", "Type"), qstr(track->mediaTypeName()));
const char *fmtName = track->formatName(), *fmtAbbr = track->formatAbbreviation();
rowMaker.mkRow(QCoreApplication::translate("HtmlInfo", "Format"), QCoreApplication::translate("HtmlInfo", "The unabbreviated name of the track's format."), qstr(fmtName));
- if(strcmp(fmtName, fmtAbbr)) { // format name and abbreviation differ
+ if(track->format() != GeneralMediaFormat::Unknown && strcmp(fmtName, fmtAbbr)) { // format name and abbreviation differ
rowMaker.mkRow(QCoreApplication::translate("HtmlInfo", "Abbreviation"), QCoreApplication::translate("HtmlInfo", "The abbreviated name of the track's format."), qstr(fmtAbbr));
}
if(track->version()) {
diff --git a/translations/tageditor_de_DE.ts b/translations/tageditor_de_DE.ts
index e49a77b..474c2bf 100644
--- a/translations/tageditor_de_DE.ts
+++ b/translations/tageditor_de_DE.ts
@@ -852,62 +852,67 @@ Remarks
QtGui::EditorGeneralOptionPage
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
+
+
+
+
+
@@ -925,7 +930,7 @@ Remarks
-
+
@@ -1522,12 +1527,12 @@ another position would prevent rewriting the entire file
-
+
-
+
@@ -2014,28 +2019,28 @@ another position would prevent rewriting the entire file
-
-
+
+
-
+
-
+
-
+
-
+
@@ -2046,173 +2051,175 @@ another position would prevent rewriting the entire file
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
+
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -2232,20 +2239,25 @@ another position would prevent rewriting the entire file
-
+
-
+
-
+
+
+
+
+
+
QtGui::QueryResultsModel
@@ -2536,17 +2548,17 @@ Error in line %1: %3
-
+
-
+
-
+
@@ -2638,7 +2650,7 @@ the file reverting all unsaved changings.
-
+
@@ -2703,203 +2715,203 @@ the file reverting all unsaved changings.
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -2907,7 +2919,7 @@ the file reverting all unsaved changings.
-
+
@@ -2915,7 +2927,7 @@ the file reverting all unsaved changings.
-
+
@@ -2923,72 +2935,72 @@ the file reverting all unsaved changings.
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -3002,992 +3014,992 @@ the file reverting all unsaved changings.
-
-
-
-
-
-
+
+
+
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
diff --git a/translations/tageditor_en_US.ts b/translations/tageditor_en_US.ts
index 5a91a84..03d8674 100644
--- a/translations/tageditor_en_US.ts
+++ b/translations/tageditor_en_US.ts
@@ -852,65 +852,70 @@ Remarks
QtGui::EditorGeneralOptionPage
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
+
+
+
+
+
QtGui::EditorTempOptionPage
@@ -925,7 +930,7 @@ Remarks
-
+
@@ -1522,12 +1527,12 @@ another position would prevent rewriting the entire file
-
+
-
+
@@ -2020,199 +2025,201 @@ another position would prevent rewriting the entire file
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
+
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -2232,20 +2239,25 @@ another position would prevent rewriting the entire file
-
+
-
+
-
+
+
+
+
+
+
QtGui::QueryResultsModel
@@ -2536,17 +2548,17 @@ Error in line %1: %3
-
+
-
+
-
+
@@ -2573,203 +2585,203 @@ Error in line %1: %3
QtGui::TagEditorWidget
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
The tags have been saved, but there is %1 warning
@@ -2777,7 +2789,7 @@ Error in line %1: %3
-
+
@@ -2785,7 +2797,7 @@ Error in line %1: %3
-
+
The tags have been saved, but there is %1 warning.
@@ -2793,72 +2805,72 @@ Error in line %1: %3
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
@@ -2928,7 +2940,7 @@ the file reverting all unsaved changings.
-
+
@@ -3002,992 +3014,992 @@ the file reverting all unsaved changings.
-
-
-
-
-
-
+
+
+
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+