Now each tool can also have a "tag" in addition to the version number.
This commit is contained in:
parent
9ef67882a1
commit
d7cb3001aa
@ -596,14 +596,14 @@ void AboutDialog::initSoftwareTab(void)
|
||||
moreAboutText += makeToolText
|
||||
(
|
||||
tr("LAME - OpenSource mp3 Encoder"),
|
||||
"lame.exe", "v?.??, Final-?",
|
||||
"lame.exe", "v?.??, #-?",
|
||||
tr("Released under the terms of the GNU Lesser General Public License."),
|
||||
"http://lame.sourceforge.net/"
|
||||
);
|
||||
moreAboutText += makeToolText
|
||||
(
|
||||
tr("OggEnc - Ogg Vorbis Encoder"),
|
||||
"oggenc2.exe", "v?.??, aoTuV Beta-?.??",
|
||||
"oggenc2.exe", "v?.??, aoTuV #-?.??",
|
||||
tr("Completely open and patent-free audio encoding technology."),
|
||||
"http://www.vorbis.com/"
|
||||
);
|
||||
@ -632,7 +632,7 @@ void AboutDialog::initSoftwareTab(void)
|
||||
moreAboutText += makeToolText
|
||||
(
|
||||
tr("Opus Audio Codec"),
|
||||
"opusenc_std.exe", "????-??-??",
|
||||
"opusenc.exe", "????-??-??",
|
||||
tr("Totally open, royalty-free, highly versatile audio codec."),
|
||||
"http://www.opus-codec.org/"
|
||||
);
|
||||
@ -652,8 +652,8 @@ void AboutDialog::initSoftwareTab(void)
|
||||
);
|
||||
moreAboutText += makeToolText
|
||||
(
|
||||
tr("AC3Filter Tools - AC3/DTS Decoder"),
|
||||
"valdec.exe", "v?.??",
|
||||
tr("Valdec from AC3Filter Tools - AC3/DTS Decoder"),
|
||||
"valdec.exe", "v?.?.?#",
|
||||
tr("Released under the terms of the GNU Lesser General Public License."),
|
||||
"http://www.ac3filter.net/projects/tools"
|
||||
);
|
||||
@ -837,11 +837,12 @@ void AboutDialog::initLicenseTab(void)
|
||||
|
||||
QString AboutDialog::makeToolText(const QString &toolName, const QString &toolBin, const QString &toolVerFmt, const QString &toolLicense, const QString &toolWebsite, const QString &extraInfo)
|
||||
{
|
||||
QString toolText, verStr(toolVerFmt);
|
||||
QString toolText, toolTag, verStr(toolVerFmt);
|
||||
|
||||
if(!toolBin.isEmpty())
|
||||
{
|
||||
verStr = lamexp_version2string(toolVerFmt, lamexp_tool_version(toolBin), tr("n/a"));
|
||||
const unsigned int version = lamexp_tool_version(toolBin, &toolTag);
|
||||
verStr = lamexp_version2string(toolVerFmt, version, tr("n/a"), &toolTag);
|
||||
}
|
||||
|
||||
toolText += QString("<li>%1<br>").arg(NOBR(QString("<b>%1 (%2)</b>").arg(toolName, verStr)));
|
||||
|
@ -233,6 +233,7 @@ static struct
|
||||
{
|
||||
QMap<QString, LockedFile*> *registry;
|
||||
QMap<QString, unsigned int> *versions;
|
||||
QMap<QString, QString> *tags;
|
||||
QReadWriteLock lock;
|
||||
}
|
||||
g_lamexp_tools;
|
||||
@ -1567,12 +1568,13 @@ bool lamexp_clean_folder(const QString &folderPath)
|
||||
/*
|
||||
* Register tool
|
||||
*/
|
||||
void lamexp_register_tool(const QString &toolName, LockedFile *file, unsigned int version)
|
||||
void lamexp_register_tool(const QString &toolName, LockedFile *file, unsigned int version, const QString *tag)
|
||||
{
|
||||
QWriteLocker writeLock(&g_lamexp_tools.lock);
|
||||
|
||||
if(!g_lamexp_tools.registry) g_lamexp_tools.registry = new QMap<QString, LockedFile*>();
|
||||
if(!g_lamexp_tools.versions) g_lamexp_tools.versions = new QMap<QString, unsigned int>();
|
||||
if(!g_lamexp_tools.tags) g_lamexp_tools.tags = new QMap<QString, QString>();
|
||||
|
||||
if(g_lamexp_tools.registry->contains(toolName.toLower()))
|
||||
{
|
||||
@ -1581,6 +1583,7 @@ void lamexp_register_tool(const QString &toolName, LockedFile *file, unsigned in
|
||||
|
||||
g_lamexp_tools.registry->insert(toolName.toLower(), file);
|
||||
g_lamexp_tools.versions->insert(toolName.toLower(), version);
|
||||
g_lamexp_tools.tags->insert(toolName.toLower(), (tag) ? (*tag) : QString());
|
||||
}
|
||||
|
||||
/*
|
||||
@ -1619,14 +1622,19 @@ const QString lamexp_lookup_tool(const QString &toolName)
|
||||
/*
|
||||
* Lookup tool version
|
||||
*/
|
||||
unsigned int lamexp_tool_version(const QString &toolName)
|
||||
unsigned int lamexp_tool_version(const QString &toolName, QString *tag)
|
||||
{
|
||||
QReadLocker readLock(&g_lamexp_tools.lock);
|
||||
if(tag) tag->clear();
|
||||
|
||||
if(g_lamexp_tools.versions)
|
||||
{
|
||||
if(g_lamexp_tools.versions->contains(toolName.toLower()))
|
||||
{
|
||||
if(tag)
|
||||
{
|
||||
if(g_lamexp_tools.tags->contains(toolName.toLower())) *tag = g_lamexp_tools.tags->value(toolName.toLower());
|
||||
}
|
||||
return g_lamexp_tools.versions->value(toolName.toLower());
|
||||
}
|
||||
else
|
||||
@ -1643,7 +1651,7 @@ unsigned int lamexp_tool_version(const QString &toolName)
|
||||
/*
|
||||
* Version number to human-readable string
|
||||
*/
|
||||
const QString lamexp_version2string(const QString &pattern, unsigned int version, const QString &defaultText)
|
||||
const QString lamexp_version2string(const QString &pattern, unsigned int version, const QString &defaultText, const QString *tag)
|
||||
{
|
||||
if(version == UINT_MAX)
|
||||
{
|
||||
@ -1668,6 +1676,11 @@ const QString lamexp_version2string(const QString &pattern, unsigned int version
|
||||
index = result.indexOf("?", Qt::CaseInsensitive);
|
||||
}
|
||||
|
||||
if(tag)
|
||||
{
|
||||
result.replace(QChar('#'), *tag, Qt::CaseInsensitive);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@ -2417,6 +2430,7 @@ void lamexp_finalization(void)
|
||||
}
|
||||
LAMEXP_DELETE(g_lamexp_tools.registry);
|
||||
LAMEXP_DELETE(g_lamexp_tools.versions);
|
||||
LAMEXP_DELETE(g_lamexp_tools.tags);
|
||||
}
|
||||
|
||||
//Delete temporary files
|
||||
|
@ -119,10 +119,10 @@ int lamexp_init_ipc(void);
|
||||
LONG WINAPI lamexp_exception_handler(__in struct _EXCEPTION_POINTERS *ExceptionInfo);
|
||||
void lamexp_invalid_param_handler(const wchar_t*, const wchar_t*, const wchar_t*, unsigned int, uintptr_t);
|
||||
void lamexp_message_handler(QtMsgType type, const char *msg);
|
||||
void lamexp_register_tool(const QString &toolName, LockedFile *file, unsigned int version = 0);
|
||||
void lamexp_register_tool(const QString &toolName, LockedFile *file, unsigned int version = 0, const QString *tag = NULL);
|
||||
bool lamexp_check_tool(const QString &toolName);
|
||||
const QString lamexp_lookup_tool(const QString &toolName);
|
||||
unsigned int lamexp_tool_version(const QString &toolName);
|
||||
unsigned int lamexp_tool_version(const QString &toolName, QString *tag = NULL);
|
||||
void lamexp_finalization(void);
|
||||
QString lamexp_rand_str(void);
|
||||
const QString &lamexp_temp_folder2(void);
|
||||
@ -149,7 +149,7 @@ extern const char* LAMEXP_DEFAULT_TRANSLATION;
|
||||
|
||||
//Auxiliary functions
|
||||
bool lamexp_clean_folder(const QString &folderPath);
|
||||
const QString lamexp_version2string(const QString &pattern, unsigned int version, const QString &defaultText);
|
||||
const QString lamexp_version2string(const QString &pattern, unsigned int version, const QString &defaultText, const QString *tag = NULL);
|
||||
const QString &lamexp_known_folder(lamexp_known_folder_t folder_id);
|
||||
unsigned __int64 lamexp_free_diskspace(const QString &path, bool *ok = NULL);
|
||||
bool lamexp_remove_file(const QString &filename);
|
||||
|
@ -48,9 +48,9 @@ static const double g_allowedExtractDelay = 12.0;
|
||||
class ExtractorTask : public QRunnable
|
||||
{
|
||||
public:
|
||||
ExtractorTask(const QDir &appDir, const QString &toolName, const QString &toolShortName, const QByteArray &toolHash, const unsigned int toolVersion)
|
||||
ExtractorTask(const QDir &appDir, const QString &toolName, const QString &toolShortName, const QByteArray &toolHash, const unsigned int toolVersion, const QString &toolTag)
|
||||
:
|
||||
QRunnable(), m_appDir(appDir), m_toolName(toolName), m_toolShortName(toolShortName), m_toolHash(toolHash), m_toolVersion(toolVersion)
|
||||
QRunnable(), m_appDir(appDir), m_toolName(toolName), m_toolShortName(toolShortName), m_toolHash(toolHash), m_toolVersion(toolVersion), m_toolTag(toolTag)
|
||||
{
|
||||
/* Nothing to do */
|
||||
}
|
||||
@ -90,7 +90,7 @@ protected:
|
||||
if(lockedFile)
|
||||
{
|
||||
QMutexLocker lock(&s_mutex);
|
||||
lamexp_register_tool(m_toolShortName, lockedFile, version);
|
||||
lamexp_register_tool(m_toolShortName, lockedFile, version, &m_toolTag);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -109,6 +109,7 @@ private:
|
||||
const QDir m_appDir;
|
||||
const QString m_toolName;
|
||||
const QString m_toolShortName;
|
||||
const QString m_toolTag;
|
||||
const QByteArray m_toolHash;
|
||||
const unsigned int m_toolVersion;
|
||||
|
||||
@ -185,6 +186,7 @@ void InitializationThread::run()
|
||||
QMap<QString, QString> mapChecksum;
|
||||
QMap<QString, unsigned int> mapVersion;
|
||||
QMap<QString, unsigned int> mapCpuType;
|
||||
QMap<QString, QString> mapVersTag;
|
||||
|
||||
//Init properties
|
||||
for(int i = 0; i < INT_MAX; i++)
|
||||
@ -199,6 +201,7 @@ void InitializationThread::run()
|
||||
mapChecksum.insert(currentTool, QString::fromLatin1(g_lamexp_tools[i].pcHash));
|
||||
mapCpuType.insert(currentTool, g_lamexp_tools[i].uiCpuType);
|
||||
mapVersion.insert(currentTool, g_lamexp_tools[i].uiVersion);
|
||||
mapVersTag.insert(currentTool, g_lamexp_tools[i].pcVersTag);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -235,6 +238,7 @@ void InitializationThread::run()
|
||||
QByteArray toolHash = mapChecksum.take(toolName).toLatin1();
|
||||
unsigned int toolCpuType = mapCpuType.take(toolName);
|
||||
unsigned int toolVersion = mapVersion.take(toolName);
|
||||
QString toolVersTag = mapVersTag.take(toolName);
|
||||
|
||||
if(toolHash.size() != 96)
|
||||
{
|
||||
@ -243,7 +247,7 @@ void InitializationThread::run()
|
||||
|
||||
if(toolCpuType & cpuSupport)
|
||||
{
|
||||
pool->start(new ExtractorTask(appDir, toolName, toolShortName, toolHash, toolVersion));
|
||||
pool->start(new ExtractorTask(appDir, toolName, toolShortName, toolHash, toolVersion, toolVersTag));
|
||||
QThread::yieldCurrentThread();
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user