From d7cb3001aad251ad0861774ca20a1930513def32 Mon Sep 17 00:00:00 2001 From: LoRd_MuldeR Date: Tue, 12 Feb 2013 00:08:21 +0100 Subject: [PATCH] Now each tool can also have a "tag" in addition to the version number. --- src/Dialog_About.cpp | 15 ++++++++------- src/Global.cpp | 20 +++++++++++++++++--- src/Global.h | 6 +++--- src/Thread_Initialization.cpp | 12 ++++++++---- 4 files changed, 36 insertions(+), 17 deletions(-) diff --git a/src/Dialog_About.cpp b/src/Dialog_About.cpp index 400a1e1f..9cd74747 100644 --- a/src/Dialog_About.cpp +++ b/src/Dialog_About.cpp @@ -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("
  • %1
    ").arg(NOBR(QString("%1 (%2)").arg(toolName, verStr))); diff --git a/src/Global.cpp b/src/Global.cpp index f1f26a4b..5851a1e6 100644 --- a/src/Global.cpp +++ b/src/Global.cpp @@ -233,6 +233,7 @@ static struct { QMap *registry; QMap *versions; + QMap *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(); if(!g_lamexp_tools.versions) g_lamexp_tools.versions = new QMap(); + if(!g_lamexp_tools.tags) g_lamexp_tools.tags = new QMap(); 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 diff --git a/src/Global.h b/src/Global.h index f5b949ca..29e5d3b0 100644 --- a/src/Global.h +++ b/src/Global.h @@ -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); diff --git a/src/Thread_Initialization.cpp b/src/Thread_Initialization.cpp index f301f6d6..0a226c0f 100644 --- a/src/Thread_Initialization.cpp +++ b/src/Thread_Initialization.cpp @@ -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 mapChecksum; QMap mapVersion; QMap mapCpuType; + QMap 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(); } }