Refactor settings
This commit is contained in:
parent
0062384bad
commit
0ef07b7969
|
@ -10,7 +10,7 @@ set(META_APP_URL "https://github.com/${META_APP_AUTHOR}/${META_PROJECT_NAME}")
|
||||||
set(META_APP_DESCRIPTION "A tageditor with Qt GUI and command line interface. Supports MP4 (iTunes), ID3, Vorbis, Opus, FLAC and Matroska")
|
set(META_APP_DESCRIPTION "A tageditor with Qt GUI and command line interface. Supports MP4 (iTunes), ID3, Vorbis, Opus, FLAC and Matroska")
|
||||||
set(META_GUI_OPTIONAL true)
|
set(META_GUI_OPTIONAL true)
|
||||||
set(META_VERSION_MAJOR 2)
|
set(META_VERSION_MAJOR 2)
|
||||||
set(META_VERSION_MINOR 0)
|
set(META_VERSION_MINOR 1)
|
||||||
set(META_VERSION_PATCH 0)
|
set(META_VERSION_PATCH 0)
|
||||||
|
|
||||||
# add project files
|
# add project files
|
||||||
|
|
|
@ -8,8 +8,6 @@
|
||||||
|
|
||||||
#include <qtutilities/settingsdialog/qtsettings.h>
|
#include <qtutilities/settingsdialog/qtsettings.h>
|
||||||
|
|
||||||
#include <QString>
|
|
||||||
#include <QByteArray>
|
|
||||||
#include <QApplication>
|
#include <QApplication>
|
||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
|
|
||||||
|
@ -17,541 +15,272 @@ using namespace Media;
|
||||||
|
|
||||||
namespace Settings {
|
namespace Settings {
|
||||||
|
|
||||||
// editor
|
AutoCompletition::AutoCompletition() :
|
||||||
AdoptFields &adoptFields()
|
fields(nullptr, KnownFieldModel::DefaultSelection::None)
|
||||||
{
|
{}
|
||||||
static AdoptFields v = AdoptFields::Never;
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
bool &saveAndShowNextOnEnter()
|
|
||||||
{
|
|
||||||
static bool v = false;
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
bool &askBeforeDeleting()
|
|
||||||
{
|
|
||||||
static bool v = true;
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
MultipleTagHandling &multipleTagHandling()
|
|
||||||
{
|
|
||||||
static MultipleTagHandling v = MultipleTagHandling::SingleEditorPerTarget;
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
bool &hideTagSelectionComboBox()
|
|
||||||
{
|
|
||||||
static bool v = false;
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
bool &forceFullParse()
|
|
||||||
{
|
|
||||||
static bool v = false;
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
#ifndef TAGEDITOR_NO_WEBVIEW
|
|
||||||
bool &noWebView()
|
|
||||||
{
|
|
||||||
static bool v = false;
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
bool &hideCoverButtons()
|
|
||||||
{
|
|
||||||
static bool v = false;
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
|
|
||||||
// file browser
|
Editor::Editor() :
|
||||||
bool &hideBackupFiles()
|
fields(nullptr, KnownFieldModel::DefaultSelection::CommonFields),
|
||||||
{
|
defaultTargets(nullptr, TargetLevelModel::DefaultSelection::MostUsefulTargets)
|
||||||
static bool v = true;
|
{}
|
||||||
return v;
|
|
||||||
}
|
|
||||||
bool &fileBrowserReadOnly()
|
|
||||||
{
|
|
||||||
static bool v = true;
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
|
|
||||||
// general tag processing
|
DbQuery::DbQuery() :
|
||||||
Media::TagTextEncoding &preferredEncoding()
|
fields(QList<Models::ChecklistItem>()
|
||||||
{
|
<< KnownFieldModel::mkItem(KnownField::Title)
|
||||||
static Media::TagTextEncoding v = Media::TagTextEncoding::Utf8;
|
<< KnownFieldModel::mkItem(KnownField::TrackPosition)
|
||||||
return v;
|
<< KnownFieldModel::mkItem(KnownField::DiskPosition)
|
||||||
}
|
<< KnownFieldModel::mkItem(KnownField::Album)
|
||||||
|
<< KnownFieldModel::mkItem(KnownField::Album)
|
||||||
|
<< KnownFieldModel::mkItem(KnownField::Year)
|
||||||
|
<< KnownFieldModel::mkItem(KnownField::Genre)
|
||||||
|
<< KnownFieldModel::mkItem(KnownField::Cover, Qt::Unchecked)
|
||||||
|
<< KnownFieldModel::mkItem(KnownField::Lyrics, Qt::Unchecked))
|
||||||
|
{}
|
||||||
|
|
||||||
UnsupportedFieldHandling &unsupportedFieldHandling()
|
Settings &values()
|
||||||
{
|
{
|
||||||
static UnsupportedFieldHandling v = UnsupportedFieldHandling::Ignore;
|
static Settings settings;
|
||||||
return v;
|
return settings;
|
||||||
}
|
|
||||||
|
|
||||||
bool &autoTagManagement()
|
|
||||||
{
|
|
||||||
static bool v = true;
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
|
|
||||||
// ID3 tag processing
|
|
||||||
TagUsage &id3v1usage()
|
|
||||||
{
|
|
||||||
static TagUsage v = TagUsage::Always;
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
|
|
||||||
TagUsage &id3v2usage()
|
|
||||||
{
|
|
||||||
static TagUsage v = TagUsage::Always;
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
|
|
||||||
byte &id3v2versionToBeUsed()
|
|
||||||
{
|
|
||||||
static byte v = 3;
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool &keepVersionOfExistingId3v2Tag()
|
|
||||||
{
|
|
||||||
static bool v = true;
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool &mergeMultipleSuccessiveId3v2Tags()
|
|
||||||
{
|
|
||||||
static bool v = true;
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
|
|
||||||
// file layout
|
|
||||||
bool &forceRewrite()
|
|
||||||
{
|
|
||||||
static bool v = true;
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
|
|
||||||
ElementPosition &preferredTagPosition()
|
|
||||||
{
|
|
||||||
static ElementPosition v = ElementPosition::BeforeData;
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool &forceTagPosition()
|
|
||||||
{
|
|
||||||
static bool v = true;
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
|
|
||||||
ElementPosition &preferredIndexPosition()
|
|
||||||
{
|
|
||||||
static ElementPosition v = ElementPosition::BeforeData;
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool &forceIndexPosition()
|
|
||||||
{
|
|
||||||
static bool v = true;
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t &minPadding()
|
|
||||||
{
|
|
||||||
static size_t v = 0;
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t &maxPadding()
|
|
||||||
{
|
|
||||||
static size_t v = 0;
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
|
|
||||||
size_t &preferredPadding()
|
|
||||||
{
|
|
||||||
static size_t v = 0;
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
|
|
||||||
// targets
|
|
||||||
TargetLevelModel &defaultTargetsModel()
|
|
||||||
{
|
|
||||||
static TargetLevelModel model(nullptr, TargetLevelModel::DefaultSelection::MostUsefulTargets);
|
|
||||||
return model;
|
|
||||||
}
|
|
||||||
|
|
||||||
// fields
|
|
||||||
KnownFieldModel &selectedFieldsModel()
|
|
||||||
{
|
|
||||||
static KnownFieldModel model(nullptr, KnownFieldModel::DefaultSelection::CommonFields);
|
|
||||||
return model;
|
|
||||||
}
|
|
||||||
|
|
||||||
// auto correction/completition
|
|
||||||
bool &insertTitleFromFilename()
|
|
||||||
{
|
|
||||||
static bool v = false;
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool &trimWhitespaces()
|
|
||||||
{
|
|
||||||
static bool v = true;
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool &formatNames()
|
|
||||||
{
|
|
||||||
static bool v = false;
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool &fixUmlauts()
|
|
||||||
{
|
|
||||||
static bool v = false;
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
|
|
||||||
KnownFieldModel &autoCorrectionFields()
|
|
||||||
{
|
|
||||||
static KnownFieldModel model(nullptr, KnownFieldModel::DefaultSelection::None);
|
|
||||||
return model;
|
|
||||||
}
|
|
||||||
|
|
||||||
// main window
|
|
||||||
QByteArray &mainWindowGeometry()
|
|
||||||
{
|
|
||||||
static QByteArray v;
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
|
|
||||||
QByteArray &mainWindowState()
|
|
||||||
{
|
|
||||||
static QByteArray v;
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
|
|
||||||
QString &mainWindowCurrentFileBrowserDirectory()
|
|
||||||
{
|
|
||||||
static QString v;
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool &mainWindowLayoutLocked()
|
|
||||||
{
|
|
||||||
static bool v = false;
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
|
|
||||||
// db query
|
|
||||||
bool &dbQueryWidgetShown()
|
|
||||||
{
|
|
||||||
static bool v = false;
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool &dbQueryOverride()
|
|
||||||
{
|
|
||||||
static bool v = false;
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
|
|
||||||
KnownFieldModel &dbQueryFields()
|
|
||||||
{
|
|
||||||
static KnownFieldModel v(QList<Models::ChecklistItem>()
|
|
||||||
<< KnownFieldModel::mkItem(KnownField::Title)
|
|
||||||
<< KnownFieldModel::mkItem(KnownField::TrackPosition)
|
|
||||||
<< KnownFieldModel::mkItem(KnownField::DiskPosition)
|
|
||||||
<< KnownFieldModel::mkItem(KnownField::Album)
|
|
||||||
<< KnownFieldModel::mkItem(KnownField::Album)
|
|
||||||
<< KnownFieldModel::mkItem(KnownField::Year)
|
|
||||||
<< KnownFieldModel::mkItem(KnownField::Genre)
|
|
||||||
<< KnownFieldModel::mkItem(KnownField::Cover, Qt::Unchecked)
|
|
||||||
<< KnownFieldModel::mkItem(KnownField::Lyrics, Qt::Unchecked));
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
|
|
||||||
QString &musicBrainzUrl()
|
|
||||||
{
|
|
||||||
static QString v;
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
|
|
||||||
QString &coverArtArchiveUrl()
|
|
||||||
{
|
|
||||||
static QString v;
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
|
|
||||||
QString &lyricsWikiaUrl()
|
|
||||||
{
|
|
||||||
static QString v;
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
|
|
||||||
// renaming files dialog
|
|
||||||
int &scriptSource()
|
|
||||||
{
|
|
||||||
static int v = 0;
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
|
|
||||||
QString &externalScript()
|
|
||||||
{
|
|
||||||
static QString v;
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
|
|
||||||
QString &editorScript()
|
|
||||||
{
|
|
||||||
static QString v;
|
|
||||||
return v;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Qt settings
|
|
||||||
Dialogs::QtSettings &qtSettings()
|
|
||||||
{
|
|
||||||
static Dialogs::QtSettings v;
|
|
||||||
return v;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void restore()
|
void restore()
|
||||||
{
|
{
|
||||||
QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(), QApplication::applicationName());
|
QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(), QApplication::applicationName());
|
||||||
|
Settings &v = values();
|
||||||
|
|
||||||
settings.beginGroup(QStringLiteral("editor"));
|
settings.beginGroup(QStringLiteral("editor"));
|
||||||
switch(settings.value(QStringLiteral("adoptfields"), 0).toInt()) {
|
switch(settings.value(QStringLiteral("adoptfields"), 0).toInt()) {
|
||||||
case 1:
|
case 1:
|
||||||
adoptFields() = AdoptFields::WithinDirectory;
|
v.editor.adoptFields = AdoptFields::WithinDirectory;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
adoptFields() = AdoptFields::Always;
|
v.editor.adoptFields = AdoptFields::Always;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
adoptFields() = AdoptFields::Never;
|
v.editor.adoptFields = AdoptFields::Never;
|
||||||
break;
|
break;
|
||||||
};
|
};
|
||||||
saveAndShowNextOnEnter() = settings.value(QStringLiteral("saveandshownextonenter"), false).toBool();
|
v.editor.saveAndShowNextOnEnter = settings.value(QStringLiteral("saveandshownextonenter"), false).toBool();
|
||||||
askBeforeDeleting() = settings.value(QStringLiteral("askbeforedeleting"), true).toBool();
|
v.editor.askBeforeDeleting = settings.value(QStringLiteral("askbeforedeleting"), true).toBool();
|
||||||
switch(settings.value(QStringLiteral("multipletaghandling"), 0).toInt()) {
|
switch(settings.value(QStringLiteral("multipletaghandling"), 0).toInt()) {
|
||||||
case 0:
|
case 0:
|
||||||
multipleTagHandling() = MultipleTagHandling::SingleEditorPerTarget;
|
v.editor.multipleTagHandling = MultipleTagHandling::SingleEditorPerTarget;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
multipleTagHandling() = MultipleTagHandling::SeparateEditors;
|
v.editor.multipleTagHandling = MultipleTagHandling::SeparateEditors;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
hideTagSelectionComboBox() = settings.value(QStringLiteral("hidetagselectioncombobox"), false).toBool();
|
v.editor.hideTagSelectionComboBox = settings.value(QStringLiteral("hidetagselectioncombobox"), false).toBool();
|
||||||
settings.beginGroup(QStringLiteral("autocorrection"));
|
settings.beginGroup(QStringLiteral("autocorrection"));
|
||||||
insertTitleFromFilename() = settings.value(QStringLiteral("inserttitlefromfilename"), false).toBool();
|
v.editor.autoCompletition.insertTitleFromFilename = settings.value(QStringLiteral("inserttitlefromfilename"), false).toBool();
|
||||||
trimWhitespaces() = settings.value(QStringLiteral("trimwhitespaces"), true).toBool();
|
v.editor.autoCompletition.trimWhitespaces = settings.value(QStringLiteral("trimwhitespaces"), true).toBool();
|
||||||
formatNames() = settings.value(QStringLiteral("formatnames"), false).toBool();
|
v.editor.autoCompletition.formatNames = settings.value(QStringLiteral("formatnames"), false).toBool();
|
||||||
fixUmlauts() = settings.value(QStringLiteral("fixumlauts"), false).toBool();
|
v.editor.autoCompletition.fixUmlauts = settings.value(QStringLiteral("fixumlauts"), false).toBool();
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
BackupHelper::backupDirectory() = settings.value(QStringLiteral("tempdir")).toString().toStdString();
|
BackupHelper::backupDirectory() = settings.value(QStringLiteral("tempdir")).toString().toStdString();
|
||||||
Settings::hideCoverButtons() = settings.value(QStringLiteral("hidecoverbtn"), false).toBool();
|
v.editor.hideCoverButtons = settings.value(QStringLiteral("hidecoverbtn"), false).toBool();
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
|
|
||||||
selectedFieldsModel().restore(settings, QStringLiteral("selectedfields"));
|
v.editor.fields.restore(settings, QStringLiteral("selectedfields"));
|
||||||
|
v.editor.autoCompletition.fields.restore(settings, QStringLiteral("autocorrectionfields"));
|
||||||
autoCorrectionFields().restore(settings, QStringLiteral("autocorrectionfields"));
|
|
||||||
|
|
||||||
settings.beginGroup(QStringLiteral("info"));
|
settings.beginGroup(QStringLiteral("info"));
|
||||||
Settings::forceFullParse() = settings.value(QStringLiteral("forcefullparse"), false).toBool();
|
v.editor.forceFullParse = settings.value(QStringLiteral("forcefullparse"), false).toBool();
|
||||||
#ifndef TAGEDITOR_NO_WEBVIEW
|
#ifndef TAGEDITOR_NO_WEBVIEW
|
||||||
Settings::noWebView() = settings.value(QStringLiteral("nowebview"), false).toBool();
|
v.editor.noWebView = settings.value(QStringLiteral("nowebview"), false).toBool();
|
||||||
#endif
|
#endif
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
|
|
||||||
settings.beginGroup(QStringLiteral("filebrowser"));
|
settings.beginGroup(QStringLiteral("filebrowser"));
|
||||||
hideBackupFiles() = settings.value(QStringLiteral("hidebackupfiles"), true).toBool();
|
v.fileBrowser.hideBackupFiles = settings.value(QStringLiteral("hidebackupfiles"), true).toBool();
|
||||||
fileBrowserReadOnly() = settings.value(QStringLiteral("readonly"), true).toBool();
|
v.fileBrowser.readOnly = settings.value(QStringLiteral("readonly"), true).toBool();
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
|
|
||||||
settings.beginGroup(QStringLiteral("tagprocessing"));
|
settings.beginGroup(QStringLiteral("tagprocessing"));
|
||||||
switch(settings.value(QStringLiteral("preferredencoding"), 1).toInt()) {
|
switch(settings.value(QStringLiteral("preferredencoding"), 1).toInt()) {
|
||||||
case 0:
|
case 0:
|
||||||
preferredEncoding() = Media::TagTextEncoding::Latin1;
|
v.tagPocessing.preferredEncoding = Media::TagTextEncoding::Latin1;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
preferredEncoding() = Media::TagTextEncoding::Utf16BigEndian;
|
v.tagPocessing.preferredEncoding = Media::TagTextEncoding::Utf16BigEndian;
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
preferredEncoding() = Media::TagTextEncoding::Utf16LittleEndian;
|
v.tagPocessing.preferredEncoding = Media::TagTextEncoding::Utf16LittleEndian;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
preferredEncoding() = Media::TagTextEncoding::Utf8;
|
v.tagPocessing.preferredEncoding = Media::TagTextEncoding::Utf8;
|
||||||
};
|
};
|
||||||
switch(settings.value(QStringLiteral("unsupportedfieldhandling"), 0).toInt()) {
|
switch(settings.value(QStringLiteral("unsupportedfieldhandling"), 0).toInt()) {
|
||||||
case 1:
|
case 1:
|
||||||
unsupportedFieldHandling() = UnsupportedFieldHandling::Discard;
|
v.tagPocessing.unsupportedFieldHandling = UnsupportedFieldHandling::Discard;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
unsupportedFieldHandling() = UnsupportedFieldHandling::Ignore;
|
v.tagPocessing.unsupportedFieldHandling = UnsupportedFieldHandling::Ignore;
|
||||||
};
|
};
|
||||||
autoTagManagement() = settings.value(QStringLiteral("autotagmanagement"), true).toBool();
|
v.tagPocessing.autoTagManagement = settings.value(QStringLiteral("autotagmanagement"), true).toBool();
|
||||||
settings.beginGroup(QStringLiteral("id3v1"));
|
settings.beginGroup(QStringLiteral("id3v1"));
|
||||||
switch(settings.value(QStringLiteral("usage"), 0).toInt()) {
|
switch(settings.value(QStringLiteral("usage"), 0).toInt()) {
|
||||||
case 1:
|
case 1:
|
||||||
id3v1usage() = TagUsage::KeepExisting;
|
v.tagPocessing.id3.v1Usage = TagUsage::KeepExisting;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
id3v1usage() = TagUsage::Never;
|
v.tagPocessing.id3.v1Usage = TagUsage::Never;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
id3v1usage() = TagUsage::Always;
|
v.tagPocessing.id3.v1Usage = TagUsage::Always;
|
||||||
break;
|
break;
|
||||||
};
|
};
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
settings.beginGroup(QStringLiteral("id3v2"));
|
settings.beginGroup(QStringLiteral("id3v2"));
|
||||||
switch(settings.value(QStringLiteral("usage"), 0).toInt()) {
|
switch(settings.value(QStringLiteral("usage"), 0).toInt()) {
|
||||||
case 1:
|
case 1:
|
||||||
id3v2usage() = TagUsage::KeepExisting;
|
v.tagPocessing.id3.v2Usage = TagUsage::KeepExisting;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
id3v2usage() = TagUsage::Never;
|
v.tagPocessing.id3.v2Usage = TagUsage::Never;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
id3v2usage() = TagUsage::Always;
|
v.tagPocessing.id3.v2Usage = TagUsage::Always;
|
||||||
};
|
};
|
||||||
id3v2versionToBeUsed() = settings.value(QStringLiteral("versiontobeused"), 3).toUInt();
|
v.tagPocessing.id3.v2Version = settings.value(QStringLiteral("versiontobeused"), 3).toUInt();
|
||||||
keepVersionOfExistingId3v2Tag() = settings.value(QStringLiteral("keepversionofexistingtag"), true).toBool();
|
v.tagPocessing.id3.keepVersionOfExistingId3v2Tag = settings.value(QStringLiteral("keepversionofexistingtag"), true).toBool();
|
||||||
mergeMultipleSuccessiveId3v2Tags() = settings.value(QStringLiteral("mergemultiplesuccessivetags"), true).toBool();
|
v.tagPocessing.id3.mergeMultipleSuccessiveId3v2Tags = settings.value(QStringLiteral("mergemultiplesuccessivetags"), true).toBool();
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
defaultTargetsModel().restore(settings, QStringLiteral("targets"));
|
v.editor.defaultTargets.restore(settings, QStringLiteral("targets"));
|
||||||
settings.beginGroup(QStringLiteral("filelayout"));
|
settings.beginGroup(QStringLiteral("filelayout"));
|
||||||
forceRewrite() = settings.value(QStringLiteral("forcerewrite"), true).toBool();
|
v.tagPocessing.fileLayout.forceRewrite = settings.value(QStringLiteral("forcerewrite"), true).toBool();
|
||||||
switch(settings.value(QStringLiteral("tagpos")).toInt()) {
|
switch(settings.value(QStringLiteral("tagpos")).toInt()) {
|
||||||
case 0:
|
case 0:
|
||||||
preferredTagPosition() = ElementPosition::BeforeData;
|
v.tagPocessing.fileLayout.preferredTagPosition = ElementPosition::BeforeData;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
preferredTagPosition() = ElementPosition::AfterData;
|
v.tagPocessing.fileLayout.preferredTagPosition = ElementPosition::AfterData;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
forceTagPosition() = settings.value(QStringLiteral("forcetagpos"), true).toBool();
|
v.tagPocessing.fileLayout.forceTagPosition = settings.value(QStringLiteral("forcetagpos"), true).toBool();
|
||||||
switch(settings.value(QStringLiteral("indexpos")).toInt()) {
|
switch(settings.value(QStringLiteral("indexpos")).toInt()) {
|
||||||
case 0:
|
case 0:
|
||||||
preferredIndexPosition() = ElementPosition::BeforeData;
|
v.tagPocessing.fileLayout.preferredIndexPosition = ElementPosition::BeforeData;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
preferredIndexPosition() = ElementPosition::AfterData;
|
v.tagPocessing.fileLayout.preferredIndexPosition = ElementPosition::AfterData;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
forceIndexPosition() = settings.value(QStringLiteral("forceindexpos"), true).toBool();
|
v.tagPocessing.fileLayout.forceIndexPosition = settings.value(QStringLiteral("forceindexpos"), true).toBool();
|
||||||
minPadding() = settings.value(QStringLiteral("minpad"), 0).toUInt();
|
v.tagPocessing.fileLayout.minPadding = settings.value(QStringLiteral("minpad"), 0).toUInt();
|
||||||
maxPadding() = settings.value(QStringLiteral("maxpad"), 0).toUInt();
|
v.tagPocessing.fileLayout.maxPadding = settings.value(QStringLiteral("maxpad"), 0).toUInt();
|
||||||
preferredPadding() = settings.value(QStringLiteral("prefpad"), 0).toUInt();
|
v.tagPocessing.fileLayout.preferredPadding = settings.value(QStringLiteral("prefpad"), 0).toUInt();
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
|
|
||||||
settings.beginGroup(QStringLiteral("mainwindow"));
|
settings.beginGroup(QStringLiteral("mainwindow"));
|
||||||
mainWindowGeometry() = settings.value(QStringLiteral("geometry")).toByteArray();
|
v.mainWindow.geometry = settings.value(QStringLiteral("geometry")).toByteArray();
|
||||||
mainWindowState() = settings.value(QStringLiteral("windowstate")).toByteArray();
|
v.mainWindow.state = settings.value(QStringLiteral("windowstate")).toByteArray();
|
||||||
mainWindowCurrentFileBrowserDirectory() = settings.value(QStringLiteral("currentfilebrowserdirectory")).toString();
|
v.mainWindow.currentFileBrowserDirectory = settings.value(QStringLiteral("currentfilebrowserdirectory")).toString();
|
||||||
mainWindowLayoutLocked() = settings.value(QStringLiteral("layoutlocked"), mainWindowLayoutLocked()).toBool();
|
v.mainWindow.layoutLocked = settings.value(QStringLiteral("layoutlocked"), v.mainWindow.layoutLocked).toBool();
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
|
|
||||||
settings.beginGroup(QStringLiteral("dbquery"));
|
settings.beginGroup(QStringLiteral("dbquery"));
|
||||||
dbQueryWidgetShown() = settings.value(QStringLiteral("visible"), false).toBool();
|
v.dbQuery.widgetShown = settings.value(QStringLiteral("visible"), false).toBool();
|
||||||
dbQueryOverride() = settings.value(QStringLiteral("override"), true).toBool();
|
v.dbQuery.override = settings.value(QStringLiteral("override"), true).toBool();
|
||||||
dbQueryFields().restore(settings, QStringLiteral("fields"));
|
v.dbQuery.fields.restore(settings, QStringLiteral("fields"));
|
||||||
musicBrainzUrl() = settings.value(QStringLiteral("musicbrainzurl")).toString();
|
v.dbQuery.musicBrainzUrl = settings.value(QStringLiteral("musicbrainzurl")).toString();
|
||||||
coverArtArchiveUrl() = settings.value(QStringLiteral("coverartarchiveurl")).toString();
|
v.dbQuery.coverArtArchiveUrl = settings.value(QStringLiteral("coverartarchiveurl")).toString();
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
|
|
||||||
settings.beginGroup(QStringLiteral("renamedlg"));
|
settings.beginGroup(QStringLiteral("renamedlg"));
|
||||||
scriptSource() = settings.value(QStringLiteral("src")).toInt();
|
v.renamingUtility.scriptSource = settings.value(QStringLiteral("src")).toInt();
|
||||||
externalScript() = settings.value(QStringLiteral("file")).toString();
|
v.renamingUtility.externalScript = settings.value(QStringLiteral("file")).toString();
|
||||||
editorScript() = settings.value(QStringLiteral("script")).toString();
|
v.renamingUtility.editorScript = settings.value(QStringLiteral("script")).toString();
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
|
|
||||||
qtSettings().restore(settings);
|
v.qt.restore(settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
void save()
|
void save()
|
||||||
{
|
{
|
||||||
QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(), QApplication::applicationName());
|
QSettings settings(QSettings::IniFormat, QSettings::UserScope, QApplication::organizationName(), QApplication::applicationName());
|
||||||
|
const Settings &v = values();
|
||||||
|
|
||||||
settings.beginGroup(QStringLiteral("editor"));
|
settings.beginGroup(QStringLiteral("editor"));
|
||||||
settings.setValue(QStringLiteral("adoptfields"), static_cast<int>(adoptFields()));
|
settings.setValue(QStringLiteral("adoptfields"), static_cast<int>(v.editor.adoptFields));
|
||||||
settings.setValue(QStringLiteral("saveandshownextonenter"), saveAndShowNextOnEnter());
|
settings.setValue(QStringLiteral("saveandshownextonenter"), v.editor.saveAndShowNextOnEnter);
|
||||||
settings.setValue(QStringLiteral("askbeforedeleting"), askBeforeDeleting());
|
settings.setValue(QStringLiteral("askbeforedeleting"), v.editor.askBeforeDeleting);
|
||||||
settings.setValue(QStringLiteral("multipletaghandling"), static_cast<int>(multipleTagHandling()));
|
settings.setValue(QStringLiteral("multipletaghandling"), static_cast<int>(v.editor.multipleTagHandling));
|
||||||
settings.setValue(QStringLiteral("hidetagselectioncombobox"), hideTagSelectionComboBox());
|
settings.setValue(QStringLiteral("hidetagselectioncombobox"), v.editor.hideTagSelectionComboBox);
|
||||||
settings.beginGroup(QStringLiteral("autocorrection"));
|
settings.beginGroup(QStringLiteral("autocorrection"));
|
||||||
settings.setValue(QStringLiteral("inserttitlefromfilename"), Settings::insertTitleFromFilename());
|
settings.setValue(QStringLiteral("inserttitlefromfilename"), v.editor.autoCompletition.insertTitleFromFilename);
|
||||||
settings.setValue(QStringLiteral("trimwhitespaces"), Settings::trimWhitespaces());
|
settings.setValue(QStringLiteral("trimwhitespaces"), v.editor.autoCompletition.trimWhitespaces);
|
||||||
settings.setValue(QStringLiteral("formatnames"), Settings::formatNames());
|
settings.setValue(QStringLiteral("formatnames"), v.editor.autoCompletition.formatNames);
|
||||||
settings.setValue(QStringLiteral("fixumlauts"), Settings::fixUmlauts());
|
settings.setValue(QStringLiteral("fixumlauts"), v.editor.autoCompletition.fixUmlauts);
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
settings.setValue(QStringLiteral("tempdir"), QString::fromStdString(BackupHelper::backupDirectory()));
|
settings.setValue(QStringLiteral("tempdir"), QString::fromStdString(BackupHelper::backupDirectory()));
|
||||||
settings.setValue(QStringLiteral("hidecoverbtn"), Settings::hideCoverButtons());
|
settings.setValue(QStringLiteral("hidecoverbtn"), v.editor.hideCoverButtons);
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
|
|
||||||
selectedFieldsModel().save(settings, QStringLiteral("selectedfields"));
|
v.editor.fields.save(settings, QStringLiteral("selectedfields"));
|
||||||
|
v.editor.autoCompletition.fields.save(settings, QStringLiteral("autocorrectionfields"));
|
||||||
autoCorrectionFields().save(settings, QStringLiteral("autocorrectionfields"));
|
|
||||||
|
|
||||||
settings.beginGroup(QStringLiteral("info"));
|
settings.beginGroup(QStringLiteral("info"));
|
||||||
settings.setValue(QStringLiteral("forcefullparse"), Settings::forceFullParse());
|
settings.setValue(QStringLiteral("forcefullparse"), v.editor.forceFullParse);
|
||||||
#ifndef TAGEDITOR_NO_WEBVIEW
|
#ifndef TAGEDITOR_NO_WEBVIEW
|
||||||
settings.setValue(QStringLiteral("nowebview"), Settings::noWebView());
|
settings.setValue(QStringLiteral("nowebview"), v.editor.noWebView);
|
||||||
#endif
|
#endif
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
|
|
||||||
settings.beginGroup(QStringLiteral("filebrowser"));
|
settings.beginGroup(QStringLiteral("filebrowser"));
|
||||||
settings.setValue(QStringLiteral("hidebackupfiles"), hideBackupFiles());
|
settings.setValue(QStringLiteral("hidebackupfiles"), v.fileBrowser.hideBackupFiles);
|
||||||
settings.setValue(QStringLiteral("readonly"), fileBrowserReadOnly());
|
settings.setValue(QStringLiteral("readonly"), v.fileBrowser.readOnly);
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
|
|
||||||
settings.beginGroup(QStringLiteral("tagprocessing"));
|
settings.beginGroup(QStringLiteral("tagprocessing"));
|
||||||
settings.setValue(QStringLiteral("preferredencoding"), static_cast<int>(preferredEncoding()));
|
settings.setValue(QStringLiteral("preferredencoding"), static_cast<int>(v.tagPocessing.preferredEncoding));
|
||||||
settings.setValue(QStringLiteral("unsupportedfieldhandling"), static_cast<int>(unsupportedFieldHandling()));
|
settings.setValue(QStringLiteral("unsupportedfieldhandling"), static_cast<int>(v.tagPocessing.unsupportedFieldHandling));
|
||||||
settings.setValue(QStringLiteral("autotagmanagement"), autoTagManagement());
|
settings.setValue(QStringLiteral("autotagmanagement"), v.tagPocessing.autoTagManagement);
|
||||||
settings.beginGroup(QStringLiteral("id3v1"));
|
settings.beginGroup(QStringLiteral("id3v1"));
|
||||||
settings.setValue(QStringLiteral("usage"), static_cast<int>(id3v1usage()));
|
settings.setValue(QStringLiteral("usage"), static_cast<int>(v.tagPocessing.id3.v1Usage));
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
settings.beginGroup(QStringLiteral("id3v2"));
|
settings.beginGroup(QStringLiteral("id3v2"));
|
||||||
settings.setValue(QStringLiteral("usage"), static_cast<int>(id3v2usage()));
|
settings.setValue(QStringLiteral("usage"), static_cast<int>(v.tagPocessing.id3.v2Usage));
|
||||||
settings.setValue(QStringLiteral("versiontobeused"), id3v2versionToBeUsed());
|
settings.setValue(QStringLiteral("versiontobeused"), v.tagPocessing.id3.v2Version);
|
||||||
settings.setValue(QStringLiteral("keepversionofexistingtag"), keepVersionOfExistingId3v2Tag());
|
settings.setValue(QStringLiteral("keepversionofexistingtag"), v.tagPocessing.id3.keepVersionOfExistingId3v2Tag);
|
||||||
settings.setValue(QStringLiteral("mergemultiplesuccessivetags"), mergeMultipleSuccessiveId3v2Tags());
|
settings.setValue(QStringLiteral("mergemultiplesuccessivetags"), v.tagPocessing.id3.mergeMultipleSuccessiveId3v2Tags);
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
defaultTargetsModel().save(settings, QStringLiteral("targets"));
|
v.editor.defaultTargets.save(settings, QStringLiteral("targets"));
|
||||||
settings.beginGroup(QStringLiteral("filelayout"));
|
settings.beginGroup(QStringLiteral("filelayout"));
|
||||||
settings.setValue(QStringLiteral("forcerewrite"), forceRewrite());
|
settings.setValue(QStringLiteral("forcerewrite"), v.tagPocessing.fileLayout.forceRewrite);
|
||||||
settings.setValue(QStringLiteral("tagpos"), static_cast<int>(preferredTagPosition()));
|
settings.setValue(QStringLiteral("tagpos"), static_cast<int>(v.tagPocessing.fileLayout.preferredTagPosition));
|
||||||
settings.setValue(QStringLiteral("forcetagpos"), forceTagPosition());
|
settings.setValue(QStringLiteral("forcetagpos"), v.tagPocessing.fileLayout.forceTagPosition);
|
||||||
settings.setValue(QStringLiteral("indexpos"), static_cast<int>(preferredIndexPosition()));
|
settings.setValue(QStringLiteral("indexpos"), static_cast<int>(v.tagPocessing.fileLayout.preferredIndexPosition));
|
||||||
settings.setValue(QStringLiteral("forceindexpos"), forceIndexPosition());
|
settings.setValue(QStringLiteral("forceindexpos"), v.tagPocessing.fileLayout.forceIndexPosition);
|
||||||
settings.setValue(QStringLiteral("minpad"), QVariant::fromValue(minPadding()));
|
settings.setValue(QStringLiteral("minpad"), QVariant::fromValue(v.tagPocessing.fileLayout.minPadding));
|
||||||
settings.setValue(QStringLiteral("maxpad"), QVariant::fromValue(maxPadding()));
|
settings.setValue(QStringLiteral("maxpad"), QVariant::fromValue(v.tagPocessing.fileLayout.maxPadding));
|
||||||
settings.setValue(QStringLiteral("prefpad"), QVariant::fromValue(preferredPadding()));
|
settings.setValue(QStringLiteral("prefpad"), QVariant::fromValue(v.tagPocessing.fileLayout.preferredPadding));
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
|
|
||||||
settings.beginGroup(QStringLiteral("mainwindow"));
|
settings.beginGroup(QStringLiteral("mainwindow"));
|
||||||
settings.setValue(QStringLiteral("geometry"), mainWindowGeometry());
|
settings.setValue(QStringLiteral("geometry"), v.mainWindow.geometry);
|
||||||
settings.setValue(QStringLiteral("windowstate"), mainWindowState());
|
settings.setValue(QStringLiteral("windowstate"), v.mainWindow.state);
|
||||||
settings.setValue(QStringLiteral("currentfilebrowserdirectory"), mainWindowCurrentFileBrowserDirectory());
|
settings.setValue(QStringLiteral("currentfilebrowserdirectory"), v.mainWindow.currentFileBrowserDirectory);
|
||||||
settings.setValue(QStringLiteral("layoutlocked"), mainWindowLayoutLocked());
|
settings.setValue(QStringLiteral("layoutlocked"), v.mainWindow.layoutLocked);
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
|
|
||||||
settings.beginGroup(QStringLiteral("dbquery"));
|
settings.beginGroup(QStringLiteral("dbquery"));
|
||||||
settings.setValue(QStringLiteral("visible"), dbQueryWidgetShown());
|
settings.setValue(QStringLiteral("visible"), v.dbQuery.widgetShown);
|
||||||
settings.setValue(QStringLiteral("override"), dbQueryOverride());
|
settings.setValue(QStringLiteral("override"), v.dbQuery.override);
|
||||||
dbQueryFields().save(settings, QStringLiteral("fields"));
|
v.dbQuery.fields.save(settings, QStringLiteral("fields"));
|
||||||
settings.setValue(QStringLiteral("musicbrainzurl"), musicBrainzUrl());
|
settings.setValue(QStringLiteral("musicbrainzurl"), v.dbQuery.musicBrainzUrl);
|
||||||
settings.setValue(QStringLiteral("coverartarchiveurl"), coverArtArchiveUrl());
|
settings.setValue(QStringLiteral("coverartarchiveurl"), v.dbQuery.coverArtArchiveUrl);
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
|
|
||||||
settings.beginGroup(QStringLiteral("renamedlg"));
|
settings.beginGroup(QStringLiteral("renamedlg"));
|
||||||
settings.setValue(QStringLiteral("src"), Settings::scriptSource());
|
settings.setValue(QStringLiteral("src"), v.renamingUtility.scriptSource);
|
||||||
settings.setValue(QStringLiteral("file"), Settings::externalScript());
|
settings.setValue(QStringLiteral("file"), v.renamingUtility.externalScript);
|
||||||
settings.setValue(QStringLiteral("script"), Settings::editorScript());
|
settings.setValue(QStringLiteral("script"), v.renamingUtility.editorScript);
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
|
|
||||||
qtSettings().save(settings);
|
v.qt.save(settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,27 +1,22 @@
|
||||||
#ifndef SETTINGS_H
|
#ifndef SETTINGS_H
|
||||||
#define SETTINGS_H
|
#define SETTINGS_H
|
||||||
|
|
||||||
|
#include "./targetlevelmodel.h"
|
||||||
|
#include "./knownfieldmodel.h"
|
||||||
|
|
||||||
#include <c++utilities/conversion/types.h>
|
#include <c++utilities/conversion/types.h>
|
||||||
|
|
||||||
#include <tagparser/tagvalue.h>
|
#include <tagparser/tagvalue.h>
|
||||||
|
#include <tagparser/tag.h>
|
||||||
|
#include <tagparser/mediafileinfo.h>
|
||||||
|
|
||||||
#include <QtGlobal>
|
#include <qtutilities/settingsdialog/qtsettings.h>
|
||||||
|
|
||||||
QT_FORWARD_DECLARE_CLASS(QByteArray)
|
#include <QString>
|
||||||
QT_FORWARD_DECLARE_CLASS(QString)
|
#include <QByteArray>
|
||||||
|
|
||||||
namespace Media {
|
|
||||||
enum class TagUsage;
|
|
||||||
enum class ElementPosition;
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace Dialogs {
|
|
||||||
class QtSettings;
|
|
||||||
}
|
|
||||||
|
|
||||||
namespace Settings {
|
namespace Settings {
|
||||||
|
|
||||||
// general
|
|
||||||
enum class ActionEnabled
|
enum class ActionEnabled
|
||||||
{
|
{
|
||||||
Ask,
|
Ask,
|
||||||
|
@ -29,97 +24,127 @@ enum class ActionEnabled
|
||||||
No
|
No
|
||||||
};
|
};
|
||||||
|
|
||||||
// editor
|
|
||||||
enum class AdoptFields
|
enum class AdoptFields
|
||||||
{
|
{
|
||||||
Never,
|
Never,
|
||||||
WithinDirectory,
|
WithinDirectory,
|
||||||
Always
|
Always
|
||||||
};
|
};
|
||||||
AdoptFields &adoptFields();
|
|
||||||
bool &saveAndShowNextOnEnter();
|
|
||||||
bool &askBeforeDeleting();
|
|
||||||
enum class MultipleTagHandling
|
enum class MultipleTagHandling
|
||||||
{
|
{
|
||||||
SingleEditorPerTarget,
|
SingleEditorPerTarget,
|
||||||
SeparateEditors
|
SeparateEditors
|
||||||
};
|
};
|
||||||
MultipleTagHandling &multipleTagHandling();
|
|
||||||
bool &hideTagSelectionComboBox();
|
struct AutoCompletition
|
||||||
bool &forceFullParse();
|
{
|
||||||
|
AutoCompletition();
|
||||||
|
bool insertTitleFromFilename = false;
|
||||||
|
bool trimWhitespaces = true;
|
||||||
|
bool formatNames = false;
|
||||||
|
bool fixUmlauts = false;
|
||||||
|
KnownFieldModel fields;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct Editor
|
||||||
|
{
|
||||||
|
Editor();
|
||||||
|
AdoptFields adoptFields = AdoptFields::Never;
|
||||||
|
bool saveAndShowNextOnEnter = false;
|
||||||
|
bool askBeforeDeleting = true;
|
||||||
|
MultipleTagHandling multipleTagHandling = MultipleTagHandling::SingleEditorPerTarget;
|
||||||
|
bool hideTagSelectionComboBox = false;
|
||||||
|
bool forceFullParse = false;
|
||||||
#ifndef TAGEDITOR_NO_WEBVIEW
|
#ifndef TAGEDITOR_NO_WEBVIEW
|
||||||
bool &noWebView();
|
bool noWebView = false;
|
||||||
#endif
|
#endif
|
||||||
bool &hideCoverButtons();
|
bool hideCoverButtons = false;
|
||||||
|
AutoCompletition autoCompletition;
|
||||||
|
KnownFieldModel fields;
|
||||||
|
TargetLevelModel defaultTargets;
|
||||||
|
};
|
||||||
|
|
||||||
// file browser
|
|
||||||
bool &hideBackupFiles();
|
|
||||||
bool &fileBrowserReadOnly();
|
|
||||||
|
|
||||||
// general tag processing
|
|
||||||
Media::TagTextEncoding &preferredEncoding();
|
|
||||||
enum class UnsupportedFieldHandling
|
enum class UnsupportedFieldHandling
|
||||||
{
|
{
|
||||||
Ignore,
|
Ignore,
|
||||||
Discard
|
Discard
|
||||||
};
|
};
|
||||||
UnsupportedFieldHandling &unsupportedFieldHandling();
|
|
||||||
bool &autoTagManagement();
|
|
||||||
|
|
||||||
// ID3 tag processing
|
struct FileBrowser
|
||||||
Media::TagUsage &id3v1usage();
|
{
|
||||||
Media::TagUsage &id3v2usage();
|
bool hideBackupFiles = true;
|
||||||
byte &id3v2versionToBeUsed();
|
bool readOnly = true;
|
||||||
bool &keepVersionOfExistingId3v2Tag();
|
};
|
||||||
bool &mergeMultipleSuccessiveId3v2Tags();
|
|
||||||
|
|
||||||
// file layout
|
struct Id3Processing
|
||||||
bool &forceRewrite();
|
{
|
||||||
Media::ElementPosition &preferredTagPosition();
|
Media::TagUsage v1Usage = Media::TagUsage::Always;
|
||||||
bool &forceTagPosition();
|
Media::TagUsage v2Usage = Media::TagUsage::Always;
|
||||||
Media::ElementPosition &preferredIndexPosition();
|
byte v2Version = 3;
|
||||||
bool &forceIndexPosition();
|
bool keepVersionOfExistingId3v2Tag = true;
|
||||||
size_t &minPadding();
|
bool mergeMultipleSuccessiveId3v2Tags = true;
|
||||||
size_t &maxPadding();
|
};
|
||||||
size_t &preferredPadding();
|
|
||||||
|
|
||||||
// targets
|
struct FileLayout
|
||||||
class TargetLevelModel;
|
{
|
||||||
TargetLevelModel &defaultTargetsModel();
|
bool forceRewrite = true;
|
||||||
|
Media::ElementPosition preferredTagPosition = Media::ElementPosition::BeforeData;
|
||||||
|
bool forceTagPosition = true;
|
||||||
|
Media::ElementPosition preferredIndexPosition = Media::ElementPosition::BeforeData;
|
||||||
|
bool forceIndexPosition = true;
|
||||||
|
std::size_t minPadding = 0;
|
||||||
|
std::size_t maxPadding = 0;
|
||||||
|
std::size_t preferredPadding = 0;
|
||||||
|
};
|
||||||
|
|
||||||
// fields
|
struct TagProcessing
|
||||||
class KnownFieldModel;
|
{
|
||||||
KnownFieldModel &selectedFieldsModel();
|
Media::TagTextEncoding preferredEncoding = Media::TagTextEncoding::Utf8;
|
||||||
|
UnsupportedFieldHandling unsupportedFieldHandling = UnsupportedFieldHandling::Ignore;
|
||||||
|
bool autoTagManagement = true;
|
||||||
|
Id3Processing id3;
|
||||||
|
FileLayout fileLayout;
|
||||||
|
};
|
||||||
|
|
||||||
// auto correction/completition
|
struct MainWindow
|
||||||
bool &insertTitleFromFilename();
|
{
|
||||||
bool &trimWhitespaces();
|
QByteArray geometry;
|
||||||
bool &formatNames();
|
QByteArray state;
|
||||||
bool &fixUmlauts();
|
QString currentFileBrowserDirectory;
|
||||||
KnownFieldModel &autoCorrectionFields();
|
bool layoutLocked = false;
|
||||||
|
};
|
||||||
|
|
||||||
// main window
|
struct DbQuery
|
||||||
QByteArray &mainWindowGeometry();
|
{
|
||||||
QByteArray &mainWindowState();
|
DbQuery();
|
||||||
QString &mainWindowCurrentFileBrowserDirectory();
|
bool widgetShown = false;
|
||||||
bool &mainWindowLayoutLocked();
|
bool override = false;
|
||||||
|
KnownFieldModel fields;
|
||||||
|
QString musicBrainzUrl;
|
||||||
|
QString coverArtArchiveUrl;
|
||||||
|
QString lyricsWikiaUrl;
|
||||||
|
};
|
||||||
|
|
||||||
// db query
|
struct RenamingUtility
|
||||||
bool &dbQueryWidgetShown();
|
{
|
||||||
bool &dbQueryOverride();
|
int scriptSource = 0;
|
||||||
KnownFieldModel &dbQueryFields();
|
QString externalScript;
|
||||||
QString &musicBrainzUrl();
|
QString editorScript;
|
||||||
QString &coverArtArchiveUrl();
|
};
|
||||||
QString &lyricsWikiaUrl();
|
|
||||||
|
|
||||||
// rename files dialog
|
struct Settings
|
||||||
int &scriptSource();
|
{
|
||||||
QString &externalScript();
|
Editor editor;
|
||||||
QString &editorScript();
|
FileBrowser fileBrowser;
|
||||||
|
TagProcessing tagPocessing;
|
||||||
// Qt settings
|
MainWindow mainWindow;
|
||||||
Dialogs::QtSettings &qtSettings();
|
DbQuery dbQuery;
|
||||||
|
RenamingUtility renamingUtility;
|
||||||
|
Dialogs::QtSettings qt;
|
||||||
|
};
|
||||||
|
|
||||||
|
Settings &values();
|
||||||
void restore();
|
void restore();
|
||||||
void save();
|
void save();
|
||||||
|
|
||||||
|
|
|
@ -57,11 +57,11 @@ public:
|
||||||
bool isFetchingCover() const;
|
bool isFetchingCover() const;
|
||||||
Media::TagValue fieldValue(int row, Media::KnownField knownField) const;
|
Media::TagValue fieldValue(int row, Media::KnownField knownField) const;
|
||||||
|
|
||||||
QVariant data(const QModelIndex &index, int role) const;
|
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
|
||||||
Qt::ItemFlags flags(const QModelIndex &index) const;
|
Qt::ItemFlags flags(const QModelIndex &index) const;
|
||||||
QVariant headerData(int section, Qt::Orientation orientation, int role) const;
|
QVariant headerData(int section, Qt::Orientation orientation, int role) const;
|
||||||
int rowCount(const QModelIndex &parent) const;
|
int rowCount(const QModelIndex &parent = QModelIndex()) const;
|
||||||
int columnCount(const QModelIndex &parent) const;
|
int columnCount(const QModelIndex &parent = QModelIndex()) const;
|
||||||
const QByteArray *cover(const QModelIndex &index) const;
|
const QByteArray *cover(const QModelIndex &index) const;
|
||||||
virtual bool fetchCover(const QModelIndex &index);
|
virtual bool fetchCover(const QModelIndex &index);
|
||||||
const QString *lyrics(const QModelIndex &index) const;
|
const QString *lyrics(const QModelIndex &index) const;
|
||||||
|
|
|
@ -19,6 +19,12 @@ namespace QtGui {
|
||||||
|
|
||||||
static const QString defaultLyricsWikiaUrl(QStringLiteral("https://lyrics.wikia.com"));
|
static const QString defaultLyricsWikiaUrl(QStringLiteral("https://lyrics.wikia.com"));
|
||||||
|
|
||||||
|
QUrl lyricsWikiaApiUrl()
|
||||||
|
{
|
||||||
|
const QString &lyricsWikiaUrl = Settings::values().dbQuery.lyricsWikiaUrl;
|
||||||
|
return QUrl((lyricsWikiaUrl.isEmpty() ? defaultLyricsWikiaUrl : lyricsWikiaUrl) + QStringLiteral("/api.php"));
|
||||||
|
}
|
||||||
|
|
||||||
LyricsWikiaResultsModel::LyricsWikiaResultsModel(SongDescription &&initialSongDescription, QNetworkReply *reply) :
|
LyricsWikiaResultsModel::LyricsWikiaResultsModel(SongDescription &&initialSongDescription, QNetworkReply *reply) :
|
||||||
HttpResultsModel(move(initialSongDescription), reply)
|
HttpResultsModel(move(initialSongDescription), reply)
|
||||||
{}
|
{}
|
||||||
|
@ -117,7 +123,6 @@ void LyricsWikiaResultsModel::parseInitialResults(const QByteArray &data)
|
||||||
QNetworkReply *LyricsWikiaResultsModel::requestSongDetails(const SongDescription &songDescription)
|
QNetworkReply *LyricsWikiaResultsModel::requestSongDetails(const SongDescription &songDescription)
|
||||||
{
|
{
|
||||||
// compose URL
|
// compose URL
|
||||||
QUrl url((Settings::lyricsWikiaUrl().isEmpty() ? defaultLyricsWikiaUrl : Settings::lyricsWikiaUrl()) + QStringLiteral("/api.php"));
|
|
||||||
QUrlQuery query;
|
QUrlQuery query;
|
||||||
query.addQueryItem(QStringLiteral("func"), QStringLiteral("getSong"));
|
query.addQueryItem(QStringLiteral("func"), QStringLiteral("getSong"));
|
||||||
query.addQueryItem(QStringLiteral("action"), QStringLiteral("lyrics"));
|
query.addQueryItem(QStringLiteral("action"), QStringLiteral("lyrics"));
|
||||||
|
@ -129,6 +134,7 @@ QNetworkReply *LyricsWikiaResultsModel::requestSongDetails(const SongDescription
|
||||||
// specifying album seems to have no effect but also don't hurt
|
// specifying album seems to have no effect but also don't hurt
|
||||||
query.addQueryItem(QStringLiteral("album"), songDescription.album);
|
query.addQueryItem(QStringLiteral("album"), songDescription.album);
|
||||||
}
|
}
|
||||||
|
QUrl url(lyricsWikiaApiUrl());
|
||||||
url.setQuery(query);
|
url.setQuery(query);
|
||||||
|
|
||||||
return Utility::networkAccessManager().get(QNetworkRequest(url));
|
return Utility::networkAccessManager().get(QNetworkRequest(url));
|
||||||
|
@ -202,7 +208,7 @@ void LyricsWikiaResultsModel::parseSongDetails(int row, const QByteArray &data)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// do not use parsed URL directly to avoid unintended requests
|
// do not use parsed URL directly to avoid unintended requests
|
||||||
QUrl requestUrl(Settings::lyricsWikiaUrl().isEmpty() ? defaultLyricsWikiaUrl : Settings::lyricsWikiaUrl());
|
QUrl requestUrl(lyricsWikiaApiUrl());
|
||||||
requestUrl.setPath(parsedUrl.path());
|
requestUrl.setPath(parsedUrl.path());
|
||||||
auto *reply = Utility::networkAccessManager().get(QNetworkRequest(parsedUrl));
|
auto *reply = Utility::networkAccessManager().get(QNetworkRequest(parsedUrl));
|
||||||
addReply(reply, bind(&LyricsWikiaResultsModel::handleLyricsReplyFinished, this, reply, row));
|
addReply(reply, bind(&LyricsWikiaResultsModel::handleLyricsReplyFinished, this, reply, row));
|
||||||
|
@ -250,12 +256,12 @@ void LyricsWikiaResultsModel::parseLyricsResults(int row, const QByteArray &data
|
||||||
QueryResultsModel *queryLyricsWikia(SongDescription &&songDescription)
|
QueryResultsModel *queryLyricsWikia(SongDescription &&songDescription)
|
||||||
{
|
{
|
||||||
// compose URL
|
// compose URL
|
||||||
QUrl url((Settings::lyricsWikiaUrl().isEmpty() ? defaultLyricsWikiaUrl : Settings::lyricsWikiaUrl()) + QStringLiteral("/api.php"));
|
|
||||||
QUrlQuery query;
|
QUrlQuery query;
|
||||||
query.addQueryItem(QStringLiteral("func"), QStringLiteral("getArtist"));
|
query.addQueryItem(QStringLiteral("func"), QStringLiteral("getArtist"));
|
||||||
query.addQueryItem(QStringLiteral("fmt"), QStringLiteral("xml"));
|
query.addQueryItem(QStringLiteral("fmt"), QStringLiteral("xml"));
|
||||||
query.addQueryItem(QStringLiteral("fixXML"), QString());
|
query.addQueryItem(QStringLiteral("fixXML"), QString());
|
||||||
query.addQueryItem(QStringLiteral("artist"), songDescription.artist);
|
query.addQueryItem(QStringLiteral("artist"), songDescription.artist);
|
||||||
|
QUrl url(lyricsWikiaApiUrl());
|
||||||
url.setQuery(query);
|
url.setQuery(query);
|
||||||
|
|
||||||
// NOTE: Only getArtist seems to work, so artist must be specified and filtering must
|
// NOTE: Only getArtist seems to work, so artist must be specified and filtering must
|
||||||
|
|
|
@ -206,7 +206,8 @@ QueryResultsModel *queryMusicBrainz(SongDescription &&songDescription)
|
||||||
}
|
}
|
||||||
|
|
||||||
// compose URL
|
// compose URL
|
||||||
QUrl url(Settings::musicBrainzUrl().isEmpty() ? defaultMusicBrainzUrl : (Settings::musicBrainzUrl() + QStringLiteral("/recording/")));
|
const QString &musicBrainzUrl = Settings::values().dbQuery.musicBrainzUrl;
|
||||||
|
QUrl url(musicBrainzUrl.isEmpty() ? defaultMusicBrainzUrl : (musicBrainzUrl + QStringLiteral("/recording/")));
|
||||||
QUrlQuery query;
|
QUrlQuery query;
|
||||||
query.addQueryItem(QStringLiteral("query"), parts.join(QStringLiteral(" AND ")));
|
query.addQueryItem(QStringLiteral("query"), parts.join(QStringLiteral(" AND ")));
|
||||||
url.setQuery(query);
|
url.setQuery(query);
|
||||||
|
@ -218,7 +219,8 @@ QueryResultsModel *queryMusicBrainz(SongDescription &&songDescription)
|
||||||
QNetworkReply *queryCoverArtArchive(const QString &albumId)
|
QNetworkReply *queryCoverArtArchive(const QString &albumId)
|
||||||
{
|
{
|
||||||
static const QString defaultArchiveUrl(QStringLiteral("https://coverartarchive.org"));
|
static const QString defaultArchiveUrl(QStringLiteral("https://coverartarchive.org"));
|
||||||
return networkAccessManager().get(QNetworkRequest(QUrl((Settings::coverArtArchiveUrl().isEmpty() ? defaultArchiveUrl : Settings::coverArtArchiveUrl()) % QStringLiteral("/release/") % albumId % QStringLiteral("/front"))));
|
const QString &coverArtArchiveUrl = Settings::values().dbQuery.coverArtArchiveUrl;
|
||||||
|
return networkAccessManager().get(QNetworkRequest(QUrl((coverArtArchiveUrl.isEmpty() ? defaultArchiveUrl : coverArtArchiveUrl) % QStringLiteral("/release/") % albumId % QStringLiteral("/front"))));
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace QtGui
|
} // namespace QtGui
|
||||||
|
|
|
@ -22,6 +22,10 @@
|
||||||
#include <QGraphicsItem>
|
#include <QGraphicsItem>
|
||||||
#include <QTextBrowser>
|
#include <QTextBrowser>
|
||||||
|
|
||||||
|
#include <functional>
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
using namespace std::placeholders;
|
||||||
using namespace ConversionUtilities;
|
using namespace ConversionUtilities;
|
||||||
using namespace Dialogs;
|
using namespace Dialogs;
|
||||||
using namespace Models;
|
using namespace Models;
|
||||||
|
@ -56,13 +60,13 @@ DbQueryWidget::DbQueryWidget(TagEditorWidget *tagEditorWidget, QWidget *parent)
|
||||||
m_ui->applyPushButton->setIcon(style()->standardIcon(QStyle::SP_DialogApplyButton, nullptr, m_ui->applyPushButton));
|
m_ui->applyPushButton->setIcon(style()->standardIcon(QStyle::SP_DialogApplyButton, nullptr, m_ui->applyPushButton));
|
||||||
|
|
||||||
// initialize fields model
|
// initialize fields model
|
||||||
m_ui->fieldsListView->setModel(&Settings::dbQueryFields());
|
m_ui->fieldsListView->setModel(&values().dbQuery.fields);
|
||||||
|
|
||||||
// initialize search terms form
|
// initialize search terms form
|
||||||
insertSearchTermsFromTagEdit(m_tagEditorWidget->activeTagEdit());
|
insertSearchTermsFromTagEdit(m_tagEditorWidget->activeTagEdit());
|
||||||
|
|
||||||
// restore settings
|
// restore settings
|
||||||
m_ui->overrideCheckBox->setChecked(Settings::dbQueryOverride());
|
m_ui->overrideCheckBox->setChecked(values().dbQuery.override);
|
||||||
|
|
||||||
// setup menu
|
// setup menu
|
||||||
m_insertPresentDataAction = m_menu->addAction(tr("Insert present data"));
|
m_insertPresentDataAction = m_menu->addAction(tr("Insert present data"));
|
||||||
|
@ -78,14 +82,14 @@ DbQueryWidget::DbQueryWidget(TagEditorWidget *tagEditorWidget, QWidget *parent)
|
||||||
connect(m_ui->abortPushButton, &QPushButton::clicked, this, &DbQueryWidget::abortSearch);
|
connect(m_ui->abortPushButton, &QPushButton::clicked, this, &DbQueryWidget::abortSearch);
|
||||||
connect(m_ui->searchMusicBrainzPushButton, &QPushButton::clicked, this, &DbQueryWidget::searchMusicBrainz);
|
connect(m_ui->searchMusicBrainzPushButton, &QPushButton::clicked, this, &DbQueryWidget::searchMusicBrainz);
|
||||||
connect(m_ui->searchLyricsWikiaPushButton, &QPushButton::clicked, this, &DbQueryWidget::searchLyricsWikia);
|
connect(m_ui->searchLyricsWikiaPushButton, &QPushButton::clicked, this, &DbQueryWidget::searchLyricsWikia);
|
||||||
connect(m_ui->applyPushButton, &QPushButton::clicked, this, &DbQueryWidget::applyResults);
|
connect(m_ui->applyPushButton, &QPushButton::clicked, this, static_cast<void(DbQueryWidget::*)(void)>(&DbQueryWidget::applySelectedResults));
|
||||||
connect(m_tagEditorWidget, &TagEditorWidget::fileStatusChanged, this, &DbQueryWidget::fileStatusChanged);
|
connect(m_tagEditorWidget, &TagEditorWidget::fileStatusChanged, this, &DbQueryWidget::fileStatusChanged);
|
||||||
connect(m_ui->resultsTreeView, &QTreeView::customContextMenuRequested, this, &DbQueryWidget::showResultsContextMenu);
|
connect(m_ui->resultsTreeView, &QTreeView::customContextMenuRequested, this, &DbQueryWidget::showResultsContextMenu);
|
||||||
}
|
}
|
||||||
|
|
||||||
DbQueryWidget::~DbQueryWidget()
|
DbQueryWidget::~DbQueryWidget()
|
||||||
{
|
{
|
||||||
Settings::dbQueryOverride() = m_ui->overrideCheckBox->isChecked();
|
values().dbQuery.override = m_ui->overrideCheckBox->isChecked();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DbQueryWidget::insertSearchTermsFromTagEdit(TagEdit *tagEdit)
|
void DbQueryWidget::insertSearchTermsFromTagEdit(TagEdit *tagEdit)
|
||||||
|
@ -239,80 +243,156 @@ void DbQueryWidget::fileStatusChanged(bool, bool hasTags)
|
||||||
m_insertPresentDataAction->setEnabled(hasTags);
|
m_insertPresentDataAction->setEnabled(hasTags);
|
||||||
}
|
}
|
||||||
|
|
||||||
void DbQueryWidget::applyResults()
|
/*!
|
||||||
|
* \brief Applies the selected results for the selected fields to the active tag edit.
|
||||||
|
* \sa applyResults()
|
||||||
|
*/
|
||||||
|
void DbQueryWidget::applySelectedResults()
|
||||||
{
|
{
|
||||||
// check whether model, tag edit and current selection exist
|
// check whether model, tag edit and current selection exist
|
||||||
|
if(TagEdit *tagEdit = m_tagEditorWidget->activeTagEdit()) {
|
||||||
|
if(const QItemSelectionModel *selectionModel = m_ui->resultsTreeView->selectionModel()) {
|
||||||
|
const QModelIndexList selection = selectionModel->selection().indexes();
|
||||||
|
if(!selection.isEmpty()) {
|
||||||
|
applyResults(tagEdit, selection.front());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Completes all present tag edits with the best matching result row.
|
||||||
|
* \remarks
|
||||||
|
* - Does nothing if no result row matches.
|
||||||
|
* - Only the selected fields are applied.
|
||||||
|
* \sa applyResults()
|
||||||
|
*/
|
||||||
|
void DbQueryWidget::applyMatchingResults()
|
||||||
|
{
|
||||||
|
m_tagEditorWidget->foreachTagEdit(bind(static_cast<void(DbQueryWidget::*)(TagEdit *)>(&DbQueryWidget::applyMatchingResults), this, _1));
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Completes the specified \a tagEdit with the best matching result row.
|
||||||
|
* \remarks
|
||||||
|
* - Does nothing if no result row matches.
|
||||||
|
* - Only the selected fields are applied.
|
||||||
|
* \sa applyResults()
|
||||||
|
*/
|
||||||
|
void DbQueryWidget::applyMatchingResults(TagEdit *tagEdit)
|
||||||
|
{
|
||||||
|
// determine already present title, album and artist
|
||||||
|
const TagValue givenTitle = tagEdit->value(KnownField::Title);
|
||||||
|
const TagValue givenAlbum = tagEdit->value(KnownField::Album);
|
||||||
|
const TagValue givenArtist = tagEdit->value(KnownField::Artist);
|
||||||
|
|
||||||
|
// also determine already present track number (which is a little bit more complex -> TODO: improve backend API)
|
||||||
|
int givenTrack;
|
||||||
|
try {
|
||||||
|
givenTrack = tagEdit->value(KnownField::TrackPosition).toPositionInSet().position();
|
||||||
|
} catch (const ConversionException &) {
|
||||||
|
}
|
||||||
|
if(!givenTrack) {
|
||||||
|
for(const Tag *tag : tagEdit->tags()) {
|
||||||
|
if(!tag->supportsTarget() || tag->targetLevel() == TagTargetLevel::Track) {
|
||||||
|
try {
|
||||||
|
givenTrack = tagEdit->value(KnownField::PartNumber).toInteger();
|
||||||
|
} catch (const ConversionException &) {
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// find row matching already present data
|
||||||
|
for(int row = 0, rowCount = m_model->rowCount(); row != rowCount; ++row) {
|
||||||
|
if((!givenTitle.isEmpty() && givenTitle != m_model->fieldValue(row, KnownField::Title))
|
||||||
|
|| (!givenAlbum.isEmpty() && givenAlbum != m_model->fieldValue(row, KnownField::Album))
|
||||||
|
|| (!givenArtist.isEmpty() && givenArtist != m_model->fieldValue(row, KnownField::Artist))
|
||||||
|
|| (givenTrack && m_model->data(m_model->index(row, QueryResultsModel::TitleCol)).toInt())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// apply results for matching row
|
||||||
|
applyResults(tagEdit, m_model->index(row, 0));
|
||||||
|
|
||||||
|
// just take the first matching row for now
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief Applies the results at the specified \a resultIndex for the selected fields to the specified \a tagEdit.
|
||||||
|
* \remarks
|
||||||
|
* - Returns instantly. If cover/lyrics need to be retrieved, this is done asynchronously.
|
||||||
|
* - Does nothing if no results are available.
|
||||||
|
*/
|
||||||
|
void DbQueryWidget::applyResults(TagEdit *tagEdit, const QModelIndex &resultIndex)
|
||||||
|
{
|
||||||
if(m_model) {
|
if(m_model) {
|
||||||
if(TagEdit *tagEdit = m_tagEditorWidget->activeTagEdit()) {
|
// determine previous value handling
|
||||||
if(const QItemSelectionModel *selectionModel = m_ui->resultsTreeView->selectionModel()) {
|
PreviousValueHandling previousValueHandling = m_ui->overrideCheckBox->isChecked()
|
||||||
const QModelIndexList selection = selectionModel->selection().indexes();
|
? PreviousValueHandling::Update : PreviousValueHandling::Keep;
|
||||||
if(!selection.isEmpty()) {
|
|
||||||
// determine previous value handling
|
|
||||||
PreviousValueHandling previousValueHandling = m_ui->overrideCheckBox->isChecked()
|
|
||||||
? PreviousValueHandling::Update : PreviousValueHandling::Keep;
|
|
||||||
|
|
||||||
// loop through all fields
|
// loop through all fields
|
||||||
for(const ChecklistItem &item : Settings::dbQueryFields().items()) {
|
for(const ChecklistItem &item : values().dbQuery.fields.items()) {
|
||||||
if(item.isChecked()) {
|
if(item.isChecked()) {
|
||||||
// field should be used
|
// field should be used
|
||||||
const auto field = static_cast<KnownField>(item.id().toInt());
|
const auto field = static_cast<KnownField>(item.id().toInt());
|
||||||
int row = selection.front().row();
|
int row = resultIndex.row();
|
||||||
TagValue value = m_model->fieldValue(row, field);
|
TagValue value = m_model->fieldValue(row, field);
|
||||||
|
|
||||||
if(value.isEmpty()) {
|
if(value.isEmpty()) {
|
||||||
// cover and lyrics might be fetched belated
|
// cover and lyrics might be fetched belated
|
||||||
switch(field) {
|
switch(field) {
|
||||||
case KnownField::Cover:
|
case KnownField::Cover:
|
||||||
if(m_model->fetchCover(selection.front())) {
|
if(m_model->fetchCover(resultIndex)) {
|
||||||
// cover is available now
|
// cover is available now
|
||||||
|
tagEdit->setValue(KnownField::Cover, m_model->fieldValue(row, KnownField::Cover), previousValueHandling);
|
||||||
|
} else {
|
||||||
|
// cover is fetched asynchronously
|
||||||
|
// -> show status
|
||||||
|
m_ui->notificationLabel->setNotificationType(NotificationType::Progress);
|
||||||
|
m_ui->notificationLabel->appendLine(tr("Retrieving cover art to be applied ..."));
|
||||||
|
setStatus(false);
|
||||||
|
// -> apply cover when available
|
||||||
|
connect(m_model, &QueryResultsModel::coverAvailable, [this, row, previousValueHandling](const QModelIndex &index) {
|
||||||
|
if(row == index.row()) {
|
||||||
|
if(TagEdit *tagEdit = m_tagEditorWidget->activeTagEdit()) {
|
||||||
tagEdit->setValue(KnownField::Cover, m_model->fieldValue(row, KnownField::Cover), previousValueHandling);
|
tagEdit->setValue(KnownField::Cover, m_model->fieldValue(row, KnownField::Cover), previousValueHandling);
|
||||||
} else {
|
|
||||||
// cover is fetched asynchronously
|
|
||||||
// -> show status
|
|
||||||
m_ui->notificationLabel->setNotificationType(NotificationType::Progress);
|
|
||||||
m_ui->notificationLabel->appendLine(tr("Retrieving cover art to be applied ..."));
|
|
||||||
setStatus(false);
|
|
||||||
// -> apply cover when available
|
|
||||||
connect(m_model, &QueryResultsModel::coverAvailable, [this, row, previousValueHandling](const QModelIndex &index) {
|
|
||||||
if(row == index.row()) {
|
|
||||||
if(TagEdit *tagEdit = m_tagEditorWidget->activeTagEdit()) {
|
|
||||||
tagEdit->setValue(KnownField::Cover, m_model->fieldValue(row, KnownField::Cover), previousValueHandling);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
|
|
||||||
case KnownField::Lyrics:
|
|
||||||
if(m_model->fetchLyrics(selection.front())) {
|
|
||||||
// lyrics are available now
|
|
||||||
tagEdit->setValue(KnownField::Lyrics, m_model->fieldValue(row, KnownField::Lyrics), previousValueHandling);
|
|
||||||
} else {
|
|
||||||
// lyrics are fetched asynchronously
|
|
||||||
// -> show status
|
|
||||||
m_ui->notificationLabel->setNotificationType(NotificationType::Progress);
|
|
||||||
m_ui->notificationLabel->appendLine(tr("Retrieving lyrics to be applied ..."));
|
|
||||||
setStatus(false);
|
|
||||||
// -> apply cover when available
|
|
||||||
connect(m_model, &QueryResultsModel::lyricsAvailable, [this, row, previousValueHandling](const QModelIndex &index) {
|
|
||||||
if(row == index.row()) {
|
|
||||||
if(TagEdit *tagEdit = m_tagEditorWidget->activeTagEdit()) {
|
|
||||||
tagEdit->setValue(KnownField::Lyrics, m_model->fieldValue(row, KnownField::Lyrics), previousValueHandling);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
;
|
|
||||||
}
|
}
|
||||||
} else {
|
});
|
||||||
// any other fields are just set
|
|
||||||
tagEdit->setValue(field, value, previousValueHandling);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case KnownField::Lyrics:
|
||||||
|
if(m_model->fetchLyrics(resultIndex)) {
|
||||||
|
// lyrics are available now
|
||||||
|
tagEdit->setValue(KnownField::Lyrics, m_model->fieldValue(row, KnownField::Lyrics), previousValueHandling);
|
||||||
|
} else {
|
||||||
|
// lyrics are fetched asynchronously
|
||||||
|
// -> show status
|
||||||
|
m_ui->notificationLabel->setNotificationType(NotificationType::Progress);
|
||||||
|
m_ui->notificationLabel->appendLine(tr("Retrieving lyrics to be applied ..."));
|
||||||
|
setStatus(false);
|
||||||
|
// -> apply cover when available
|
||||||
|
connect(m_model, &QueryResultsModel::lyricsAvailable, [this, row, previousValueHandling](const QModelIndex &index) {
|
||||||
|
if(row == index.row()) {
|
||||||
|
if(TagEdit *tagEdit = m_tagEditorWidget->activeTagEdit()) {
|
||||||
|
tagEdit->setValue(KnownField::Lyrics, m_model->fieldValue(row, KnownField::Lyrics), previousValueHandling);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
// any other fields are just set
|
||||||
|
tagEdit->setValue(field, value, previousValueHandling);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,12 +34,15 @@ public:
|
||||||
|
|
||||||
void insertSearchTermsFromTagEdit(TagEdit *tagEdit);
|
void insertSearchTermsFromTagEdit(TagEdit *tagEdit);
|
||||||
SongDescription currentSongDescription() const;
|
SongDescription currentSongDescription() const;
|
||||||
|
void applyResults(TagEdit *tagEdit, const QModelIndex &resultIndex);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void searchMusicBrainz();
|
void searchMusicBrainz();
|
||||||
void searchLyricsWikia();
|
void searchLyricsWikia();
|
||||||
void abortSearch();
|
void abortSearch();
|
||||||
void applyResults();
|
void applySelectedResults();
|
||||||
|
void applyMatchingResults();
|
||||||
|
void applyMatchingResults(TagEdit *tagEdit);
|
||||||
void insertSearchTermsFromActiveTagEdit();
|
void insertSearchTermsFromActiveTagEdit();
|
||||||
void clearSearchCriteria();
|
void clearSearchCriteria();
|
||||||
|
|
||||||
|
|
|
@ -23,8 +23,8 @@ int runWidgetsGui(int argc, char *argv[], const QtConfigArguments &qtConfigArgs,
|
||||||
QApplication a(argc, argv);
|
QApplication a(argc, argv);
|
||||||
Settings::restore();
|
Settings::restore();
|
||||||
// apply settings specified via command line args after the settings chosen in the GUI to give the CLI options precedence
|
// apply settings specified via command line args after the settings chosen in the GUI to give the CLI options precedence
|
||||||
Settings::qtSettings().apply();
|
Settings::values().qt.apply();
|
||||||
qtConfigArgs.applySettings(Settings::qtSettings().hasCustomFont());
|
qtConfigArgs.applySettings(Settings::values().qt.hasCustomFont());
|
||||||
// load resources needed by classes of qtutilities
|
// load resources needed by classes of qtutilities
|
||||||
QtUtilitiesResources::init();
|
QtUtilitiesResources::init();
|
||||||
LOAD_QT_TRANSLATIONS;
|
LOAD_QT_TRANSLATIONS;
|
||||||
|
|
|
@ -88,8 +88,9 @@ MainWindow::MainWindow(QWidget *parent) :
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// restore geometry and state
|
// restore geometry and state
|
||||||
restoreGeometry(Settings::mainWindowGeometry());
|
const auto &settings = Settings::values();
|
||||||
restoreState(Settings::mainWindowState());
|
restoreGeometry(settings.mainWindow.geometry);
|
||||||
|
restoreState(settings.mainWindow.state);
|
||||||
|
|
||||||
// setup file model and file tree view
|
// setup file model and file tree view
|
||||||
m_fileModel = new QFileSystemModel(this);
|
m_fileModel = new QFileSystemModel(this);
|
||||||
|
@ -97,7 +98,7 @@ MainWindow::MainWindow(QWidget *parent) :
|
||||||
m_fileFilterModel = new FileFilterProxyModel(this);
|
m_fileFilterModel = new FileFilterProxyModel(this);
|
||||||
m_fileFilterModel->setExtensionsToBeFiltered(QStringList() << QStringLiteral("bak") << QStringLiteral("tmp"));
|
m_fileFilterModel->setExtensionsToBeFiltered(QStringList() << QStringLiteral("bak") << QStringLiteral("tmp"));
|
||||||
m_fileFilterModel->setSourceModel(m_fileModel);
|
m_fileFilterModel->setSourceModel(m_fileModel);
|
||||||
m_fileFilterModel->setFilterEnabled(Settings::hideBackupFiles());
|
m_fileFilterModel->setFilterEnabled(settings.fileBrowser.hideBackupFiles);
|
||||||
m_ui->filesTreeView->sortByColumn(0, Qt::AscendingOrder);
|
m_ui->filesTreeView->sortByColumn(0, Qt::AscendingOrder);
|
||||||
m_ui->filesTreeView->setModel(m_fileFilterModel);
|
m_ui->filesTreeView->setModel(m_fileFilterModel);
|
||||||
m_ui->filesTreeView->setColumnWidth(0, 300);
|
m_ui->filesTreeView->setColumnWidth(0, 300);
|
||||||
|
@ -109,12 +110,12 @@ MainWindow::MainWindow(QWidget *parent) :
|
||||||
handleFileStatusChange(false, false);
|
handleFileStatusChange(false, false);
|
||||||
|
|
||||||
// dbquery dock widget
|
// dbquery dock widget
|
||||||
if(Settings::dbQueryWidgetShown()) {
|
if(settings.dbQuery.widgetShown) {
|
||||||
m_ui->dbQueryDockWidget->setWidget(m_dbQueryWidget = new DbQueryWidget(m_ui->tagEditorWidget, this));
|
m_ui->dbQueryDockWidget->setWidget(m_dbQueryWidget = new DbQueryWidget(m_ui->tagEditorWidget, this));
|
||||||
}
|
}
|
||||||
|
|
||||||
// restore locked
|
// restore locked
|
||||||
setLayoutLocked(Settings::mainWindowLayoutLocked());
|
setLayoutLocked(settings.mainWindow.layoutLocked);
|
||||||
|
|
||||||
// connect signals and slots, install event filter
|
// connect signals and slots, install event filter
|
||||||
// menu: application
|
// menu: application
|
||||||
|
@ -147,7 +148,7 @@ MainWindow::MainWindow(QWidget *parent) :
|
||||||
connect(m_ui->filesTreeView->selectionModel(), &QItemSelectionModel::selectionChanged, this, &MainWindow::fileSelected);
|
connect(m_ui->filesTreeView->selectionModel(), &QItemSelectionModel::selectionChanged, this, &MainWindow::fileSelected);
|
||||||
connect(m_ui->selectNextCommandLinkButton, &QCommandLinkButton::clicked, this, static_cast<void(MainWindow::*)(void)>(&MainWindow::selectNextFile));
|
connect(m_ui->selectNextCommandLinkButton, &QCommandLinkButton::clicked, this, static_cast<void(MainWindow::*)(void)>(&MainWindow::selectNextFile));
|
||||||
// apply settings
|
// apply settings
|
||||||
setCurrentDirectory(Settings::mainWindowCurrentFileBrowserDirectory());
|
setCurrentDirectory(settings.mainWindow.currentFileBrowserDirectory);
|
||||||
applySettingsFromDialog();
|
applySettingsFromDialog();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -222,14 +223,15 @@ void MainWindow::startParsing(const QString &path)
|
||||||
*/
|
*/
|
||||||
bool MainWindow::event(QEvent *event)
|
bool MainWindow::event(QEvent *event)
|
||||||
{
|
{
|
||||||
|
auto &settings = Settings::values();
|
||||||
switch(event->type()) {
|
switch(event->type()) {
|
||||||
case QEvent::Close:
|
case QEvent::Close:
|
||||||
// save settings
|
// save settings
|
||||||
Settings::mainWindowGeometry() = saveGeometry();
|
settings.mainWindow.geometry = saveGeometry();
|
||||||
Settings::mainWindowState() = saveState();
|
settings.mainWindow.state = saveState();
|
||||||
Settings::mainWindowCurrentFileBrowserDirectory() = currentDirectory();
|
settings.mainWindow.currentFileBrowserDirectory = currentDirectory();
|
||||||
Settings::mainWindowLayoutLocked() = isLayoutLocked();
|
settings.mainWindow.layoutLocked = isLayoutLocked();
|
||||||
Settings::dbQueryWidgetShown() = m_ui->dbQueryDockWidget->isVisible();
|
settings.dbQuery.widgetShown = m_ui->dbQueryDockWidget->isVisible();
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
;
|
;
|
||||||
|
@ -542,16 +544,17 @@ void MainWindow::saveFileInformation()
|
||||||
*/
|
*/
|
||||||
void MainWindow::applySettingsFromDialog()
|
void MainWindow::applySettingsFromDialog()
|
||||||
{
|
{
|
||||||
if(m_fileFilterModel->isFilterEnabled() != Settings::hideBackupFiles()) {
|
auto &settings = Settings::values();
|
||||||
|
if(m_fileFilterModel->isFilterEnabled() != settings.fileBrowser.hideBackupFiles) {
|
||||||
// check this condition to avoid unnecessary model reset
|
// check this condition to avoid unnecessary model reset
|
||||||
m_fileFilterModel->setFilterEnabled(Settings::hideBackupFiles());
|
m_fileFilterModel->setFilterEnabled(settings.fileBrowser.hideBackupFiles);
|
||||||
const QModelIndex index = m_fileFilterModel->mapFromSource(m_fileModel->index(m_ui->pathLineEdit->text()));
|
const QModelIndex index = m_fileFilterModel->mapFromSource(m_fileModel->index(m_ui->pathLineEdit->text()));
|
||||||
if(index.isValid()) {
|
if(index.isValid()) {
|
||||||
m_ui->filesTreeView->selectionModel()->setCurrentIndex(index, QItemSelectionModel::Select);
|
m_ui->filesTreeView->selectionModel()->setCurrentIndex(index, QItemSelectionModel::Select);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(m_fileModel->isReadOnly() != Settings::fileBrowserReadOnly()) {
|
if(m_fileModel->isReadOnly() != settings.fileBrowser.readOnly) {
|
||||||
m_fileModel->setReadOnly(Settings::fileBrowserReadOnly());
|
m_fileModel->setReadOnly(settings.fileBrowser.readOnly);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -55,7 +55,7 @@ PicturePreviewSelection::PicturePreviewSelection(Tag *tag, KnownField field, QWi
|
||||||
m_currentTypeIndex(0)
|
m_currentTypeIndex(0)
|
||||||
{
|
{
|
||||||
m_ui->setupUi(this);
|
m_ui->setupUi(this);
|
||||||
m_ui->coverButtonsWidget->setHidden(Settings::hideCoverButtons());
|
m_ui->coverButtonsWidget->setHidden(Settings::values().editor.hideCoverButtons);
|
||||||
connect(m_ui->addButton, &QPushButton::clicked, this, static_cast<void (PicturePreviewSelection::*)(void)>(&PicturePreviewSelection::addOfSelectedType));
|
connect(m_ui->addButton, &QPushButton::clicked, this, static_cast<void (PicturePreviewSelection::*)(void)>(&PicturePreviewSelection::addOfSelectedType));
|
||||||
connect(m_ui->removeButton, &QPushButton::clicked, this, &PicturePreviewSelection::removeSelected);
|
connect(m_ui->removeButton, &QPushButton::clicked, this, &PicturePreviewSelection::removeSelected);
|
||||||
connect(m_ui->extractButton, &QPushButton::clicked, this, &PicturePreviewSelection::extractSelected);
|
connect(m_ui->extractButton, &QPushButton::clicked, this, &PicturePreviewSelection::extractSelected);
|
||||||
|
@ -549,7 +549,8 @@ void PicturePreviewSelection::updateDescription(int lastIndex, int newIndex)
|
||||||
{
|
{
|
||||||
TagTextEncoding enc;
|
TagTextEncoding enc;
|
||||||
if(m_tag) {
|
if(m_tag) {
|
||||||
enc = m_tag->canEncodingBeUsed(Settings::preferredEncoding()) ? Settings::preferredEncoding() : m_tag->proposedTextEncoding();
|
TagTextEncoding preferredEncoding = Settings::values().tagPocessing.preferredEncoding;
|
||||||
|
enc = m_tag->canEncodingBeUsed(preferredEncoding) ? preferredEncoding : m_tag->proposedTextEncoding();
|
||||||
} else {
|
} else {
|
||||||
enc = m_values[lastIndex].descriptionEncoding();
|
enc = m_values[lastIndex].descriptionEncoding();
|
||||||
}
|
}
|
||||||
|
|
|
@ -66,12 +66,13 @@ RenameFilesDialog::RenameFilesDialog(QWidget *parent) :
|
||||||
m_ui->abortClosePushButton->setIcon(style()->standardIcon(QStyle::SP_DialogCancelButton, nullptr, m_ui->abortClosePushButton));
|
m_ui->abortClosePushButton->setIcon(style()->standardIcon(QStyle::SP_DialogCancelButton, nullptr, m_ui->abortClosePushButton));
|
||||||
|
|
||||||
// restore settings
|
// restore settings
|
||||||
if(Settings::scriptSource() < m_ui->sourceFileStackedWidget->count()) {
|
const auto &settings = Settings::values().renamingUtility;
|
||||||
m_ui->sourceFileStackedWidget->setCurrentIndex(Settings::scriptSource());
|
if(Settings::values().renamingUtility.scriptSource < m_ui->sourceFileStackedWidget->count()) {
|
||||||
|
m_ui->sourceFileStackedWidget->setCurrentIndex(settings.scriptSource);
|
||||||
}
|
}
|
||||||
m_ui->scriptFilePathLineEdit->setText(Settings::externalScript());
|
m_ui->scriptFilePathLineEdit->setText(settings.externalScript);
|
||||||
if(!Settings::editorScript().isEmpty()) {
|
if(!Settings::values().renamingUtility.editorScript.isEmpty()) {
|
||||||
m_ui->javaScriptPlainTextEdit->setPlainText(Settings::editorScript());
|
m_ui->javaScriptPlainTextEdit->setPlainText(settings.editorScript);
|
||||||
m_scriptModified = true;
|
m_scriptModified = true;
|
||||||
} else {
|
} else {
|
||||||
pasteDefaultExampleScript();
|
pasteDefaultExampleScript();
|
||||||
|
@ -108,15 +109,16 @@ void RenameFilesDialog::setDirectory(const QString &directory)
|
||||||
|
|
||||||
bool RenameFilesDialog::event(QEvent *event)
|
bool RenameFilesDialog::event(QEvent *event)
|
||||||
{
|
{
|
||||||
|
auto &settings = Settings::values().renamingUtility;
|
||||||
switch(event->type()) {
|
switch(event->type()) {
|
||||||
case QEvent::Close:
|
case QEvent::Close:
|
||||||
// save settings
|
// save settings
|
||||||
Settings::scriptSource() = m_ui->sourceFileStackedWidget->currentIndex();
|
settings.scriptSource = m_ui->sourceFileStackedWidget->currentIndex();
|
||||||
Settings::externalScript() = m_ui->scriptFilePathLineEdit->text();
|
settings.externalScript = m_ui->scriptFilePathLineEdit->text();
|
||||||
if(m_scriptModified) {
|
if(m_scriptModified) {
|
||||||
Settings::editorScript() = m_ui->javaScriptPlainTextEdit->toPlainText();
|
settings.editorScript = m_ui->javaScriptPlainTextEdit->toPlainText();
|
||||||
} else {
|
} else {
|
||||||
Settings::editorScript().clear();
|
settings.editorScript.clear();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -46,18 +46,20 @@ FileBrowserGeneralOptionPage::~FileBrowserGeneralOptionPage()
|
||||||
|
|
||||||
bool FileBrowserGeneralOptionPage::apply()
|
bool FileBrowserGeneralOptionPage::apply()
|
||||||
{
|
{
|
||||||
|
auto &settings = values().fileBrowser;
|
||||||
if(hasBeenShown()) {
|
if(hasBeenShown()) {
|
||||||
hideBackupFiles() = ui()->hideBackupFilesCheckBox->isChecked();
|
settings.hideBackupFiles = ui()->hideBackupFilesCheckBox->isChecked();
|
||||||
fileBrowserReadOnly() = ui()->readOnlyCheckBox->isChecked();
|
settings.readOnly = ui()->readOnlyCheckBox->isChecked();
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void FileBrowserGeneralOptionPage::reset()
|
void FileBrowserGeneralOptionPage::reset()
|
||||||
{
|
{
|
||||||
|
const auto &settings = values().fileBrowser;
|
||||||
if(hasBeenShown()) {
|
if(hasBeenShown()) {
|
||||||
ui()->hideBackupFilesCheckBox->setChecked(hideBackupFiles());
|
ui()->hideBackupFilesCheckBox->setChecked(settings.hideBackupFiles);
|
||||||
ui()->readOnlyCheckBox->setChecked(fileBrowserReadOnly());
|
ui()->readOnlyCheckBox->setChecked(settings.readOnly);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -72,22 +74,23 @@ EditorGeneralOptionPage::~EditorGeneralOptionPage()
|
||||||
bool EditorGeneralOptionPage::apply()
|
bool EditorGeneralOptionPage::apply()
|
||||||
{
|
{
|
||||||
if(hasBeenShown()) {
|
if(hasBeenShown()) {
|
||||||
|
auto &settings = values().editor;
|
||||||
if(ui()->disableAdoptRadioButton->isChecked()) {
|
if(ui()->disableAdoptRadioButton->isChecked()) {
|
||||||
adoptFields() = AdoptFields::Never;
|
settings.adoptFields = AdoptFields::Never;
|
||||||
} else if(ui()->enableWithinDirRadioButton->isChecked()) {
|
} else if(ui()->enableWithinDirRadioButton->isChecked()) {
|
||||||
adoptFields() = AdoptFields::WithinDirectory;
|
settings.adoptFields = AdoptFields::WithinDirectory;
|
||||||
} else if(ui()->enableForAllRadioButton->isChecked()) {
|
} else if(ui()->enableForAllRadioButton->isChecked()) {
|
||||||
adoptFields() = AdoptFields::Always;
|
settings.adoptFields = AdoptFields::Always;
|
||||||
}
|
}
|
||||||
if(ui()->multipleTagsOneEditorRadioButton->isChecked()) {
|
if(ui()->multipleTagsOneEditorRadioButton->isChecked()) {
|
||||||
multipleTagHandling() = MultipleTagHandling::SingleEditorPerTarget;
|
settings.multipleTagHandling = MultipleTagHandling::SingleEditorPerTarget;
|
||||||
} else if(ui()->multipleTagsSeparateEditorsRadioButton->isChecked()) {
|
} else if(ui()->multipleTagsSeparateEditorsRadioButton->isChecked()) {
|
||||||
multipleTagHandling() = MultipleTagHandling::SeparateEditors;
|
settings.multipleTagHandling = MultipleTagHandling::SeparateEditors;
|
||||||
}
|
}
|
||||||
saveAndShowNextOnEnter() = ui()->nextWhenPressingEnterCheckBox->isChecked();
|
settings.saveAndShowNextOnEnter = ui()->nextWhenPressingEnterCheckBox->isChecked();
|
||||||
askBeforeDeleting() = ui()->askBeforeDeletingCheckBox->isChecked();
|
settings.askBeforeDeleting = ui()->askBeforeDeletingCheckBox->isChecked();
|
||||||
hideTagSelectionComboBox() = ui()->hideTagSelectionComboBoxCheckBox->isChecked();
|
settings.hideTagSelectionComboBox = ui()->hideTagSelectionComboBoxCheckBox->isChecked();
|
||||||
hideCoverButtons() = ui()->hideCoverButtonsCheckBox->isChecked();
|
settings.hideCoverButtons = ui()->hideCoverButtonsCheckBox->isChecked();
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -95,7 +98,8 @@ bool EditorGeneralOptionPage::apply()
|
||||||
void EditorGeneralOptionPage::reset()
|
void EditorGeneralOptionPage::reset()
|
||||||
{
|
{
|
||||||
if(hasBeenShown()) {
|
if(hasBeenShown()) {
|
||||||
switch(adoptFields()) {
|
const auto &settings = values().editor;
|
||||||
|
switch(settings.adoptFields) {
|
||||||
case AdoptFields::Never:
|
case AdoptFields::Never:
|
||||||
ui()->disableAdoptRadioButton->setChecked(true);
|
ui()->disableAdoptRadioButton->setChecked(true);
|
||||||
break;
|
break;
|
||||||
|
@ -106,7 +110,7 @@ void EditorGeneralOptionPage::reset()
|
||||||
ui()->enableForAllRadioButton->setChecked(true);
|
ui()->enableForAllRadioButton->setChecked(true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
switch(multipleTagHandling()) {
|
switch(settings.multipleTagHandling) {
|
||||||
case MultipleTagHandling::SingleEditorPerTarget:
|
case MultipleTagHandling::SingleEditorPerTarget:
|
||||||
ui()->multipleTagsOneEditorRadioButton->setChecked(true);
|
ui()->multipleTagsOneEditorRadioButton->setChecked(true);
|
||||||
break;
|
break;
|
||||||
|
@ -114,10 +118,10 @@ void EditorGeneralOptionPage::reset()
|
||||||
ui()->multipleTagsSeparateEditorsRadioButton->setChecked(true);
|
ui()->multipleTagsSeparateEditorsRadioButton->setChecked(true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
ui()->nextWhenPressingEnterCheckBox->setChecked(saveAndShowNextOnEnter());
|
ui()->nextWhenPressingEnterCheckBox->setChecked(settings.saveAndShowNextOnEnter);
|
||||||
ui()->askBeforeDeletingCheckBox->setChecked(askBeforeDeleting());
|
ui()->askBeforeDeletingCheckBox->setChecked(settings.askBeforeDeleting);
|
||||||
ui()->hideTagSelectionComboBoxCheckBox->setChecked(hideTagSelectionComboBox());
|
ui()->hideTagSelectionComboBoxCheckBox->setChecked(settings.hideTagSelectionComboBox);
|
||||||
ui()->hideCoverButtonsCheckBox->setChecked(hideCoverButtons());
|
ui()->hideCoverButtonsCheckBox->setChecked(settings.hideCoverButtons);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -164,7 +168,7 @@ EditorFieldsOptionPage::~EditorFieldsOptionPage()
|
||||||
bool EditorFieldsOptionPage::apply()
|
bool EditorFieldsOptionPage::apply()
|
||||||
{
|
{
|
||||||
if(hasBeenShown() && m_model) {
|
if(hasBeenShown() && m_model) {
|
||||||
Settings::selectedFieldsModel().setItems(m_model->items());
|
values().editor.fields.setItems(m_model->items());
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -172,7 +176,7 @@ bool EditorFieldsOptionPage::apply()
|
||||||
void EditorFieldsOptionPage::reset()
|
void EditorFieldsOptionPage::reset()
|
||||||
{
|
{
|
||||||
if(hasBeenShown() && m_model) {
|
if(hasBeenShown() && m_model) {
|
||||||
m_model->setItems(Settings::selectedFieldsModel().items());
|
m_model->setItems(values().editor.fields.items());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -198,12 +202,13 @@ EditorAutoCorrectionOptionPage::~EditorAutoCorrectionOptionPage()
|
||||||
bool EditorAutoCorrectionOptionPage::apply()
|
bool EditorAutoCorrectionOptionPage::apply()
|
||||||
{
|
{
|
||||||
if(hasBeenShown()) {
|
if(hasBeenShown()) {
|
||||||
Settings::insertTitleFromFilename() = ui()->insertTitleFromFilenameCheckBox->isChecked();
|
auto &settings = values().editor.autoCompletition;
|
||||||
Settings::trimWhitespaces() = ui()->trimWhitespacesCheckBox->isChecked();
|
settings.insertTitleFromFilename = ui()->insertTitleFromFilenameCheckBox->isChecked();
|
||||||
Settings::formatNames() = ui()->formatNamesCheckBox->isChecked();
|
settings.trimWhitespaces = ui()->trimWhitespacesCheckBox->isChecked();
|
||||||
Settings::fixUmlauts() = ui()->fixUmlautsCheckBox->isChecked();
|
settings.formatNames = ui()->formatNamesCheckBox->isChecked();
|
||||||
|
settings.fixUmlauts = ui()->fixUmlautsCheckBox->isChecked();
|
||||||
if(m_model) {
|
if(m_model) {
|
||||||
Settings::autoCorrectionFields().setItems(m_model->items());
|
settings.fields.setItems(m_model->items());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@ -212,12 +217,13 @@ bool EditorAutoCorrectionOptionPage::apply()
|
||||||
void EditorAutoCorrectionOptionPage::reset()
|
void EditorAutoCorrectionOptionPage::reset()
|
||||||
{
|
{
|
||||||
if(hasBeenShown()) {
|
if(hasBeenShown()) {
|
||||||
ui()->insertTitleFromFilenameCheckBox->setChecked(Settings::insertTitleFromFilename());
|
const auto &settings = values().editor.autoCompletition;
|
||||||
ui()->trimWhitespacesCheckBox->setChecked(Settings::trimWhitespaces());
|
ui()->insertTitleFromFilenameCheckBox->setChecked(settings.insertTitleFromFilename);
|
||||||
ui()->formatNamesCheckBox->setChecked(Settings::formatNames());
|
ui()->trimWhitespacesCheckBox->setChecked(settings.trimWhitespaces);
|
||||||
ui()->fixUmlautsCheckBox->setChecked(Settings::fixUmlauts());
|
ui()->formatNamesCheckBox->setChecked(settings.formatNames);
|
||||||
|
ui()->fixUmlautsCheckBox->setChecked(settings.fixUmlauts);
|
||||||
if(m_model) {
|
if(m_model) {
|
||||||
m_model->setItems(Settings::autoCorrectionFields().items());
|
m_model->setItems(settings.fields.items());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -243,8 +249,9 @@ EditorDbQueryOptionsPage::~EditorDbQueryOptionsPage()
|
||||||
bool EditorDbQueryOptionsPage::apply()
|
bool EditorDbQueryOptionsPage::apply()
|
||||||
{
|
{
|
||||||
if(hasBeenShown()) {
|
if(hasBeenShown()) {
|
||||||
Settings::musicBrainzUrl() = ui()->musicBrainzUrlLineEdit->text();
|
auto &settings = values().dbQuery;
|
||||||
Settings::coverArtArchiveUrl() = ui()->coverArtArchiveUrlLineEdit->text();
|
settings.musicBrainzUrl = ui()->musicBrainzUrlLineEdit->text();
|
||||||
|
settings.coverArtArchiveUrl = ui()->coverArtArchiveUrlLineEdit->text();
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -252,8 +259,9 @@ bool EditorDbQueryOptionsPage::apply()
|
||||||
void EditorDbQueryOptionsPage::reset()
|
void EditorDbQueryOptionsPage::reset()
|
||||||
{
|
{
|
||||||
if(hasBeenShown()) {
|
if(hasBeenShown()) {
|
||||||
ui()->musicBrainzUrlLineEdit->setText(Settings::musicBrainzUrl());
|
const auto &settings = values().dbQuery;
|
||||||
ui()->coverArtArchiveUrlLineEdit->setText(Settings::coverArtArchiveUrl());
|
ui()->musicBrainzUrlLineEdit->setText(settings.musicBrainzUrl);
|
||||||
|
ui()->coverArtArchiveUrlLineEdit->setText(settings.coverArtArchiveUrl);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -268,9 +276,10 @@ InfoOptionPage::~InfoOptionPage()
|
||||||
bool InfoOptionPage::apply()
|
bool InfoOptionPage::apply()
|
||||||
{
|
{
|
||||||
if(hasBeenShown()) {
|
if(hasBeenShown()) {
|
||||||
Settings::forceFullParse() = ui()->forceFullParseCheckBox->isChecked();
|
auto &settings = values().editor;
|
||||||
|
settings.forceFullParse = ui()->forceFullParseCheckBox->isChecked();
|
||||||
#ifndef TAGEDITOR_NO_WEBVIEW
|
#ifndef TAGEDITOR_NO_WEBVIEW
|
||||||
Settings::noWebView() = ui()->noWebViewCheckBox->isChecked();
|
settings.noWebView = ui()->noWebViewCheckBox->isChecked();
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@ -279,12 +288,13 @@ bool InfoOptionPage::apply()
|
||||||
void InfoOptionPage::reset()
|
void InfoOptionPage::reset()
|
||||||
{
|
{
|
||||||
if(hasBeenShown()) {
|
if(hasBeenShown()) {
|
||||||
ui()->forceFullParseCheckBox->setChecked(Settings::forceFullParse());
|
const auto &settings = values().editor;
|
||||||
|
ui()->forceFullParseCheckBox->setChecked(settings.forceFullParse);
|
||||||
#ifdef TAGEDITOR_NO_WEBVIEW
|
#ifdef TAGEDITOR_NO_WEBVIEW
|
||||||
ui()->noWebViewCheckBox->setChecked(true);
|
ui()->noWebViewCheckBox->setChecked(true);
|
||||||
ui()->noWebViewCheckBox->setEnabled(false);
|
ui()->noWebViewCheckBox->setEnabled(false);
|
||||||
#else
|
#else
|
||||||
ui()->noWebViewCheckBox->setChecked(Settings::noWebView());
|
ui()->noWebViewCheckBox->setChecked(settings.noWebView);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -300,24 +310,25 @@ TagProcessingGeneralOptionPage::~TagProcessingGeneralOptionPage()
|
||||||
bool TagProcessingGeneralOptionPage::apply()
|
bool TagProcessingGeneralOptionPage::apply()
|
||||||
{
|
{
|
||||||
if(hasBeenShown()) {
|
if(hasBeenShown()) {
|
||||||
|
auto &settings = values().tagPocessing;
|
||||||
if(ui()->latin1RadioButton->isChecked()) {
|
if(ui()->latin1RadioButton->isChecked()) {
|
||||||
preferredEncoding() = TagTextEncoding::Latin1;
|
settings.preferredEncoding = TagTextEncoding::Latin1;
|
||||||
} else if(ui()->utf8RadioButton->isChecked()) {
|
} else if(ui()->utf8RadioButton->isChecked()) {
|
||||||
preferredEncoding() = TagTextEncoding::Utf8;
|
settings.preferredEncoding = TagTextEncoding::Utf8;
|
||||||
} else if(ui()->utf16leRadioButton->isChecked()) {
|
} else if(ui()->utf16leRadioButton->isChecked()) {
|
||||||
preferredEncoding() = TagTextEncoding::Utf16LittleEndian;
|
settings.preferredEncoding = TagTextEncoding::Utf16LittleEndian;
|
||||||
} else if(ui()->utf16beRadioButton->isChecked()) {
|
} else if(ui()->utf16beRadioButton->isChecked()) {
|
||||||
preferredEncoding() = TagTextEncoding::Utf16BigEndian;
|
settings.preferredEncoding = TagTextEncoding::Utf16BigEndian;
|
||||||
} else if(ui()->autoRadioButton->isChecked()) {
|
} else if(ui()->autoRadioButton->isChecked()) {
|
||||||
preferredEncoding() = TagTextEncoding::Unspecified;
|
settings.preferredEncoding = TagTextEncoding::Unspecified;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(ui()->ignoreUnsupportedRadioButton->isChecked()) {
|
if(ui()->ignoreUnsupportedRadioButton->isChecked()) {
|
||||||
unsupportedFieldHandling() = UnsupportedFieldHandling::Ignore;
|
settings.unsupportedFieldHandling = UnsupportedFieldHandling::Ignore;
|
||||||
} else if(ui()->discardUnsupportedRadioButton->isChecked()) {
|
} else if(ui()->discardUnsupportedRadioButton->isChecked()) {
|
||||||
unsupportedFieldHandling() = UnsupportedFieldHandling::Discard;
|
settings.unsupportedFieldHandling = UnsupportedFieldHandling::Discard;
|
||||||
}
|
}
|
||||||
autoTagManagement() = ui()->autoTagManagementCheckBox->isChecked();
|
settings.autoTagManagement = ui()->autoTagManagementCheckBox->isChecked();
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -325,7 +336,8 @@ bool TagProcessingGeneralOptionPage::apply()
|
||||||
void TagProcessingGeneralOptionPage::reset()
|
void TagProcessingGeneralOptionPage::reset()
|
||||||
{
|
{
|
||||||
if(hasBeenShown()) {
|
if(hasBeenShown()) {
|
||||||
switch(preferredEncoding()) {
|
const auto &settings = values().tagPocessing;
|
||||||
|
switch(settings.preferredEncoding) {
|
||||||
case TagTextEncoding::Latin1:
|
case TagTextEncoding::Latin1:
|
||||||
ui()->latin1RadioButton->setChecked(true);
|
ui()->latin1RadioButton->setChecked(true);
|
||||||
break;
|
break;
|
||||||
|
@ -342,7 +354,7 @@ void TagProcessingGeneralOptionPage::reset()
|
||||||
ui()->autoRadioButton->setChecked(true);
|
ui()->autoRadioButton->setChecked(true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
switch(unsupportedFieldHandling()) {
|
switch(settings.unsupportedFieldHandling) {
|
||||||
case UnsupportedFieldHandling::Ignore:
|
case UnsupportedFieldHandling::Ignore:
|
||||||
ui()->ignoreUnsupportedRadioButton->setChecked(true);
|
ui()->ignoreUnsupportedRadioButton->setChecked(true);
|
||||||
break;
|
break;
|
||||||
|
@ -350,7 +362,7 @@ void TagProcessingGeneralOptionPage::reset()
|
||||||
ui()->discardUnsupportedRadioButton->setChecked(true);
|
ui()->discardUnsupportedRadioButton->setChecked(true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
ui()->autoTagManagementCheckBox->setChecked(autoTagManagement());
|
ui()->autoTagManagementCheckBox->setChecked(settings.autoTagManagement);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -365,12 +377,13 @@ Id3v1OptionPage::~Id3v1OptionPage()
|
||||||
bool Id3v1OptionPage::apply()
|
bool Id3v1OptionPage::apply()
|
||||||
{
|
{
|
||||||
if(hasBeenShown()) {
|
if(hasBeenShown()) {
|
||||||
|
auto &settings = values().tagPocessing.id3;
|
||||||
if(ui()->alwaysCreateRadioButton->isChecked()) {
|
if(ui()->alwaysCreateRadioButton->isChecked()) {
|
||||||
id3v1usage() = TagUsage::Always;
|
settings.v1Usage = TagUsage::Always;
|
||||||
} else if(ui()->keepExistingRadioButton->isChecked()) {
|
} else if(ui()->keepExistingRadioButton->isChecked()) {
|
||||||
id3v1usage() = TagUsage::KeepExisting;
|
settings.v1Usage = TagUsage::KeepExisting;
|
||||||
} else if(ui()->removeExistingRadioButton->isChecked()) {
|
} else if(ui()->removeExistingRadioButton->isChecked()) {
|
||||||
id3v1usage() = TagUsage::Never;
|
settings.v1Usage = TagUsage::Never;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
|
@ -379,7 +392,8 @@ bool Id3v1OptionPage::apply()
|
||||||
void Id3v1OptionPage::reset()
|
void Id3v1OptionPage::reset()
|
||||||
{
|
{
|
||||||
if(hasBeenShown()) {
|
if(hasBeenShown()) {
|
||||||
switch(id3v1usage()) {
|
const auto &settings = values().tagPocessing.id3;
|
||||||
|
switch(settings.v1Usage) {
|
||||||
case TagUsage::Always:
|
case TagUsage::Always:
|
||||||
ui()->alwaysCreateRadioButton->setChecked(true);
|
ui()->alwaysCreateRadioButton->setChecked(true);
|
||||||
break;
|
break;
|
||||||
|
@ -404,22 +418,23 @@ Id3v2OptionPage::~Id3v2OptionPage()
|
||||||
bool Id3v2OptionPage::apply()
|
bool Id3v2OptionPage::apply()
|
||||||
{
|
{
|
||||||
if(hasBeenShown()) {
|
if(hasBeenShown()) {
|
||||||
|
auto &settings = values().tagPocessing.id3;
|
||||||
if(ui()->alwaysCreateRadioButton->isChecked()) {
|
if(ui()->alwaysCreateRadioButton->isChecked()) {
|
||||||
id3v2usage() = TagUsage::Always;
|
settings.v2Usage = TagUsage::Always;
|
||||||
} else if(ui()->keepExistingRadioButton->isChecked()) {
|
} else if(ui()->keepExistingRadioButton->isChecked()) {
|
||||||
id3v2usage() = TagUsage::KeepExisting;
|
settings.v2Usage = TagUsage::KeepExisting;
|
||||||
} else if(ui()->removeExistingRadioButton->isChecked()) {
|
} else if(ui()->removeExistingRadioButton->isChecked()) {
|
||||||
id3v2usage() = TagUsage::Never;
|
settings.v2Usage = TagUsage::Never;
|
||||||
}
|
}
|
||||||
if(ui()->version230radioButton->isChecked()) {
|
if(ui()->version230radioButton->isChecked()) {
|
||||||
id3v2versionToBeUsed() = 3;
|
settings.v2Version = 3;
|
||||||
} else if(ui()->version240radioButton->isChecked()) {
|
} else if(ui()->version240radioButton->isChecked()) {
|
||||||
id3v2versionToBeUsed() = 4;
|
settings.v2Version = 4;
|
||||||
} else if(ui()->version220radioButton->isChecked()) {
|
} else if(ui()->version220radioButton->isChecked()) {
|
||||||
id3v2versionToBeUsed() = 2;
|
settings.v2Version = 2;
|
||||||
}
|
}
|
||||||
keepVersionOfExistingId3v2Tag() = ui()->keepExistingVersionCheckBox->isChecked();
|
settings.keepVersionOfExistingId3v2Tag = ui()->keepExistingVersionCheckBox->isChecked();
|
||||||
mergeMultipleSuccessiveId3v2Tags() = ui()->mergeRadioButton->isChecked();
|
settings.mergeMultipleSuccessiveId3v2Tags = ui()->mergeRadioButton->isChecked();
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -427,7 +442,8 @@ bool Id3v2OptionPage::apply()
|
||||||
void Id3v2OptionPage::reset()
|
void Id3v2OptionPage::reset()
|
||||||
{
|
{
|
||||||
if(hasBeenShown()) {
|
if(hasBeenShown()) {
|
||||||
switch(id3v2usage()) {
|
const auto &settings = values().tagPocessing.id3;
|
||||||
|
switch(settings.v2Usage) {
|
||||||
case TagUsage::Always:
|
case TagUsage::Always:
|
||||||
ui()->alwaysCreateRadioButton->setChecked(true);
|
ui()->alwaysCreateRadioButton->setChecked(true);
|
||||||
break;
|
break;
|
||||||
|
@ -438,7 +454,7 @@ void Id3v2OptionPage::reset()
|
||||||
ui()->removeExistingRadioButton->setChecked(true);
|
ui()->removeExistingRadioButton->setChecked(true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
switch(id3v2versionToBeUsed()) {
|
switch(settings.v2Version) {
|
||||||
case 3:
|
case 3:
|
||||||
ui()->version230radioButton->setChecked(true);
|
ui()->version230radioButton->setChecked(true);
|
||||||
break;
|
break;
|
||||||
|
@ -449,8 +465,8 @@ void Id3v2OptionPage::reset()
|
||||||
ui()->version220radioButton->setChecked(true);
|
ui()->version220radioButton->setChecked(true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
ui()->keepExistingVersionCheckBox->setChecked(keepVersionOfExistingId3v2Tag());
|
ui()->keepExistingVersionCheckBox->setChecked(settings.keepVersionOfExistingId3v2Tag);
|
||||||
if(mergeMultipleSuccessiveId3v2Tags()) {
|
if(settings.mergeMultipleSuccessiveId3v2Tags) {
|
||||||
ui()->mergeRadioButton->setChecked(true);
|
ui()->mergeRadioButton->setChecked(true);
|
||||||
} else {
|
} else {
|
||||||
ui()->keepSeparateRadioButton->setChecked(true);
|
ui()->keepSeparateRadioButton->setChecked(true);
|
||||||
|
@ -470,7 +486,7 @@ TagProcessingTargetsOptionPage::~TagProcessingTargetsOptionPage()
|
||||||
bool TagProcessingTargetsOptionPage::apply()
|
bool TagProcessingTargetsOptionPage::apply()
|
||||||
{
|
{
|
||||||
if(hasBeenShown() && m_model) {
|
if(hasBeenShown() && m_model) {
|
||||||
Settings::defaultTargetsModel().setItems(m_model->items());
|
values().editor.defaultTargets.setItems(m_model->items());
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -478,7 +494,7 @@ bool TagProcessingTargetsOptionPage::apply()
|
||||||
void TagProcessingTargetsOptionPage::reset()
|
void TagProcessingTargetsOptionPage::reset()
|
||||||
{
|
{
|
||||||
if(hasBeenShown() && m_model) {
|
if(hasBeenShown() && m_model) {
|
||||||
m_model->setItems(Settings::defaultTargetsModel().items());
|
m_model->setItems(values().editor.defaultTargets.items());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -507,31 +523,32 @@ bool FileLayoutPage::apply()
|
||||||
bool ok = true;
|
bool ok = true;
|
||||||
|
|
||||||
if(hasBeenShown()) {
|
if(hasBeenShown()) {
|
||||||
Settings::forceRewrite() = ui()->forceRewriteCheckBox->isChecked();
|
auto &settings = values().tagPocessing.fileLayout;
|
||||||
|
settings.forceRewrite = ui()->forceRewriteCheckBox->isChecked();
|
||||||
if(ui()->minPaddingSpinBox->value() > ui()->maxPaddingSpinBox->value()) {
|
if(ui()->minPaddingSpinBox->value() > ui()->maxPaddingSpinBox->value()) {
|
||||||
errors() << QCoreApplication::translate("QtGui::FileLayoutPage", "Minimum padding must be less or equal than maximum padding.");
|
errors() << QCoreApplication::translate("QtGui::FileLayoutPage", "Minimum padding must be less or equal than maximum padding.");
|
||||||
ok = false;
|
ok = false;
|
||||||
} else {
|
} else {
|
||||||
Settings::maxPadding() = static_cast<size_t>(ui()->maxPaddingSpinBox->value());
|
settings.maxPadding = static_cast<size_t>(ui()->maxPaddingSpinBox->value());
|
||||||
Settings::minPadding() = static_cast<size_t>(ui()->minPaddingSpinBox->value());
|
settings.minPadding = static_cast<size_t>(ui()->minPaddingSpinBox->value());
|
||||||
}
|
}
|
||||||
Settings::preferredPadding() = static_cast<size_t>(ui()->preferredPaddingSpinBox->value());
|
settings.preferredPadding = static_cast<size_t>(ui()->preferredPaddingSpinBox->value());
|
||||||
if(ui()->tagPosBeforeDataRadioButton->isChecked()) {
|
if(ui()->tagPosBeforeDataRadioButton->isChecked()) {
|
||||||
preferredTagPosition() = ElementPosition::BeforeData;
|
settings.preferredTagPosition = ElementPosition::BeforeData;
|
||||||
} else if(ui()->tagPosAfterDataRadioButton->isChecked()) {
|
} else if(ui()->tagPosAfterDataRadioButton->isChecked()) {
|
||||||
preferredTagPosition() = ElementPosition::AfterData;
|
settings.preferredTagPosition = ElementPosition::AfterData;
|
||||||
} else if(ui()->tagPosKeepRadioButton->isChecked()) {
|
} else if(ui()->tagPosKeepRadioButton->isChecked()) {
|
||||||
preferredTagPosition() = ElementPosition::Keep;
|
settings.preferredTagPosition = ElementPosition::Keep;
|
||||||
}
|
}
|
||||||
forceTagPosition() = ui()->tagPosForceCheckBox->isChecked();
|
settings.forceTagPosition = ui()->tagPosForceCheckBox->isChecked();
|
||||||
if(ui()->indexPosBeforeDataRadioButton->isChecked()) {
|
if(ui()->indexPosBeforeDataRadioButton->isChecked()) {
|
||||||
preferredIndexPosition() = ElementPosition::BeforeData;
|
settings.preferredIndexPosition = ElementPosition::BeforeData;
|
||||||
} else if(ui()->indexPosAfterDataRadioButton->isChecked()) {
|
} else if(ui()->indexPosAfterDataRadioButton->isChecked()) {
|
||||||
preferredIndexPosition() = ElementPosition::AfterData;
|
settings.preferredIndexPosition = ElementPosition::AfterData;
|
||||||
} else if(ui()->indexPosKeepRadioButton->isChecked()) {
|
} else if(ui()->indexPosKeepRadioButton->isChecked()) {
|
||||||
preferredIndexPosition() = ElementPosition::Keep;
|
settings.preferredIndexPosition = ElementPosition::Keep;
|
||||||
}
|
}
|
||||||
forceIndexPosition() = ui()->indexPosForceCheckBox->isChecked();
|
settings.forceIndexPosition = ui()->indexPosForceCheckBox->isChecked();
|
||||||
}
|
}
|
||||||
return ok;
|
return ok;
|
||||||
}
|
}
|
||||||
|
@ -539,11 +556,12 @@ bool FileLayoutPage::apply()
|
||||||
void FileLayoutPage::reset()
|
void FileLayoutPage::reset()
|
||||||
{
|
{
|
||||||
if(hasBeenShown()) {
|
if(hasBeenShown()) {
|
||||||
ui()->forceRewriteCheckBox->setChecked(Settings::forceRewrite());
|
const auto &settings = values().tagPocessing.fileLayout;
|
||||||
ui()->maxPaddingSpinBox->setValue(static_cast<int>(Settings::maxPadding()));
|
ui()->forceRewriteCheckBox->setChecked(settings.forceRewrite);
|
||||||
ui()->minPaddingSpinBox->setValue(static_cast<int>(Settings::minPadding()));
|
ui()->maxPaddingSpinBox->setValue(static_cast<int>(settings.maxPadding));
|
||||||
ui()->preferredPaddingSpinBox->setValue(static_cast<int>(Settings::preferredPadding()));
|
ui()->minPaddingSpinBox->setValue(static_cast<int>(settings.minPadding));
|
||||||
switch(preferredTagPosition()) {
|
ui()->preferredPaddingSpinBox->setValue(static_cast<int>(settings.preferredPadding));
|
||||||
|
switch(settings.preferredTagPosition) {
|
||||||
case ElementPosition::BeforeData:
|
case ElementPosition::BeforeData:
|
||||||
ui()->tagPosBeforeDataRadioButton->setChecked(true);
|
ui()->tagPosBeforeDataRadioButton->setChecked(true);
|
||||||
break;
|
break;
|
||||||
|
@ -554,8 +572,8 @@ void FileLayoutPage::reset()
|
||||||
ui()->tagPosKeepRadioButton->setChecked(true);
|
ui()->tagPosKeepRadioButton->setChecked(true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
ui()->tagPosForceCheckBox->setChecked(forceTagPosition());
|
ui()->tagPosForceCheckBox->setChecked(settings.forceTagPosition);
|
||||||
switch(preferredIndexPosition()) {
|
switch(settings.preferredIndexPosition) {
|
||||||
case ElementPosition::BeforeData:
|
case ElementPosition::BeforeData:
|
||||||
ui()->indexPosBeforeDataRadioButton->setChecked(true);
|
ui()->indexPosBeforeDataRadioButton->setChecked(true);
|
||||||
break;
|
break;
|
||||||
|
@ -566,7 +584,7 @@ void FileLayoutPage::reset()
|
||||||
ui()->indexPosKeepRadioButton->setChecked(true);
|
ui()->indexPosKeepRadioButton->setChecked(true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
ui()->indexPosForceCheckBox->setChecked(forceIndexPosition());
|
ui()->indexPosForceCheckBox->setChecked(settings.forceIndexPosition);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -616,7 +634,7 @@ SettingsDialog::SettingsDialog(QWidget *parent) :
|
||||||
category->assignPages(QList<Dialogs::OptionPage *>() << new FileBrowserGeneralOptionPage);
|
category->assignPages(QList<Dialogs::OptionPage *>() << new FileBrowserGeneralOptionPage);
|
||||||
categories << category;
|
categories << category;
|
||||||
|
|
||||||
categories << Settings::qtSettings().category();
|
categories << values().qt.category();
|
||||||
|
|
||||||
categoryModel()->setCategories(categories);
|
categoryModel()->setCategories(categories);
|
||||||
|
|
||||||
|
|
|
@ -179,7 +179,7 @@ void TagEdit::restore()
|
||||||
*/
|
*/
|
||||||
void TagEdit::apply()
|
void TagEdit::apply()
|
||||||
{
|
{
|
||||||
switch(Settings::unsupportedFieldHandling()) {
|
switch(Settings::values().tagPocessing.unsupportedFieldHandling) {
|
||||||
case Settings::UnsupportedFieldHandling::Discard:
|
case Settings::UnsupportedFieldHandling::Discard:
|
||||||
// remove all old fields of all tags to discard
|
// remove all old fields of all tags to discard
|
||||||
// all unsupported values
|
// all unsupported values
|
||||||
|
@ -241,7 +241,7 @@ void TagEdit::setupUi()
|
||||||
// setup editing controls
|
// setup editing controls
|
||||||
TagFieldEdit *edit = nullptr;
|
TagFieldEdit *edit = nullptr;
|
||||||
int rowOverall = 0, rowLeft = 0, rowRight = 0;
|
int rowOverall = 0, rowLeft = 0, rowRight = 0;
|
||||||
for(const auto &item : Settings::selectedFieldsModel().items()) {
|
for(const auto &item : Settings::values().editor.fields.items()) {
|
||||||
KnownField field = static_cast<KnownField>(item.id().toInt());
|
KnownField field = static_cast<KnownField>(item.id().toInt());
|
||||||
if(item.isChecked() && hasField(field)) {
|
if(item.isChecked() && hasField(field)) {
|
||||||
// the field is not disabled and the field is supported by at least one of the assigned tags
|
// the field is not disabled and the field is supported by at least one of the assigned tags
|
||||||
|
|
|
@ -116,7 +116,7 @@ TagEditorWidget::TagEditorWidget(QWidget *parent) :
|
||||||
// setup m_tagOptionsMenu, m_addTagMenu, m_removeTagMenu, m_changeTargetMenu
|
// setup m_tagOptionsMenu, m_addTagMenu, m_removeTagMenu, m_changeTargetMenu
|
||||||
m_tagOptionsMenu = new QMenu(this);
|
m_tagOptionsMenu = new QMenu(this);
|
||||||
m_tagOptionsMenu->addAction(m_ui->actionManage_tags_automatically_when_loading_file);
|
m_tagOptionsMenu->addAction(m_ui->actionManage_tags_automatically_when_loading_file);
|
||||||
connect(m_ui->actionManage_tags_automatically_when_loading_file, &QAction::triggered, [] (bool checked) { Settings::autoTagManagement() = checked; });
|
connect(m_ui->actionManage_tags_automatically_when_loading_file, &QAction::triggered, [] (bool checked) { Settings::values().tagPocessing.autoTagManagement = checked; });
|
||||||
m_tagOptionsMenu->addSeparator();
|
m_tagOptionsMenu->addSeparator();
|
||||||
m_addTagMenu = new QMenu(tr("Add tag"), m_tagOptionsMenu);
|
m_addTagMenu = new QMenu(tr("Add tag"), m_tagOptionsMenu);
|
||||||
m_addTagMenu->setEnabled(false);
|
m_addTagMenu->setEnabled(false);
|
||||||
|
@ -284,7 +284,7 @@ void TagEditorWidget::updateTagEditsAndAttachmentEdits(bool updateUi, PreviousVa
|
||||||
// determine to previous value handling according to the settings if auto is specified
|
// determine to previous value handling according to the settings if auto is specified
|
||||||
switch(previousValueHandling) {
|
switch(previousValueHandling) {
|
||||||
case PreviousValueHandling::Auto:
|
case PreviousValueHandling::Auto:
|
||||||
switch(Settings::adoptFields()) {
|
switch(Settings::values().editor.adoptFields) {
|
||||||
case Settings::AdoptFields::WithinDirectory:
|
case Settings::AdoptFields::WithinDirectory:
|
||||||
if(m_lastDir != m_currentDir) {
|
if(m_lastDir != m_currentDir) {
|
||||||
previousValueHandling = PreviousValueHandling::Clear;
|
previousValueHandling = PreviousValueHandling::Clear;
|
||||||
|
@ -333,7 +333,7 @@ void TagEditorWidget::updateTagEditsAndAttachmentEdits(bool updateUi, PreviousVa
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// create a singe editor per target or seperate editors for each tag depending on the settings
|
// create a singe editor per target or seperate editors for each tag depending on the settings
|
||||||
switch(Settings::multipleTagHandling()) {
|
switch(Settings::values().editor.multipleTagHandling) {
|
||||||
case Settings::MultipleTagHandling::SingleEditorPerTarget:
|
case Settings::MultipleTagHandling::SingleEditorPerTarget:
|
||||||
// iterate through all targets in both cases
|
// iterate through all targets in both cases
|
||||||
for(int targetIndex = 0, targetCount = targets.size(); targetIndex < targetCount; ++targetIndex) {
|
for(int targetIndex = 0, targetCount = targets.size(); targetIndex < targetCount; ++targetIndex) {
|
||||||
|
@ -411,7 +411,7 @@ void TagEditorWidget::updateTagSelectionComboBox()
|
||||||
m_ui->tagSelectionComboBox->addItem(label);
|
m_ui->tagSelectionComboBox->addItem(label);
|
||||||
}
|
}
|
||||||
// set visibility
|
// set visibility
|
||||||
m_ui->tagSelectionComboBox->setHidden(Settings::hideTagSelectionComboBox() && m_ui->tagSelectionComboBox->count() <= 1 && !haveTargetInfo);
|
m_ui->tagSelectionComboBox->setHidden(Settings::values().editor.hideTagSelectionComboBox && m_ui->tagSelectionComboBox->count() <= 1 && !haveTargetInfo);
|
||||||
// restore selected index
|
// restore selected index
|
||||||
if(previouslySelectedEditIndex >= 0 && previouslySelectedEditIndex < m_ui->tagSelectionComboBox->count()) {
|
if(previouslySelectedEditIndex >= 0 && previouslySelectedEditIndex < m_ui->tagSelectionComboBox->count()) {
|
||||||
m_ui->tagSelectionComboBox->setCurrentIndex(previouslySelectedEditIndex);
|
m_ui->tagSelectionComboBox->setCurrentIndex(previouslySelectedEditIndex);
|
||||||
|
@ -564,7 +564,7 @@ void TagEditorWidget::updateTagManagementMenu()
|
||||||
*/
|
*/
|
||||||
void TagEditorWidget::insertTitleFromFilename()
|
void TagEditorWidget::insertTitleFromFilename()
|
||||||
{
|
{
|
||||||
if(!m_tags.empty() && Settings::insertTitleFromFilename()) {
|
if(!m_tags.empty() && Settings::values().editor.autoCompletition.insertTitleFromFilename) {
|
||||||
QString title;
|
QString title;
|
||||||
int trackNum;
|
int trackNum;
|
||||||
parseFileName(QString::fromLocal8Bit(m_fileInfo.fileName().c_str()), title, trackNum);
|
parseFileName(QString::fromLocal8Bit(m_fileInfo.fileName().c_str()), title, trackNum);
|
||||||
|
@ -583,7 +583,7 @@ void TagEditorWidget::insertTitleFromFilename()
|
||||||
void TagEditorWidget::initInfoView()
|
void TagEditorWidget::initInfoView()
|
||||||
{
|
{
|
||||||
#ifndef TAGEDITOR_NO_WEBVIEW
|
#ifndef TAGEDITOR_NO_WEBVIEW
|
||||||
if(!Settings::noWebView() && !m_infoWebView) {
|
if(!Settings::values().editor.noWebView && !m_infoWebView) {
|
||||||
if(m_infoTreeView) {
|
if(m_infoTreeView) {
|
||||||
m_infoTreeView->deleteLater();
|
m_infoTreeView->deleteLater();
|
||||||
m_infoTreeView = nullptr;
|
m_infoTreeView = nullptr;
|
||||||
|
@ -597,7 +597,7 @@ void TagEditorWidget::initInfoView()
|
||||||
m_infoWebView->setContextMenuPolicy(Qt::CustomContextMenu);
|
m_infoWebView->setContextMenuPolicy(Qt::CustomContextMenu);
|
||||||
connect(m_infoWebView, &QWidget::customContextMenuRequested, this, &TagEditorWidget::showInfoWebViewContextMenu);
|
connect(m_infoWebView, &QWidget::customContextMenuRequested, this, &TagEditorWidget::showInfoWebViewContextMenu);
|
||||||
m_ui->tagSplitter->addWidget(m_infoWebView);
|
m_ui->tagSplitter->addWidget(m_infoWebView);
|
||||||
} else if(Settings::noWebView() && !m_infoTreeView) {
|
} else if(Settings::values().editor.noWebView && !m_infoTreeView) {
|
||||||
if(m_infoWebView) {
|
if(m_infoWebView) {
|
||||||
m_infoWebView->deleteLater();
|
m_infoWebView->deleteLater();
|
||||||
m_infoWebView = nullptr;
|
m_infoWebView = nullptr;
|
||||||
|
@ -761,7 +761,7 @@ bool TagEditorWidget::startParsing(const QString &path, bool forceRefresh)
|
||||||
// try to open read-only if opening with write access failed
|
// try to open read-only if opening with write access failed
|
||||||
m_fileInfo.reopen(true);
|
m_fileInfo.reopen(true);
|
||||||
}
|
}
|
||||||
m_fileInfo.setForceFullParse(Settings::forceFullParse());
|
m_fileInfo.setForceFullParse(Settings::values().editor.forceFullParse);
|
||||||
m_fileInfo.parseEverything();
|
m_fileInfo.parseEverything();
|
||||||
result = ParsingSuccessful;
|
result = ParsingSuccessful;
|
||||||
} catch(const Failure &) {
|
} catch(const Failure &) {
|
||||||
|
@ -845,21 +845,22 @@ void TagEditorWidget::showFile(char result)
|
||||||
}
|
}
|
||||||
|
|
||||||
// create appropriate tags according to file type and user preferences when automatic tag management is enabled
|
// create appropriate tags according to file type and user preferences when automatic tag management is enabled
|
||||||
if(Settings::autoTagManagement()) {
|
const auto &settings = Settings::values().tagPocessing;
|
||||||
|
if(settings.autoTagManagement) {
|
||||||
vector<TagTarget> requiredTargets;
|
vector<TagTarget> requiredTargets;
|
||||||
requiredTargets.reserve(2);
|
requiredTargets.reserve(2);
|
||||||
for(const ChecklistItem &targetItem : Settings::defaultTargetsModel().items()) {
|
for(const ChecklistItem &targetItem : Settings::values().editor.defaultTargets.items()) {
|
||||||
if(targetItem.isChecked()) {
|
if(targetItem.isChecked()) {
|
||||||
requiredTargets.emplace_back(containerTargetLevelValue(m_fileInfo.containerFormat(), static_cast<TagTargetLevel>(targetItem.id().toInt())));
|
requiredTargets.emplace_back(containerTargetLevelValue(m_fileInfo.containerFormat(), static_cast<TagTargetLevel>(targetItem.id().toInt())));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// TODO: allow initialization of new ID3 tag with values from already present ID3 tag
|
// TODO: allow initialization of new ID3 tag with values from already present ID3 tag
|
||||||
// TODO: allow not to transfer values from removed ID3 tag to remaining ID3 tags
|
// TODO: allow not to transfer values from removed ID3 tag to remaining ID3 tags
|
||||||
if(!m_fileInfo.createAppropriateTags(false, Settings::id3v1usage(), Settings::id3v2usage(), false, true, Settings::mergeMultipleSuccessiveId3v2Tags(),
|
if(!m_fileInfo.createAppropriateTags(false, settings.id3.v1Usage, settings.id3.v2Usage, false, true, settings.id3.mergeMultipleSuccessiveId3v2Tags,
|
||||||
Settings::keepVersionOfExistingId3v2Tag(), Settings::id3v2versionToBeUsed(), requiredTargets)) {
|
settings.id3.keepVersionOfExistingId3v2Tag, settings.id3.v2Version, requiredTargets)) {
|
||||||
if(confirmCreationOfId3TagForUnsupportedFile()) {
|
if(confirmCreationOfId3TagForUnsupportedFile()) {
|
||||||
m_fileInfo.createAppropriateTags(true, Settings::id3v1usage(), Settings::id3v2usage(), false, true, Settings::mergeMultipleSuccessiveId3v2Tags(),
|
m_fileInfo.createAppropriateTags(true, settings.id3.v1Usage, settings.id3.v2Usage, false, true, settings.id3.mergeMultipleSuccessiveId3v2Tags,
|
||||||
Settings::keepVersionOfExistingId3v2Tag(), Settings::id3v2versionToBeUsed(), requiredTargets);
|
settings.id3.keepVersionOfExistingId3v2Tag, settings.id3.v2Version, requiredTargets);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// tags might have been adjusted -> reload tags
|
// tags might have been adjusted -> reload tags
|
||||||
|
@ -981,7 +982,7 @@ bool TagEditorWidget::deleteAllTagsAndSave()
|
||||||
{
|
{
|
||||||
TryLocker<> locker(m_fileOperationMutex);
|
TryLocker<> locker(m_fileOperationMutex);
|
||||||
if(locker) {
|
if(locker) {
|
||||||
if(Settings::askBeforeDeleting()) {
|
if(Settings::values().editor.askBeforeDeleting) {
|
||||||
QMessageBox msgBox(this);
|
QMessageBox msgBox(this);
|
||||||
msgBox.setText(tr("Do you really want to delete all tags from the file?"));
|
msgBox.setText(tr("Do you really want to delete all tags from the file?"));
|
||||||
msgBox.setIcon(QMessageBox::Warning);
|
msgBox.setIcon(QMessageBox::Warning);
|
||||||
|
@ -995,7 +996,7 @@ bool TagEditorWidget::deleteAllTagsAndSave()
|
||||||
int res = msgBox.exec();
|
int res = msgBox.exec();
|
||||||
#if QT_VERSION >= 0x050200
|
#if QT_VERSION >= 0x050200
|
||||||
if(checkBox->isChecked()) {
|
if(checkBox->isChecked()) {
|
||||||
Settings::askBeforeDeleting() = false;
|
Settings::values().editor.askBeforeDeleting = false;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if(res != QMessageBox::Yes) {
|
if(res != QMessageBox::Yes) {
|
||||||
|
@ -1056,14 +1057,15 @@ bool TagEditorWidget::startSaving()
|
||||||
// remove current path from file watcher
|
// remove current path from file watcher
|
||||||
m_fileWatcher->removePath(m_currentPath);
|
m_fileWatcher->removePath(m_currentPath);
|
||||||
// use current configuration
|
// use current configuration
|
||||||
m_fileInfo.setForceRewrite(Settings::forceRewrite());
|
const auto &settings = Settings::values().tagPocessing.fileLayout;
|
||||||
m_fileInfo.setTagPosition(Settings::preferredTagPosition());
|
m_fileInfo.setForceRewrite(settings.forceRewrite);
|
||||||
m_fileInfo.setForceTagPosition(Settings::forceTagPosition());
|
m_fileInfo.setTagPosition(settings.preferredTagPosition);
|
||||||
m_fileInfo.setIndexPosition(Settings::preferredIndexPosition());
|
m_fileInfo.setForceTagPosition(settings.forceTagPosition);
|
||||||
m_fileInfo.setForceIndexPosition(Settings::forceIndexPosition());
|
m_fileInfo.setIndexPosition(settings.preferredIndexPosition);
|
||||||
m_fileInfo.setMinPadding(Settings::minPadding());
|
m_fileInfo.setForceIndexPosition(settings.forceIndexPosition);
|
||||||
m_fileInfo.setMaxPadding(Settings::maxPadding());
|
m_fileInfo.setMinPadding(settings.minPadding);
|
||||||
m_fileInfo.setPreferredPadding(Settings::preferredPadding());
|
m_fileInfo.setMaxPadding(settings.maxPadding);
|
||||||
|
m_fileInfo.setPreferredPadding(settings.preferredPadding);
|
||||||
// define functions to show the saving progress and to actually applying the changes
|
// define functions to show the saving progress and to actually applying the changes
|
||||||
auto showProgress = [this] (StatusProvider &sender) -> void {
|
auto showProgress = [this] (StatusProvider &sender) -> void {
|
||||||
QMetaObject::invokeMethod(m_ui->makingNotificationWidget, "setPercentage", Qt::QueuedConnection, Q_ARG(int, static_cast<int>(sender.currentPercentage() * 100.0)));
|
QMetaObject::invokeMethod(m_ui->makingNotificationWidget, "setPercentage", Qt::QueuedConnection, Q_ARG(int, static_cast<int>(sender.currentPercentage() * 100.0)));
|
||||||
|
@ -1233,19 +1235,20 @@ void TagEditorWidget::closeFile()
|
||||||
*/
|
*/
|
||||||
void TagEditorWidget::handleReturnPressed()
|
void TagEditorWidget::handleReturnPressed()
|
||||||
{
|
{
|
||||||
if(Settings::saveAndShowNextOnEnter() && m_fileInfo.isOpen()) {
|
if(Settings::values().editor.saveAndShowNextOnEnter && m_fileInfo.isOpen()) {
|
||||||
saveAndShowNextFile();
|
saveAndShowNextFile();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TagEditorWidget::handleKeepPreviousValuesActionTriggered(QAction *action)
|
void TagEditorWidget::handleKeepPreviousValuesActionTriggered(QAction *action)
|
||||||
{
|
{
|
||||||
|
auto &settings = Settings::values().editor;
|
||||||
if(action == m_ui->actionKeep_previous_values_never) {
|
if(action == m_ui->actionKeep_previous_values_never) {
|
||||||
Settings::adoptFields() = Settings::AdoptFields::Never;
|
settings.adoptFields = Settings::AdoptFields::Never;
|
||||||
} else if(action == m_ui->actionKeep_previous_values_within_same_dir) {
|
} else if(action == m_ui->actionKeep_previous_values_within_same_dir) {
|
||||||
Settings::adoptFields() = Settings::AdoptFields::WithinDirectory;
|
settings.adoptFields = Settings::AdoptFields::WithinDirectory;
|
||||||
} else if(action == m_ui->actionKeep_previous_values_always) {
|
} else if(action == m_ui->actionKeep_previous_values_always) {
|
||||||
Settings::adoptFields() = Settings::AdoptFields::Always;
|
settings.adoptFields = Settings::AdoptFields::Always;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1255,7 +1258,8 @@ void TagEditorWidget::handleKeepPreviousValuesActionTriggered(QAction *action)
|
||||||
*/
|
*/
|
||||||
void TagEditorWidget::applySettingsFromDialog()
|
void TagEditorWidget::applySettingsFromDialog()
|
||||||
{
|
{
|
||||||
switch(Settings::adoptFields()) {
|
const auto &settings = Settings::values();
|
||||||
|
switch(settings.editor.adoptFields) {
|
||||||
case Settings::AdoptFields::Never:
|
case Settings::AdoptFields::Never:
|
||||||
m_ui->actionKeep_previous_values_never->setChecked(true);
|
m_ui->actionKeep_previous_values_never->setChecked(true);
|
||||||
break;
|
break;
|
||||||
|
@ -1266,8 +1270,8 @@ void TagEditorWidget::applySettingsFromDialog()
|
||||||
m_ui->actionKeep_previous_values_always->setChecked(true);
|
m_ui->actionKeep_previous_values_always->setChecked(true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
m_ui->actionManage_tags_automatically_when_loading_file->setChecked(Settings::autoTagManagement());
|
m_ui->actionManage_tags_automatically_when_loading_file->setChecked(settings.tagPocessing.autoTagManagement);
|
||||||
foreachTagEdit(bind(&TagEdit::setCoverButtonsHidden, _1, Settings::hideCoverButtons()));
|
foreachTagEdit(bind(&TagEdit::setCoverButtonsHidden, _1, settings.editor.hideCoverButtons));
|
||||||
// ensure info view is displayed/not displayed according to settings
|
// ensure info view is displayed/not displayed according to settings
|
||||||
initInfoView();
|
initInfoView();
|
||||||
updateInfoView();
|
updateInfoView();
|
||||||
|
|
|
@ -193,12 +193,12 @@ bool TagFieldEdit::canApply(KnownField field) const
|
||||||
for(Tag *tag : tags()) {
|
for(Tag *tag : tags()) {
|
||||||
switch(tag->type()) {
|
switch(tag->type()) {
|
||||||
case TagType::Id3v1Tag:
|
case TagType::Id3v1Tag:
|
||||||
if(Settings::id3v1usage() == TagUsage::Never) {
|
if(Settings::values().tagPocessing.id3.v1Usage == TagUsage::Never) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case TagType::Id3v2Tag:
|
case TagType::Id3v2Tag:
|
||||||
if(Settings::id3v2usage() == TagUsage::Never) {
|
if(Settings::values().tagPocessing.id3.v2Usage == TagUsage::Never) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -851,20 +851,21 @@ void TagFieldEdit::showRestoreButton()
|
||||||
*/
|
*/
|
||||||
void TagFieldEdit::applyAutoCorrection(QString &textValue)
|
void TagFieldEdit::applyAutoCorrection(QString &textValue)
|
||||||
{
|
{
|
||||||
auto &fields = Settings::autoCorrectionFields().items();
|
const auto &settings = Settings::values().editor.autoCompletition;
|
||||||
|
auto &fields = settings.fields.items();
|
||||||
auto i = find_if(fields.constBegin(), fields.constEnd(), [this] (const ChecklistItem &item) {
|
auto i = find_if(fields.constBegin(), fields.constEnd(), [this] (const ChecklistItem &item) {
|
||||||
bool ok;
|
bool ok;
|
||||||
return (item.id().toInt(&ok) == static_cast<int>(this->field())) && ok;
|
return (item.id().toInt(&ok) == static_cast<int>(this->field())) && ok;
|
||||||
});
|
});
|
||||||
// if current field is in the list of auto correction fields and auto correction should be applied
|
// if current field is in the list of auto correction fields and auto correction should be applied
|
||||||
if(i != fields.constEnd() && i->isChecked()) {
|
if(i != fields.constEnd() && i->isChecked()) {
|
||||||
if(Settings::trimWhitespaces()) {
|
if(settings.trimWhitespaces) {
|
||||||
textValue = textValue.trimmed();
|
textValue = textValue.trimmed();
|
||||||
}
|
}
|
||||||
if(Settings::fixUmlauts()) {
|
if(settings.fixUmlauts) {
|
||||||
textValue = Utility::fixUmlauts(textValue);
|
textValue = Utility::fixUmlauts(textValue);
|
||||||
}
|
}
|
||||||
if(Settings::formatNames()) {
|
if(settings.formatNames) {
|
||||||
textValue = Utility::formatName(textValue);
|
textValue = Utility::formatName(textValue);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -943,7 +944,7 @@ void TagFieldEdit::apply()
|
||||||
m_pictureSelection->apply();
|
m_pictureSelection->apply();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
TagTextEncoding encoding = Settings::preferredEncoding();
|
TagTextEncoding encoding = Settings::values().tagPocessing.preferredEncoding;
|
||||||
if(!tag->canEncodingBeUsed(encoding)) {
|
if(!tag->canEncodingBeUsed(encoding)) {
|
||||||
encoding = tag->proposedTextEncoding();
|
encoding = tag->proposedTextEncoding();
|
||||||
}
|
}
|
||||||
|
|
|
@ -648,123 +648,123 @@
|
||||||
<context>
|
<context>
|
||||||
<name>QtGui::DbQueryWidget</name>
|
<name>QtGui::DbQueryWidget</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.ui" line="14"/>
|
<location filename="../gui/dbquerywidget.ui" line="6"/>
|
||||||
<source>MusicBrainz/LyricsWikia search</source>
|
<source>MusicBrainz/LyricsWikia search</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.ui" line="59"/>
|
<location filename="../gui/dbquerywidget.ui" line="51"/>
|
||||||
<source>Search &criteria</source>
|
<source>Search &criteria</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.ui" line="83"/>
|
<location filename="../gui/dbquerywidget.ui" line="75"/>
|
||||||
<source>Song</source>
|
<source>Song</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.ui" line="101"/>
|
<location filename="../gui/dbquerywidget.ui" line="93"/>
|
||||||
<location filename="../gui/dbquerywidget.ui" line="108"/>
|
<location filename="../gui/dbquerywidget.ui" line="100"/>
|
||||||
<location filename="../gui/dbquerywidget.ui" line="124"/>
|
<location filename="../gui/dbquerywidget.ui" line="116"/>
|
||||||
<location filename="../gui/dbquerywidget.ui" line="138"/>
|
<location filename="../gui/dbquerywidget.ui" line="130"/>
|
||||||
<source>?</source>
|
<source>?</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.ui" line="117"/>
|
<location filename="../gui/dbquerywidget.ui" line="109"/>
|
||||||
<source>Album</source>
|
<source>Album</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.ui" line="131"/>
|
<location filename="../gui/dbquerywidget.ui" line="123"/>
|
||||||
<source>Artist</source>
|
<source>Artist</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.ui" line="175"/>
|
<location filename="../gui/dbquerywidget.ui" line="167"/>
|
||||||
<source>Fields to be used</source>
|
<source>Fields to be used</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.ui" line="221"/>
|
<location filename="../gui/dbquerywidget.ui" line="213"/>
|
||||||
<source>override existing values</source>
|
<source>Override existing values</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.ui" line="279"/>
|
<location filename="../gui/dbquerywidget.ui" line="271"/>
|
||||||
<source>Abort</source>
|
<source>Abort</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.ui" line="292"/>
|
<location filename="../gui/dbquerywidget.ui" line="284"/>
|
||||||
<source>Search
|
<source>Search
|
||||||
MusicBrainz</source>
|
MusicBrainz</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.ui" line="310"/>
|
<location filename="../gui/dbquerywidget.ui" line="302"/>
|
||||||
<source>Search
|
<source>Search
|
||||||
LyricWikia</source>
|
LyricWikia</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.ui" line="331"/>
|
<location filename="../gui/dbquerywidget.ui" line="323"/>
|
||||||
<source>Inserts the selected result into the current tag (doesn't save anything)</source>
|
<source>Inserts the selected result into the current tag (doesn't save anything)</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.ui" line="334"/>
|
<location filename="../gui/dbquerywidget.ui" line="326"/>
|
||||||
<source>Use selected
|
<source>Use selected
|
||||||
row</source>
|
row</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.cpp" line="50"/>
|
<location filename="../gui/dbquerywidget.cpp" line="54"/>
|
||||||
<source>Search hasn't been started</source>
|
<source>Search hasn't been started</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.cpp" line="68"/>
|
<location filename="../gui/dbquerywidget.cpp" line="72"/>
|
||||||
<source>Insert present data</source>
|
<source>Insert present data</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.cpp" line="72"/>
|
<location filename="../gui/dbquerywidget.cpp" line="76"/>
|
||||||
<source>Clear search criteria</source>
|
<source>Clear search criteria</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.cpp" line="137"/>
|
<location filename="../gui/dbquerywidget.cpp" line="141"/>
|
||||||
<source>Insufficient search criteria supplied - at least title, album or artist must be specified</source>
|
<source>Insufficient search criteria supplied - at least title, album or artist must be specified</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.cpp" line="147"/>
|
<location filename="../gui/dbquerywidget.cpp" line="151"/>
|
||||||
<source>Retrieving meta data from MusicBrainz ...</source>
|
<source>Retrieving meta data from MusicBrainz ...</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.cpp" line="161"/>
|
<location filename="../gui/dbquerywidget.cpp" line="165"/>
|
||||||
<source>Insufficient search criteria supplied - artist is mandatory</source>
|
<source>Insufficient search criteria supplied - artist is mandatory</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.cpp" line="171"/>
|
<location filename="../gui/dbquerywidget.cpp" line="175"/>
|
||||||
<source>Retrieving meta data from LyricsWikia ...</source>
|
<source>Retrieving meta data from LyricsWikia ...</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.cpp" line="194"/>
|
<location filename="../gui/dbquerywidget.cpp" line="198"/>
|
||||||
<source>Aborted</source>
|
<source>Aborted</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.cpp" line="206"/>
|
<location filename="../gui/dbquerywidget.cpp" line="210"/>
|
||||||
<source>No results available</source>
|
<source>No results available</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message numerus="yes">
|
<message numerus="yes">
|
||||||
<location filename="../gui/dbquerywidget.cpp" line="208"/>
|
<location filename="../gui/dbquerywidget.cpp" line="212"/>
|
||||||
<source>%1 result(s) available</source>
|
<source>%1 result(s) available</source>
|
||||||
<translation type="unfinished">
|
<translation type="unfinished">
|
||||||
<numerusform></numerusform>
|
<numerusform></numerusform>
|
||||||
|
@ -772,47 +772,47 @@ row</source>
|
||||||
</translation>
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.cpp" line="273"/>
|
<location filename="../gui/dbquerywidget.cpp" line="356"/>
|
||||||
<source>Retrieving cover art to be applied ...</source>
|
<source>Retrieving cover art to be applied ...</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.cpp" line="294"/>
|
<location filename="../gui/dbquerywidget.cpp" line="377"/>
|
||||||
<source>Retrieving lyrics to be applied ...</source>
|
<source>Retrieving lyrics to be applied ...</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.cpp" line="334"/>
|
<location filename="../gui/dbquerywidget.cpp" line="414"/>
|
||||||
<source>Use selected row</source>
|
<source>Use selected row</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.cpp" line="337"/>
|
<location filename="../gui/dbquerywidget.cpp" line="417"/>
|
||||||
<source>Show cover</source>
|
<source>Show cover</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.cpp" line="338"/>
|
<location filename="../gui/dbquerywidget.cpp" line="418"/>
|
||||||
<source>Show lyrics</source>
|
<source>Show lyrics</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.cpp" line="367"/>
|
<location filename="../gui/dbquerywidget.cpp" line="447"/>
|
||||||
<source>Retrieving cover art ...</source>
|
<source>Retrieving cover art ...</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.cpp" line="398"/>
|
<location filename="../gui/dbquerywidget.cpp" line="478"/>
|
||||||
<source>Retrieving lyrics ...</source>
|
<source>Retrieving lyrics ...</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.cpp" line="411"/>
|
<location filename="../gui/dbquerywidget.cpp" line="491"/>
|
||||||
<source>Cover - %1</source>
|
<source>Cover - %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.cpp" line="436"/>
|
<location filename="../gui/dbquerywidget.cpp" line="516"/>
|
||||||
<source>Lyrics - %1</source>
|
<source>Lyrics - %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -996,7 +996,7 @@ Remarks
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/settingsdialog.cpp" line="150"/>
|
<location filename="../gui/settingsdialog.cpp" line="154"/>
|
||||||
<source>To avoid unnecessary copying this directory should be on the same partition as the files you want to edit.</source>
|
<source>To avoid unnecessary copying this directory should be on the same partition as the files you want to edit.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -1593,12 +1593,12 @@ another position would prevent rewriting the entire file</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/settingsdialog.cpp" line="512"/>
|
<location filename="../gui/settingsdialog.cpp" line="529"/>
|
||||||
<source>Minimum padding must be less or equal than maximum padding.</source>
|
<source>Minimum padding must be less or equal than maximum padding.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/settingsdialog.cpp" line="577"/>
|
<location filename="../gui/settingsdialog.cpp" line="595"/>
|
||||||
<source>These options might be ignored if not supported by either the format or the implementation.</source>
|
<source>These options might be ignored if not supported by either the format or the implementation.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -1759,32 +1759,32 @@ another position would prevent rewriting the entire file</source>
|
||||||
<context>
|
<context>
|
||||||
<name>QtGui::LyricsWikiaResultsModel</name>
|
<name>QtGui::LyricsWikiaResultsModel</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dbquery/lyricswikia.cpp" line="37"/>
|
<location filename="../dbquery/lyricswikia.cpp" line="43"/>
|
||||||
<source>Unable to fetch lyrics: Artist or title is unknown.</source>
|
<source>Unable to fetch lyrics: Artist or title is unknown.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dbquery/lyricswikia.cpp" line="151"/>
|
<location filename="../dbquery/lyricswikia.cpp" line="157"/>
|
||||||
<source>Internal error: context for song details reply invalid</source>
|
<source>Internal error: context for song details reply invalid</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dbquery/lyricswikia.cpp" line="191"/>
|
<location filename="../dbquery/lyricswikia.cpp" line="197"/>
|
||||||
<source>Unable to parse song details: </source>
|
<source>Unable to parse song details: </source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dbquery/lyricswikia.cpp" line="200"/>
|
<location filename="../dbquery/lyricswikia.cpp" line="206"/>
|
||||||
<source>Song details requested for %1/%2 do not contain URL for Wiki page</source>
|
<source>Song details requested for %1/%2 do not contain URL for Wiki page</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dbquery/lyricswikia.cpp" line="228"/>
|
<location filename="../dbquery/lyricswikia.cpp" line="234"/>
|
||||||
<source>Internal error: context for LyricsWikia page reply invalid</source>
|
<source>Internal error: context for LyricsWikia page reply invalid</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dbquery/lyricswikia.cpp" line="238"/>
|
<location filename="../dbquery/lyricswikia.cpp" line="244"/>
|
||||||
<source>Song details requested for %1/%2 do not contain lyrics</source>
|
<source>Song details requested for %1/%2 do not contain lyrics</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -1912,7 +1912,7 @@ another position would prevent rewriting the entire file</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/mainwindow.cpp" line="199"/>
|
<location filename="../gui/mainwindow.cpp" line="200"/>
|
||||||
<source>Lock layout</source>
|
<source>Lock layout</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -1988,63 +1988,63 @@ another position would prevent rewriting the entire file</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/mainwindow.cpp" line="332"/>
|
<location filename="../gui/mainwindow.cpp" line="334"/>
|
||||||
<source>No file opened.</source>
|
<source>No file opened.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/mainwindow.cpp" line="353"/>
|
<location filename="../gui/mainwindow.cpp" line="355"/>
|
||||||
<source>A tag editing utility supporting ID3, MP4 (iTunes style), Vorbis and Matroska tags.</source>
|
<source>A tag editing utility supporting ID3, MP4 (iTunes style), Vorbis and Matroska tags.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/mainwindow.cpp" line="470"/>
|
<location filename="../gui/mainwindow.cpp" line="472"/>
|
||||||
<source>Unable to show the next file because it can't be found anymore.</source>
|
<source>Unable to show the next file because it can't be found anymore.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/mainwindow.cpp" line="480"/>
|
<location filename="../gui/mainwindow.cpp" line="482"/>
|
||||||
<source>Open file - </source>
|
<source>Open file - </source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/mainwindow.cpp" line="491"/>
|
<location filename="../gui/mainwindow.cpp" line="493"/>
|
||||||
<source>Save changes as - </source>
|
<source>Save changes as - </source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/mainwindow.cpp" line="513"/>
|
<location filename="../gui/mainwindow.cpp" line="515"/>
|
||||||
<source>Save file information - </source>
|
<source>Save file information - </source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/mainwindow.cpp" line="532"/>
|
<location filename="../gui/mainwindow.cpp" line="534"/>
|
||||||
<source>No file is opened.</source>
|
<source>No file is opened.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/mainwindow.cpp" line="535"/>
|
<location filename="../gui/mainwindow.cpp" line="537"/>
|
||||||
<source>Unable to save file information because the current process hasn't been finished yet.</source>
|
<source>Unable to save file information because the current process hasn't been finished yet.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/mainwindow.cpp" line="522"/>
|
<location filename="../gui/mainwindow.cpp" line="524"/>
|
||||||
<source>Unable to write to file.
|
<source>Unable to write to file.
|
||||||
%1</source>
|
%1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/mainwindow.cpp" line="194"/>
|
<location filename="../gui/mainwindow.cpp" line="195"/>
|
||||||
<source>Unlock layout</source>
|
<source>Unlock layout</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/mainwindow.cpp" line="525"/>
|
<location filename="../gui/mainwindow.cpp" line="527"/>
|
||||||
<source>Unable to open file.</source>
|
<source>Unable to open file.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/mainwindow.cpp" line="529"/>
|
<location filename="../gui/mainwindow.cpp" line="531"/>
|
||||||
<source>No file information available.</source>
|
<source>No file information available.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -2139,7 +2139,7 @@ another position would prevent rewriting the entire file</source>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/picturepreviewselection.ui" line="150"/>
|
<location filename="../gui/picturepreviewselection.ui" line="150"/>
|
||||||
<location filename="../gui/picturepreviewselection.cpp" line="592"/>
|
<location filename="../gui/picturepreviewselection.cpp" line="593"/>
|
||||||
<source>Add</source>
|
<source>Add</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -2338,7 +2338,7 @@ another position would prevent rewriting the entire file</source>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/picturepreviewselection.cpp" line="402"/>
|
<location filename="../gui/picturepreviewselection.cpp" line="402"/>
|
||||||
<location filename="../gui/picturepreviewselection.cpp" line="600"/>
|
<location filename="../gui/picturepreviewselection.cpp" line="601"/>
|
||||||
<source>The attached image can't be found.</source>
|
<source>The attached image can't be found.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -2358,22 +2358,22 @@ another position would prevent rewriting the entire file</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/picturepreviewselection.cpp" line="590"/>
|
<location filename="../gui/picturepreviewselection.cpp" line="591"/>
|
||||||
<source>No image (of the selected type) attached.</source>
|
<source>No image (of the selected type) attached.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/picturepreviewselection.cpp" line="610"/>
|
<location filename="../gui/picturepreviewselection.cpp" line="611"/>
|
||||||
<source>Unable to display attached image.</source>
|
<source>Unable to display attached image.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/picturepreviewselection.cpp" line="619"/>
|
<location filename="../gui/picturepreviewselection.cpp" line="620"/>
|
||||||
<source>Change</source>
|
<source>Change</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/picturepreviewselection.cpp" line="631"/>
|
<location filename="../gui/picturepreviewselection.cpp" line="632"/>
|
||||||
<source>Change MIME-type</source>
|
<source>Change MIME-type</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -2470,8 +2470,8 @@ another position would prevent rewriting the entire file</source>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/renamefilesdialog.ui" line="697"/>
|
<location filename="../gui/renamefilesdialog.ui" line="697"/>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="219"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="221"/>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="244"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="246"/>
|
||||||
<source>Close</source>
|
<source>Close</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -2491,8 +2491,8 @@ another position would prevent rewriting the entire file</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="163"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="165"/>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="198"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="200"/>
|
||||||
<source>Abort</source>
|
<source>Abort</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -2538,28 +2538,28 @@ another position would prevent rewriting the entire file</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="161"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="163"/>
|
||||||
<source>Generating preview ...</source>
|
<source>Generating preview ...</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="170"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="172"/>
|
||||||
<source>The script is not valid.
|
<source>The script is not valid.
|
||||||
Error in line %1: %3</source>
|
Error in line %1: %3</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="186"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="188"/>
|
||||||
<source>The selected directory doesn't exist.</source>
|
<source>The selected directory doesn't exist.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="196"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="198"/>
|
||||||
<source>Applying changings ...</source>
|
<source>Applying changings ...</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message numerus="yes">
|
<message numerus="yes">
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="209"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="211"/>
|
||||||
<source>%1 files/directories processed</source>
|
<source>%1 files/directories processed</source>
|
||||||
<translation type="unfinished">
|
<translation type="unfinished">
|
||||||
<numerusform></numerusform>
|
<numerusform></numerusform>
|
||||||
|
@ -2567,13 +2567,13 @@ Error in line %1: %3</source>
|
||||||
</translation>
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="223"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="225"/>
|
||||||
<source>Preview has been generated.</source>
|
<source>Preview has been generated.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message numerus="yes">
|
<message numerus="yes">
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="237"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="239"/>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="255"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="257"/>
|
||||||
<source>%1 error(s) occured.</source>
|
<source>%1 error(s) occured.</source>
|
||||||
<translation type="unfinished">
|
<translation type="unfinished">
|
||||||
<numerusform></numerusform>
|
<numerusform></numerusform>
|
||||||
|
@ -2581,8 +2581,8 @@ Error in line %1: %3</source>
|
||||||
</translation>
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message numerus="yes">
|
<message numerus="yes">
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="224"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="226"/>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="248"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="250"/>
|
||||||
<source>%1 files/directories have been processed.</source>
|
<source>%1 files/directories have been processed.</source>
|
||||||
<translation type="unfinished">
|
<translation type="unfinished">
|
||||||
<numerusform></numerusform>
|
<numerusform></numerusform>
|
||||||
|
@ -2590,12 +2590,12 @@ Error in line %1: %3</source>
|
||||||
</translation>
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="228"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="230"/>
|
||||||
<source>No files and directories have been found.</source>
|
<source>No files and directories have been found.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message numerus="yes">
|
<message numerus="yes">
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="212"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="214"/>
|
||||||
<source>%1 error(s) occured</source>
|
<source>%1 error(s) occured</source>
|
||||||
<translation type="unfinished">
|
<translation type="unfinished">
|
||||||
<numerusform></numerusform>
|
<numerusform></numerusform>
|
||||||
|
@ -2603,62 +2603,62 @@ Error in line %1: %3</source>
|
||||||
</translation>
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="148"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="150"/>
|
||||||
<source>There is no external script file is selected.</source>
|
<source>There is no external script file is selected.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="155"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="157"/>
|
||||||
<source>Unable to open external script file.</source>
|
<source>Unable to open external script file.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="173"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="175"/>
|
||||||
<source>An error occured when parsing the script: %1</source>
|
<source>An error occured when parsing the script: %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="181"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="183"/>
|
||||||
<source>The script is empty.</source>
|
<source>The script is empty.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="233"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="235"/>
|
||||||
<source>Generation of preview has been aborted prematurely.</source>
|
<source>Generation of preview has been aborted prematurely.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="247"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="249"/>
|
||||||
<source>Changins applied.</source>
|
<source>Changins applied.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="251"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="253"/>
|
||||||
<source>Applying has been aborted prematurely.</source>
|
<source>Applying has been aborted prematurely.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="319"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="321"/>
|
||||||
<source>Unable to open script file.</source>
|
<source>Unable to open script file.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="325"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="327"/>
|
||||||
<source>Select script</source>
|
<source>Select script</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="346"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="348"/>
|
||||||
<source>Clipboard contains no text.</source>
|
<source>Clipboard contains no text.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="359"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="361"/>
|
||||||
<source>Expand all</source>
|
<source>Expand all</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="360"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="362"/>
|
||||||
<source>Collapse all</source>
|
<source>Collapse all</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -2672,17 +2672,17 @@ Error in line %1: %3</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/settingsdialog.cpp" line="598"/>
|
<location filename="../gui/settingsdialog.cpp" line="616"/>
|
||||||
<source>Tag processing</source>
|
<source>Tag processing</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/settingsdialog.cpp" line="606"/>
|
<location filename="../gui/settingsdialog.cpp" line="624"/>
|
||||||
<source>Editor</source>
|
<source>Editor</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/settingsdialog.cpp" line="614"/>
|
<location filename="../gui/settingsdialog.cpp" line="632"/>
|
||||||
<source>File browser</source>
|
<source>File browser</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -2774,7 +2774,7 @@ the file reverting all unsaved changings.</source>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.ui" line="226"/>
|
<location filename="../gui/tageditorwidget.ui" line="226"/>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1193"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1195"/>
|
||||||
<source>Abort</source>
|
<source>Abort</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -2926,22 +2926,22 @@ the file reverting all unsaved changings.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="880"/>
|
<location filename="../gui/tageditorwidget.cpp" line="881"/>
|
||||||
<source>File could be parsed correctly.</source>
|
<source>File could be parsed correctly.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="884"/>
|
<location filename="../gui/tageditorwidget.cpp" line="885"/>
|
||||||
<source>File couldn't be parsed correctly.</source>
|
<source>File couldn't be parsed correctly.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="889"/>
|
<location filename="../gui/tageditorwidget.cpp" line="890"/>
|
||||||
<source>There are critical parsing notifications.</source>
|
<source>There are critical parsing notifications.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="893"/>
|
<location filename="../gui/tageditorwidget.cpp" line="894"/>
|
||||||
<source>There are warnings.</source>
|
<source>There are warnings.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -2951,67 +2951,67 @@ the file reverting all unsaved changings.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="900"/>
|
<location filename="../gui/tageditorwidget.cpp" line="901"/>
|
||||||
<source>File format is not supported (an ID3 tag can be added anyways).</source>
|
<source>File format is not supported (an ID3 tag can be added anyways).</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="915"/>
|
<location filename="../gui/tageditorwidget.cpp" line="916"/>
|
||||||
<source>The file %1 has been opened.</source>
|
<source>The file %1 has been opened.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="966"/>
|
<location filename="../gui/tageditorwidget.cpp" line="967"/>
|
||||||
<source>Unable to apply the entered tags to the file because the current process hasn't finished yet.</source>
|
<source>Unable to apply the entered tags to the file because the current process hasn't finished yet.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="954"/>
|
<location filename="../gui/tageditorwidget.cpp" line="955"/>
|
||||||
<source>Saving tags ...</source>
|
<source>Saving tags ...</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="960"/>
|
<location filename="../gui/tageditorwidget.cpp" line="961"/>
|
||||||
<source>No file has been opened.</source>
|
<source>No file has been opened.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1027"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1028"/>
|
||||||
<source>Unable to delete all tags from the file because the current process hasn't been finished yet.</source>
|
<source>Unable to delete all tags from the file because the current process hasn't been finished yet.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="986"/>
|
<location filename="../gui/tageditorwidget.cpp" line="987"/>
|
||||||
<source>Do you really want to delete all tags from the file?</source>
|
<source>Do you really want to delete all tags from the file?</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="992"/>
|
<location filename="../gui/tageditorwidget.cpp" line="993"/>
|
||||||
<source>don't show this message again</source>
|
<source>don't show this message again</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1015"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1016"/>
|
||||||
<source>Deleting all tags ...</source>
|
<source>Deleting all tags ...</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1019"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1020"/>
|
||||||
<source>The selected file stores no tag (at least no supported), so there is nothing to delete.</source>
|
<source>The selected file stores no tag (at least no supported), so there is nothing to delete.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1023"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1024"/>
|
||||||
<source>No file has been opened, so no tags can be deleted.</source>
|
<source>No file has been opened, so no tags can be deleted.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1098"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1100"/>
|
||||||
<source>Unable to start saving process because there an other process hasn't finished yet.</source>
|
<source>Unable to start saving process because there an other process hasn't finished yet.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1071"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1073"/>
|
||||||
<source>Cancelling ...</source>
|
<source>Cancelling ...</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -3036,17 +3036,17 @@ the file reverting all unsaved changings.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="897"/>
|
<location filename="../gui/tageditorwidget.cpp" line="898"/>
|
||||||
<source>No write access; the file has been opened in read-only mode.</source>
|
<source>No write access; the file has been opened in read-only mode.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="903"/>
|
<location filename="../gui/tageditorwidget.cpp" line="904"/>
|
||||||
<source>The file is composed of multiple segments. Dealing with such files has not been tested yet and might be broken.</source>
|
<source>The file is composed of multiple segments. Dealing with such files has not been tested yet and might be broken.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message numerus="yes">
|
<message numerus="yes">
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1139"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1141"/>
|
||||||
<source>The tags have been saved, but there is/are %1 warning(s) </source>
|
<source>The tags have been saved, but there is/are %1 warning(s) </source>
|
||||||
<translation type="unfinished">
|
<translation type="unfinished">
|
||||||
<numerusform></numerusform>
|
<numerusform></numerusform>
|
||||||
|
@ -3054,7 +3054,7 @@ the file reverting all unsaved changings.</source>
|
||||||
</translation>
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message numerus="yes">
|
<message numerus="yes">
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1140"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1142"/>
|
||||||
<source>and %1 error(s).</source>
|
<source>and %1 error(s).</source>
|
||||||
<translation type="unfinished">
|
<translation type="unfinished">
|
||||||
<numerusform></numerusform>
|
<numerusform></numerusform>
|
||||||
|
@ -3062,7 +3062,7 @@ the file reverting all unsaved changings.</source>
|
||||||
</translation>
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message numerus="yes">
|
<message numerus="yes">
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1142"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1144"/>
|
||||||
<source>The tags have been saved, but there is/are %1 warning(s).</source>
|
<source>The tags have been saved, but there is/are %1 warning(s).</source>
|
||||||
<translation type="unfinished">
|
<translation type="unfinished">
|
||||||
<numerusform></numerusform>
|
<numerusform></numerusform>
|
||||||
|
@ -3070,72 +3070,72 @@ the file reverting all unsaved changings.</source>
|
||||||
</translation>
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1147"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1149"/>
|
||||||
<source>The tags have been saved.</source>
|
<source>The tags have been saved.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1167"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1169"/>
|
||||||
<source>The tags couldn't be saved. See the info box for detail.</source>
|
<source>The tags couldn't be saved. See the info box for detail.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1168"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1170"/>
|
||||||
<source>The tags couldn't be saved because an IO error occured.</source>
|
<source>The tags couldn't be saved because an IO error occured.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1189"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1191"/>
|
||||||
<source>Automatic tag management</source>
|
<source>Automatic tag management</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1190"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1192"/>
|
||||||
<source>The container format of the selected file is not supported. The file can be treated as MP3 file (an ID3 tag according to the settings will be created). This might break the file. Do you want to continue?</source>
|
<source>The container format of the selected file is not supported. The file can be treated as MP3 file (an ID3 tag according to the settings will be created). This might break the file. Do you want to continue?</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1192"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1194"/>
|
||||||
<source>Treat file as MP3 file</source>
|
<source>Treat file as MP3 file</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1204"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1206"/>
|
||||||
<source>The currently opened file changed on the disk.</source>
|
<source>The currently opened file changed on the disk.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1298"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1302"/>
|
||||||
<source>A tag (with the selected target) already exists.</source>
|
<source>A tag (with the selected target) already exists.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1301"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1305"/>
|
||||||
<source>The tag can not be created.</source>
|
<source>The tag can not be created.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1361"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1365"/>
|
||||||
<source>Unable to remove the tag because the current process hasn't been finished yet.</source>
|
<source>Unable to remove the tag because the current process hasn't been finished yet.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1319"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1323"/>
|
||||||
<source>Unable to remove the tag because no file is opened.</source>
|
<source>Unable to remove the tag because no file is opened.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1394"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1398"/>
|
||||||
<source>Unable to change the target because the current process hasn't been finished yet.</source>
|
<source>Unable to change the target because the current process hasn't been finished yet.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1377"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1381"/>
|
||||||
<source>Unable to change the target because no file is opened.</source>
|
<source>Unable to change the target because no file is opened.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1390"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1394"/>
|
||||||
<source>Can not change the target of the selected tag because the tag does not support targets.</source>
|
<source>Can not change the target of the selected tag because the tag does not support targets.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -4134,7 +4134,7 @@ the file reverting all unsaved changings.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tagfieldedit.cpp" line="996"/>
|
<location filename="../gui/tagfieldedit.cpp" line="997"/>
|
||||||
<source>restore to value from %1 (%2)</source>
|
<source>restore to value from %1 (%2)</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
|
|
@ -648,52 +648,52 @@
|
||||||
<context>
|
<context>
|
||||||
<name>QtGui::DbQueryWidget</name>
|
<name>QtGui::DbQueryWidget</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.cpp" line="50"/>
|
<location filename="../gui/dbquerywidget.cpp" line="54"/>
|
||||||
<source>Search hasn't been started</source>
|
<source>Search hasn't been started</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.cpp" line="68"/>
|
<location filename="../gui/dbquerywidget.cpp" line="72"/>
|
||||||
<source>Insert present data</source>
|
<source>Insert present data</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.cpp" line="72"/>
|
<location filename="../gui/dbquerywidget.cpp" line="76"/>
|
||||||
<source>Clear search criteria</source>
|
<source>Clear search criteria</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.cpp" line="137"/>
|
<location filename="../gui/dbquerywidget.cpp" line="141"/>
|
||||||
<source>Insufficient search criteria supplied - at least title, album or artist must be specified</source>
|
<source>Insufficient search criteria supplied - at least title, album or artist must be specified</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.cpp" line="147"/>
|
<location filename="../gui/dbquerywidget.cpp" line="151"/>
|
||||||
<source>Retrieving meta data from MusicBrainz ...</source>
|
<source>Retrieving meta data from MusicBrainz ...</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.cpp" line="161"/>
|
<location filename="../gui/dbquerywidget.cpp" line="165"/>
|
||||||
<source>Insufficient search criteria supplied - artist is mandatory</source>
|
<source>Insufficient search criteria supplied - artist is mandatory</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.cpp" line="171"/>
|
<location filename="../gui/dbquerywidget.cpp" line="175"/>
|
||||||
<source>Retrieving meta data from LyricsWikia ...</source>
|
<source>Retrieving meta data from LyricsWikia ...</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.cpp" line="194"/>
|
<location filename="../gui/dbquerywidget.cpp" line="198"/>
|
||||||
<source>Aborted</source>
|
<source>Aborted</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.cpp" line="206"/>
|
<location filename="../gui/dbquerywidget.cpp" line="210"/>
|
||||||
<source>No results available</source>
|
<source>No results available</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message numerus="yes">
|
<message numerus="yes">
|
||||||
<location filename="../gui/dbquerywidget.cpp" line="208"/>
|
<location filename="../gui/dbquerywidget.cpp" line="212"/>
|
||||||
<source>%1 result(s) available</source>
|
<source>%1 result(s) available</source>
|
||||||
<translation type="unfinished">
|
<translation type="unfinished">
|
||||||
<numerusform>%1 result available</numerusform>
|
<numerusform>%1 result available</numerusform>
|
||||||
|
@ -701,117 +701,117 @@
|
||||||
</translation>
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.cpp" line="273"/>
|
<location filename="../gui/dbquerywidget.cpp" line="356"/>
|
||||||
<source>Retrieving cover art to be applied ...</source>
|
<source>Retrieving cover art to be applied ...</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.cpp" line="294"/>
|
<location filename="../gui/dbquerywidget.cpp" line="377"/>
|
||||||
<source>Retrieving lyrics to be applied ...</source>
|
<source>Retrieving lyrics to be applied ...</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.cpp" line="334"/>
|
<location filename="../gui/dbquerywidget.cpp" line="414"/>
|
||||||
<source>Use selected row</source>
|
<source>Use selected row</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.cpp" line="337"/>
|
<location filename="../gui/dbquerywidget.cpp" line="417"/>
|
||||||
<source>Show cover</source>
|
<source>Show cover</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.cpp" line="338"/>
|
<location filename="../gui/dbquerywidget.cpp" line="418"/>
|
||||||
<source>Show lyrics</source>
|
<source>Show lyrics</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.cpp" line="367"/>
|
<location filename="../gui/dbquerywidget.cpp" line="447"/>
|
||||||
<source>Retrieving cover art ...</source>
|
<source>Retrieving cover art ...</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.cpp" line="398"/>
|
<location filename="../gui/dbquerywidget.cpp" line="478"/>
|
||||||
<source>Retrieving lyrics ...</source>
|
<source>Retrieving lyrics ...</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.cpp" line="411"/>
|
<location filename="../gui/dbquerywidget.cpp" line="491"/>
|
||||||
<source>Cover - %1</source>
|
<source>Cover - %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.cpp" line="436"/>
|
<location filename="../gui/dbquerywidget.cpp" line="516"/>
|
||||||
<source>Lyrics - %1</source>
|
<source>Lyrics - %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.ui" line="14"/>
|
<location filename="../gui/dbquerywidget.ui" line="6"/>
|
||||||
<source>MusicBrainz/LyricsWikia search</source>
|
<source>MusicBrainz/LyricsWikia search</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.ui" line="59"/>
|
<location filename="../gui/dbquerywidget.ui" line="51"/>
|
||||||
<source>Search &criteria</source>
|
<source>Search &criteria</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.ui" line="83"/>
|
<location filename="../gui/dbquerywidget.ui" line="75"/>
|
||||||
<source>Song</source>
|
<source>Song</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.ui" line="101"/>
|
<location filename="../gui/dbquerywidget.ui" line="93"/>
|
||||||
<location filename="../gui/dbquerywidget.ui" line="108"/>
|
<location filename="../gui/dbquerywidget.ui" line="100"/>
|
||||||
<location filename="../gui/dbquerywidget.ui" line="124"/>
|
<location filename="../gui/dbquerywidget.ui" line="116"/>
|
||||||
<location filename="../gui/dbquerywidget.ui" line="138"/>
|
<location filename="../gui/dbquerywidget.ui" line="130"/>
|
||||||
<source>?</source>
|
<source>?</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.ui" line="117"/>
|
<location filename="../gui/dbquerywidget.ui" line="109"/>
|
||||||
<source>Album</source>
|
<source>Album</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.ui" line="131"/>
|
<location filename="../gui/dbquerywidget.ui" line="123"/>
|
||||||
<source>Artist</source>
|
<source>Artist</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.ui" line="175"/>
|
<location filename="../gui/dbquerywidget.ui" line="167"/>
|
||||||
<source>Fields to be used</source>
|
<source>Fields to be used</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.ui" line="221"/>
|
<location filename="../gui/dbquerywidget.ui" line="213"/>
|
||||||
<source>override existing values</source>
|
<source>Override existing values</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.ui" line="279"/>
|
<location filename="../gui/dbquerywidget.ui" line="271"/>
|
||||||
<source>Abort</source>
|
<source>Abort</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.ui" line="292"/>
|
<location filename="../gui/dbquerywidget.ui" line="284"/>
|
||||||
<source>Search
|
<source>Search
|
||||||
MusicBrainz</source>
|
MusicBrainz</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.ui" line="310"/>
|
<location filename="../gui/dbquerywidget.ui" line="302"/>
|
||||||
<source>Search
|
<source>Search
|
||||||
LyricWikia</source>
|
LyricWikia</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.ui" line="331"/>
|
<location filename="../gui/dbquerywidget.ui" line="323"/>
|
||||||
<source>Inserts the selected result into the current tag (doesn't save anything)</source>
|
<source>Inserts the selected result into the current tag (doesn't save anything)</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/dbquerywidget.ui" line="334"/>
|
<location filename="../gui/dbquerywidget.ui" line="326"/>
|
||||||
<source>Use selected
|
<source>Use selected
|
||||||
row</source>
|
row</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
|
@ -996,7 +996,7 @@ Remarks
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/settingsdialog.cpp" line="150"/>
|
<location filename="../gui/settingsdialog.cpp" line="154"/>
|
||||||
<source>To avoid unnecessary copying this directory should be on the same partition as the files you want to edit.</source>
|
<source>To avoid unnecessary copying this directory should be on the same partition as the files you want to edit.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -1593,12 +1593,12 @@ another position would prevent rewriting the entire file</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/settingsdialog.cpp" line="512"/>
|
<location filename="../gui/settingsdialog.cpp" line="529"/>
|
||||||
<source>Minimum padding must be less or equal than maximum padding.</source>
|
<source>Minimum padding must be less or equal than maximum padding.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/settingsdialog.cpp" line="577"/>
|
<location filename="../gui/settingsdialog.cpp" line="595"/>
|
||||||
<source>These options might be ignored if not supported by either the format or the implementation.</source>
|
<source>These options might be ignored if not supported by either the format or the implementation.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -1759,32 +1759,32 @@ another position would prevent rewriting the entire file</source>
|
||||||
<context>
|
<context>
|
||||||
<name>QtGui::LyricsWikiaResultsModel</name>
|
<name>QtGui::LyricsWikiaResultsModel</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dbquery/lyricswikia.cpp" line="37"/>
|
<location filename="../dbquery/lyricswikia.cpp" line="43"/>
|
||||||
<source>Unable to fetch lyrics: Artist or title is unknown.</source>
|
<source>Unable to fetch lyrics: Artist or title is unknown.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dbquery/lyricswikia.cpp" line="151"/>
|
<location filename="../dbquery/lyricswikia.cpp" line="157"/>
|
||||||
<source>Internal error: context for song details reply invalid</source>
|
<source>Internal error: context for song details reply invalid</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dbquery/lyricswikia.cpp" line="191"/>
|
<location filename="../dbquery/lyricswikia.cpp" line="197"/>
|
||||||
<source>Unable to parse song details: </source>
|
<source>Unable to parse song details: </source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dbquery/lyricswikia.cpp" line="200"/>
|
<location filename="../dbquery/lyricswikia.cpp" line="206"/>
|
||||||
<source>Song details requested for %1/%2 do not contain URL for Wiki page</source>
|
<source>Song details requested for %1/%2 do not contain URL for Wiki page</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dbquery/lyricswikia.cpp" line="228"/>
|
<location filename="../dbquery/lyricswikia.cpp" line="234"/>
|
||||||
<source>Internal error: context for LyricsWikia page reply invalid</source>
|
<source>Internal error: context for LyricsWikia page reply invalid</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../dbquery/lyricswikia.cpp" line="238"/>
|
<location filename="../dbquery/lyricswikia.cpp" line="244"/>
|
||||||
<source>Song details requested for %1/%2 do not contain lyrics</source>
|
<source>Song details requested for %1/%2 do not contain lyrics</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -1978,7 +1978,7 @@ another position would prevent rewriting the entire file</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/mainwindow.cpp" line="199"/>
|
<location filename="../gui/mainwindow.cpp" line="200"/>
|
||||||
<source>Lock layout</source>
|
<source>Lock layout</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -1988,63 +1988,63 @@ another position would prevent rewriting the entire file</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/mainwindow.cpp" line="194"/>
|
<location filename="../gui/mainwindow.cpp" line="195"/>
|
||||||
<source>Unlock layout</source>
|
<source>Unlock layout</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/mainwindow.cpp" line="332"/>
|
<location filename="../gui/mainwindow.cpp" line="334"/>
|
||||||
<source>No file opened.</source>
|
<source>No file opened.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/mainwindow.cpp" line="353"/>
|
<location filename="../gui/mainwindow.cpp" line="355"/>
|
||||||
<source>A tag editing utility supporting ID3, MP4 (iTunes style), Vorbis and Matroska tags.</source>
|
<source>A tag editing utility supporting ID3, MP4 (iTunes style), Vorbis and Matroska tags.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/mainwindow.cpp" line="470"/>
|
<location filename="../gui/mainwindow.cpp" line="472"/>
|
||||||
<source>Unable to show the next file because it can't be found anymore.</source>
|
<source>Unable to show the next file because it can't be found anymore.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/mainwindow.cpp" line="480"/>
|
<location filename="../gui/mainwindow.cpp" line="482"/>
|
||||||
<source>Open file - </source>
|
<source>Open file - </source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/mainwindow.cpp" line="491"/>
|
<location filename="../gui/mainwindow.cpp" line="493"/>
|
||||||
<source>Save changes as - </source>
|
<source>Save changes as - </source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/mainwindow.cpp" line="513"/>
|
<location filename="../gui/mainwindow.cpp" line="515"/>
|
||||||
<source>Save file information - </source>
|
<source>Save file information - </source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/mainwindow.cpp" line="522"/>
|
<location filename="../gui/mainwindow.cpp" line="524"/>
|
||||||
<source>Unable to write to file.
|
<source>Unable to write to file.
|
||||||
%1</source>
|
%1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/mainwindow.cpp" line="525"/>
|
<location filename="../gui/mainwindow.cpp" line="527"/>
|
||||||
<source>Unable to open file.</source>
|
<source>Unable to open file.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/mainwindow.cpp" line="529"/>
|
<location filename="../gui/mainwindow.cpp" line="531"/>
|
||||||
<source>No file information available.</source>
|
<source>No file information available.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/mainwindow.cpp" line="532"/>
|
<location filename="../gui/mainwindow.cpp" line="534"/>
|
||||||
<source>No file is opened.</source>
|
<source>No file is opened.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/mainwindow.cpp" line="535"/>
|
<location filename="../gui/mainwindow.cpp" line="537"/>
|
||||||
<source>Unable to save file information because the current process hasn't been finished yet.</source>
|
<source>Unable to save file information because the current process hasn't been finished yet.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -2145,7 +2145,7 @@ another position would prevent rewriting the entire file</source>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/picturepreviewselection.ui" line="150"/>
|
<location filename="../gui/picturepreviewselection.ui" line="150"/>
|
||||||
<location filename="../gui/picturepreviewselection.cpp" line="592"/>
|
<location filename="../gui/picturepreviewselection.cpp" line="593"/>
|
||||||
<source>Add</source>
|
<source>Add</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -2338,7 +2338,7 @@ another position would prevent rewriting the entire file</source>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/picturepreviewselection.cpp" line="402"/>
|
<location filename="../gui/picturepreviewselection.cpp" line="402"/>
|
||||||
<location filename="../gui/picturepreviewselection.cpp" line="600"/>
|
<location filename="../gui/picturepreviewselection.cpp" line="601"/>
|
||||||
<source>The attached image can't be found.</source>
|
<source>The attached image can't be found.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -2358,22 +2358,22 @@ another position would prevent rewriting the entire file</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/picturepreviewselection.cpp" line="590"/>
|
<location filename="../gui/picturepreviewselection.cpp" line="591"/>
|
||||||
<source>No image (of the selected type) attached.</source>
|
<source>No image (of the selected type) attached.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/picturepreviewselection.cpp" line="610"/>
|
<location filename="../gui/picturepreviewselection.cpp" line="611"/>
|
||||||
<source>Unable to display attached image.</source>
|
<source>Unable to display attached image.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/picturepreviewselection.cpp" line="619"/>
|
<location filename="../gui/picturepreviewselection.cpp" line="620"/>
|
||||||
<source>Change</source>
|
<source>Change</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/picturepreviewselection.cpp" line="631"/>
|
<location filename="../gui/picturepreviewselection.cpp" line="632"/>
|
||||||
<source>Change MIME-type</source>
|
<source>Change MIME-type</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -2435,7 +2435,7 @@ another position would prevent rewriting the entire file</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message numerus="yes">
|
<message numerus="yes">
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="209"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="211"/>
|
||||||
<source>%1 files/directories processed</source>
|
<source>%1 files/directories processed</source>
|
||||||
<translation>
|
<translation>
|
||||||
<numerusform>%1 file/directory processed</numerusform>
|
<numerusform>%1 file/directory processed</numerusform>
|
||||||
|
@ -2443,23 +2443,23 @@ another position would prevent rewriting the entire file</source>
|
||||||
</translation>
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="223"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="225"/>
|
||||||
<source>Preview has been generated.</source>
|
<source>Preview has been generated.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="228"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="230"/>
|
||||||
<source>No files and directories have been found.</source>
|
<source>No files and directories have been found.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="233"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="235"/>
|
||||||
<source>Generation of preview has been aborted prematurely.</source>
|
<source>Generation of preview has been aborted prematurely.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message numerus="yes">
|
<message numerus="yes">
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="237"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="239"/>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="255"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="257"/>
|
||||||
<source>%1 error(s) occured.</source>
|
<source>%1 error(s) occured.</source>
|
||||||
<translation>
|
<translation>
|
||||||
<numerusform>%1 error occured.</numerusform>
|
<numerusform>%1 error occured.</numerusform>
|
||||||
|
@ -2467,8 +2467,8 @@ another position would prevent rewriting the entire file</source>
|
||||||
</translation>
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message numerus="yes">
|
<message numerus="yes">
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="224"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="226"/>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="248"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="250"/>
|
||||||
<source>%1 files/directories have been processed.</source>
|
<source>%1 files/directories have been processed.</source>
|
||||||
<translation>
|
<translation>
|
||||||
<numerusform>%1 file/directory has been processed.</numerusform>
|
<numerusform>%1 file/directory has been processed.</numerusform>
|
||||||
|
@ -2491,54 +2491,54 @@ another position would prevent rewriting the entire file</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="148"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="150"/>
|
||||||
<source>There is no external script file is selected.</source>
|
<source>There is no external script file is selected.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="155"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="157"/>
|
||||||
<source>Unable to open external script file.</source>
|
<source>Unable to open external script file.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="161"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="163"/>
|
||||||
<source>Generating preview ...</source>
|
<source>Generating preview ...</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="163"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="165"/>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="198"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="200"/>
|
||||||
<source>Abort</source>
|
<source>Abort</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="170"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="172"/>
|
||||||
<source>The script is not valid.
|
<source>The script is not valid.
|
||||||
Error in line %1: %3</source>
|
Error in line %1: %3</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="173"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="175"/>
|
||||||
<source>An error occured when parsing the script: %1</source>
|
<source>An error occured when parsing the script: %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="181"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="183"/>
|
||||||
<source>The script is empty.</source>
|
<source>The script is empty.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="186"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="188"/>
|
||||||
<source>The selected directory doesn't exist.</source>
|
<source>The selected directory doesn't exist.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="196"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="198"/>
|
||||||
<source>Applying changings ...</source>
|
<source>Applying changings ...</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message numerus="yes">
|
<message numerus="yes">
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="212"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="214"/>
|
||||||
<source>%1 error(s) occured</source>
|
<source>%1 error(s) occured</source>
|
||||||
<translation>
|
<translation>
|
||||||
<numerusform>%1 error occured</numerusform>
|
<numerusform>%1 error occured</numerusform>
|
||||||
|
@ -2546,37 +2546,37 @@ Error in line %1: %3</source>
|
||||||
</translation>
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="247"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="249"/>
|
||||||
<source>Changins applied.</source>
|
<source>Changins applied.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="251"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="253"/>
|
||||||
<source>Applying has been aborted prematurely.</source>
|
<source>Applying has been aborted prematurely.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="319"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="321"/>
|
||||||
<source>Unable to open script file.</source>
|
<source>Unable to open script file.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="325"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="327"/>
|
||||||
<source>Select script</source>
|
<source>Select script</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="346"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="348"/>
|
||||||
<source>Clipboard contains no text.</source>
|
<source>Clipboard contains no text.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="359"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="361"/>
|
||||||
<source>Expand all</source>
|
<source>Expand all</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="360"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="362"/>
|
||||||
<source>Collapse all</source>
|
<source>Collapse all</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -2637,8 +2637,8 @@ Error in line %1: %3</source>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/renamefilesdialog.ui" line="697"/>
|
<location filename="../gui/renamefilesdialog.ui" line="697"/>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="219"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="221"/>
|
||||||
<location filename="../gui/renamefilesdialog.cpp" line="244"/>
|
<location filename="../gui/renamefilesdialog.cpp" line="246"/>
|
||||||
<source>Close</source>
|
<source>Close</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -2672,17 +2672,17 @@ Error in line %1: %3</source>
|
||||||
<translation></translation>
|
<translation></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/settingsdialog.cpp" line="598"/>
|
<location filename="../gui/settingsdialog.cpp" line="616"/>
|
||||||
<source>Tag processing</source>
|
<source>Tag processing</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/settingsdialog.cpp" line="606"/>
|
<location filename="../gui/settingsdialog.cpp" line="624"/>
|
||||||
<source>Editor</source>
|
<source>Editor</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/settingsdialog.cpp" line="614"/>
|
<location filename="../gui/settingsdialog.cpp" line="632"/>
|
||||||
<source>File browser</source>
|
<source>File browser</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -2816,37 +2816,37 @@ Error in line %1: %3</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="880"/>
|
<location filename="../gui/tageditorwidget.cpp" line="881"/>
|
||||||
<source>File could be parsed correctly.</source>
|
<source>File could be parsed correctly.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="884"/>
|
<location filename="../gui/tageditorwidget.cpp" line="885"/>
|
||||||
<source>File couldn't be parsed correctly.</source>
|
<source>File couldn't be parsed correctly.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="889"/>
|
<location filename="../gui/tageditorwidget.cpp" line="890"/>
|
||||||
<source>There are critical parsing notifications.</source>
|
<source>There are critical parsing notifications.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="893"/>
|
<location filename="../gui/tageditorwidget.cpp" line="894"/>
|
||||||
<source>There are warnings.</source>
|
<source>There are warnings.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="897"/>
|
<location filename="../gui/tageditorwidget.cpp" line="898"/>
|
||||||
<source>No write access; the file has been opened in read-only mode.</source>
|
<source>No write access; the file has been opened in read-only mode.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="900"/>
|
<location filename="../gui/tageditorwidget.cpp" line="901"/>
|
||||||
<source>File format is not supported (an ID3 tag can be added anyways).</source>
|
<source>File format is not supported (an ID3 tag can be added anyways).</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="903"/>
|
<location filename="../gui/tageditorwidget.cpp" line="904"/>
|
||||||
<source>The file is composed of multiple segments. Dealing with such files has not been tested yet and might be broken.</source>
|
<source>The file is composed of multiple segments. Dealing with such files has not been tested yet and might be broken.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -2856,67 +2856,67 @@ Error in line %1: %3</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="915"/>
|
<location filename="../gui/tageditorwidget.cpp" line="916"/>
|
||||||
<source>The file %1 has been opened.</source>
|
<source>The file %1 has been opened.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="954"/>
|
<location filename="../gui/tageditorwidget.cpp" line="955"/>
|
||||||
<source>Saving tags ...</source>
|
<source>Saving tags ...</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="960"/>
|
<location filename="../gui/tageditorwidget.cpp" line="961"/>
|
||||||
<source>No file has been opened.</source>
|
<source>No file has been opened.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="966"/>
|
<location filename="../gui/tageditorwidget.cpp" line="967"/>
|
||||||
<source>Unable to apply the entered tags to the file because the current process hasn't finished yet.</source>
|
<source>Unable to apply the entered tags to the file because the current process hasn't finished yet.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="986"/>
|
<location filename="../gui/tageditorwidget.cpp" line="987"/>
|
||||||
<source>Do you really want to delete all tags from the file?</source>
|
<source>Do you really want to delete all tags from the file?</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="992"/>
|
<location filename="../gui/tageditorwidget.cpp" line="993"/>
|
||||||
<source>don't show this message again</source>
|
<source>don't show this message again</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1015"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1016"/>
|
||||||
<source>Deleting all tags ...</source>
|
<source>Deleting all tags ...</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1019"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1020"/>
|
||||||
<source>The selected file stores no tag (at least no supported), so there is nothing to delete.</source>
|
<source>The selected file stores no tag (at least no supported), so there is nothing to delete.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1023"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1024"/>
|
||||||
<source>No file has been opened, so no tags can be deleted.</source>
|
<source>No file has been opened, so no tags can be deleted.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1027"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1028"/>
|
||||||
<source>Unable to delete all tags from the file because the current process hasn't been finished yet.</source>
|
<source>Unable to delete all tags from the file because the current process hasn't been finished yet.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1071"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1073"/>
|
||||||
<source>Cancelling ...</source>
|
<source>Cancelling ...</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1098"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1100"/>
|
||||||
<source>Unable to start saving process because there an other process hasn't finished yet.</source>
|
<source>Unable to start saving process because there an other process hasn't finished yet.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message numerus="yes">
|
<message numerus="yes">
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1139"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1141"/>
|
||||||
<source>The tags have been saved, but there is/are %1 warning(s) </source>
|
<source>The tags have been saved, but there is/are %1 warning(s) </source>
|
||||||
<translation>
|
<translation>
|
||||||
<numerusform>The tags have been saved, but there is %1 warning</numerusform>
|
<numerusform>The tags have been saved, but there is %1 warning</numerusform>
|
||||||
|
@ -2924,7 +2924,7 @@ Error in line %1: %3</source>
|
||||||
</translation>
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message numerus="yes">
|
<message numerus="yes">
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1140"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1142"/>
|
||||||
<source>and %1 error(s).</source>
|
<source>and %1 error(s).</source>
|
||||||
<translation>
|
<translation>
|
||||||
<numerusform>and %1 error.</numerusform>
|
<numerusform>and %1 error.</numerusform>
|
||||||
|
@ -2932,7 +2932,7 @@ Error in line %1: %3</source>
|
||||||
</translation>
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message numerus="yes">
|
<message numerus="yes">
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1142"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1144"/>
|
||||||
<source>The tags have been saved, but there is/are %1 warning(s).</source>
|
<source>The tags have been saved, but there is/are %1 warning(s).</source>
|
||||||
<translation>
|
<translation>
|
||||||
<numerusform>The tags have been saved, but there is %1 warning.</numerusform>
|
<numerusform>The tags have been saved, but there is %1 warning.</numerusform>
|
||||||
|
@ -2940,72 +2940,72 @@ Error in line %1: %3</source>
|
||||||
</translation>
|
</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1147"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1149"/>
|
||||||
<source>The tags have been saved.</source>
|
<source>The tags have been saved.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1167"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1169"/>
|
||||||
<source>The tags couldn't be saved. See the info box for detail.</source>
|
<source>The tags couldn't be saved. See the info box for detail.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1168"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1170"/>
|
||||||
<source>The tags couldn't be saved because an IO error occured.</source>
|
<source>The tags couldn't be saved because an IO error occured.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1189"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1191"/>
|
||||||
<source>Automatic tag management</source>
|
<source>Automatic tag management</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1190"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1192"/>
|
||||||
<source>The container format of the selected file is not supported. The file can be treated as MP3 file (an ID3 tag according to the settings will be created). This might break the file. Do you want to continue?</source>
|
<source>The container format of the selected file is not supported. The file can be treated as MP3 file (an ID3 tag according to the settings will be created). This might break the file. Do you want to continue?</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1192"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1194"/>
|
||||||
<source>Treat file as MP3 file</source>
|
<source>Treat file as MP3 file</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1204"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1206"/>
|
||||||
<source>The currently opened file changed on the disk.</source>
|
<source>The currently opened file changed on the disk.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1298"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1302"/>
|
||||||
<source>A tag (with the selected target) already exists.</source>
|
<source>A tag (with the selected target) already exists.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1301"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1305"/>
|
||||||
<source>The tag can not be created.</source>
|
<source>The tag can not be created.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1319"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1323"/>
|
||||||
<source>Unable to remove the tag because no file is opened.</source>
|
<source>Unable to remove the tag because no file is opened.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1361"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1365"/>
|
||||||
<source>Unable to remove the tag because the current process hasn't been finished yet.</source>
|
<source>Unable to remove the tag because the current process hasn't been finished yet.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1377"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1381"/>
|
||||||
<source>Unable to change the target because no file is opened.</source>
|
<source>Unable to change the target because no file is opened.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1390"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1394"/>
|
||||||
<source>Can not change the target of the selected tag because the tag does not support targets.</source>
|
<source>Can not change the target of the selected tag because the tag does not support targets.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1394"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1398"/>
|
||||||
<source>Unable to change the target because the current process hasn't been finished yet.</source>
|
<source>Unable to change the target because the current process hasn't been finished yet.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -3075,7 +3075,7 @@ the file reverting all unsaved changings.</source>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tageditorwidget.ui" line="226"/>
|
<location filename="../gui/tageditorwidget.ui" line="226"/>
|
||||||
<location filename="../gui/tageditorwidget.cpp" line="1193"/>
|
<location filename="../gui/tageditorwidget.cpp" line="1195"/>
|
||||||
<source>Abort</source>
|
<source>Abort</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
@ -4134,7 +4134,7 @@ the file reverting all unsaved changings.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../gui/tagfieldedit.cpp" line="996"/>
|
<location filename="../gui/tagfieldedit.cpp" line="997"/>
|
||||||
<source>restore to value from %1 (%2)</source>
|
<source>restore to value from %1 (%2)</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
|
Loading…
Reference in New Issue